]> 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 53d493a0713d75a7205ede2ecfd04135902c7e15..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:
@@ -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; }