X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbufferable.h;h=9b2f0bf8bfe2fb58323a3be15f781d8b5aa83091;hp=f47ef4cabf17c1664838195778910886fcda778b;hb=9be04243c92f024327e74ad8d48861581d83b7ed;hpb=bb8b03770053cbddda88577e261ec4ee482e6c5c diff --git a/source/bufferable.h b/source/bufferable.h index f47ef4ca..9b2f0bf8 100644 --- a/source/bufferable.h +++ b/source/bufferable.h @@ -34,6 +34,7 @@ private: unsigned offset; Bufferable *next_in_buffer; Bufferable *prev_in_buffer; + mutable bool location_dirty; protected: mutable bool dirty; @@ -46,7 +47,7 @@ public: void use_buffer(Buffer *buf, Bufferable *prev = 0); /** Uploads new data into the buffer if necessary. */ - void refresh() const { if(buffer && dirty) update_buffer(); } + void refresh() const { if(buffer && dirty) upload_data(0); } AsyncUpdater *refresh_async() const; @@ -58,9 +59,6 @@ public: const Buffer *get_buffer() const { return buffer; } protected: - /** Returns the buffer in which the data is stored. */ - Buffer *get_mutable_buffer() const { return buffer; } - /** Returns the amount of data to be stored in the buffer, in bytes. */ virtual unsigned get_data_size() const = 0; @@ -79,19 +77,17 @@ protected: /** Returns the offset where the data should be uploaded. */ unsigned get_offset() const { return offset; } - /** Called when the offset for the data has changed. */ - virtual void offset_changed() { } + /** Called when the target buffer or offset within it has changed. */ + virtual void location_changed(Buffer *, unsigned, unsigned) const { } private: bool resize_buffer() const; -protected: - /** Resizes the buffer if necessary and calls upload_data(). */ - void update_buffer() const; + void update_buffer_size() const; /** Uploads data to the buffer. Receives pointer to mapped buffer memory as parameter. If null, buffer interface should be used instead. */ - virtual void upload_data(char *) const; + void upload_data(char *) const; }; } // namespace GL