X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fbufferable.h;h=f1d52fb3ee514602d9452882518cc23fc5bc6c16;hb=0fa506250545acb83bc86f1734826544d6f1eda6;hp=cbbde4e1b93f1e07266c097c150774f2b5621d3c;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/core/bufferable.h b/source/core/bufferable.h index cbbde4e1..f1d52fb3 100644 --- a/source/core/bufferable.h +++ b/source/core/bufferable.h @@ -29,15 +29,15 @@ public: }; private: - Buffer *buffer; - unsigned offset; - Bufferable *next_in_buffer; - Bufferable *prev_in_buffer; - mutable bool location_dirty; + Buffer *buffer = 0; + unsigned offset = 0; + Bufferable *next_in_buffer = 0; + Bufferable *prev_in_buffer = 0; + mutable bool location_dirty = false; protected: - mutable bool dirty; + mutable bool dirty = false; - Bufferable(); + Bufferable() = default; public: virtual ~Bufferable(); @@ -53,11 +53,11 @@ public: unsigned get_required_buffer_size() const; /** Uploads new data into the buffer if necessary. */ - void refresh() const { if(buffer && dirty) upload_data(0); } + void refresh() const { if(dirty) upload_data(0); } /** Returns an object which can be used to upload data to the buffer using mapped memory. */ - AsyncUpdater *refresh_async() const; + AsyncUpdater *refresh_async() const { return dirty ? new AsyncUpdater(*this) : 0; } private: void unlink_from_buffer(); @@ -66,10 +66,10 @@ public: /** Returns the buffer in which the data is stored. */ const Buffer *get_buffer() const { return buffer; } -protected: - /** Returns the amount of data to be stored in the buffer, in bytes. */ + /** Returns the size of the data, in bytes. */ virtual unsigned get_data_size() const = 0; +protected: /** Returns a pointer to the start of data in client memory. */ virtual const void *get_data_pointer() const = 0; @@ -82,12 +82,10 @@ protected: changes. */ void update_offset(); - /** Returns the offset where the data should be uploaded. */ +public: + /** Returns the offset of the data from the beginning of the buffer. */ unsigned get_offset() const { return offset; } - /** Called when the target buffer or offset within it has changed. */ - virtual void location_changed(Buffer *, unsigned, unsigned) const { } - private: /** Uploads data to the buffer. Receives pointer to mapped buffer memory as parameter, or null to use the buffer upload interface. */