X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fbufferable.h;h=b430b726277c657fac569fb334bf5c69f624409e;hb=97818e67b2543a6075c13e6bf22c296757b975e5;hp=8bd3f77f021d39e2722f0b8d7e13e5f60ae2a353;hpb=e70662d7812464159f2e47f4bebb69d88f89ae93;p=libs%2Fgl.git diff --git a/source/core/bufferable.h b/source/core/bufferable.h index 8bd3f77f..b430b726 100644 --- a/source/core/bufferable.h +++ b/source/core/bufferable.h @@ -12,9 +12,7 @@ class Buffer; Base class for things that can store data in buffers. Multiple Bufferables may be put in the same buffer. -A dirty flag is provided for derived classes. It should be set when the data -in the buffer is considered out of date, and is cleared by Bufferable after -uploading fresh data to the buffer. +Derived classes should call mark_dirty() when the stored data has changed. */ class Bufferable: public NonCopyable { @@ -43,9 +41,9 @@ private: Bufferable *next_in_buffer = 0; Bufferable *prev_in_buffer = 0; mutable bool location_dirty = false; -protected: mutable bool dirty = false; +protected: Bufferable() = default; Bufferable(Bufferable &&); public: @@ -54,7 +52,7 @@ public: /** Sets the buffer to use. If prev is not null, it must use the same buffer, and this object is inserted after it. - Date is not uploaded immediately, but only when refresh() is called. */ + Data is not uploaded immediately, but only when refresh() is called. */ void use_buffer(Buffer *, Bufferable *prev = 0); /** Sets the buffer for the entire chain of objects. */ @@ -94,6 +92,10 @@ protected: changes. */ void update_offset(); + /* Indicates that the data of the bufferable has changed and should be + uploaded to the buffer again. */ + void mark_dirty(); + public: /** Returns the offset of the data from the beginning of the buffer. */ std::size_t get_offset() const { return offset; }