]> 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.
 
 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
 {
 */
 class Bufferable: public NonCopyable
 {
@@ -43,9 +41,9 @@ private:
        Bufferable *next_in_buffer = 0;
        Bufferable *prev_in_buffer = 0;
        mutable bool location_dirty = false;
        Bufferable *next_in_buffer = 0;
        Bufferable *prev_in_buffer = 0;
        mutable bool location_dirty = false;
-protected:
        mutable bool dirty = false;
 
        mutable bool dirty = false;
 
+protected:
        Bufferable() = default;
        Bufferable(Bufferable &&);
 public:
        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.
 
        /** 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. */
        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();
 
        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; }
 public:
        /** Returns the offset of the data from the beginning of the buffer. */
        std::size_t get_offset() const { return offset; }