]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/bufferable.h
Use a member function to set the dirty flag in Bufferable
[libs/gl.git] / source / core / bufferable.h
index 8bd3f77f021d39e2722f0b8d7e13e5f60ae2a353..b430b726277c657fac569fb334bf5c69f624409e 100644 (file)
@@ -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; }