]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/bufferable.h
Move Bufferable::refresh_async's definition to the header
[libs/gl.git] / source / core / bufferable.h
index 47e2770c58675fd128d16afa6b50446e7f53a62f..f1d52fb3ee514602d9452882518cc23fc5bc6c16 100644 (file)
@@ -29,15 +29,15 @@ public:
        };
 
 private:
-       Buffer *buffer;
-       unsigned offset;
-       Bufferable *next_in_buffer;
-       Bufferable *prev_in_buffer;
-       mutable bool location_dirty;
+       Buffer *buffer = 0;
+       unsigned offset = 0;
+       Bufferable *next_in_buffer = 0;
+       Bufferable *prev_in_buffer = 0;
+       mutable bool location_dirty = false;
 protected:
-       mutable bool dirty;
+       mutable bool dirty = false;
 
-       Bufferable();
+       Bufferable() = default;
 public:
        virtual ~Bufferable();
 
@@ -53,11 +53,11 @@ public:
        unsigned get_required_buffer_size() const;
 
        /** Uploads new data into the buffer if necessary. */
-       void refresh() const { if(buffer && dirty) upload_data(0); }
+       void refresh() const { if(dirty) upload_data(0); }
 
        /** Returns an object which can be used to upload data to the buffer using
        mapped memory. */
-       AsyncUpdater *refresh_async() const;
+       AsyncUpdater *refresh_async() const { return dirty ? new AsyncUpdater(*this) : 0; }
 
 private:
        void unlink_from_buffer();
@@ -87,9 +87,6 @@ public:
        unsigned get_offset() const { return offset; }
 
 private:
-       /** Called when the target buffer or offset within it has changed. */
-       virtual void location_changed(Buffer *, unsigned, unsigned) const { }
-
        /** Uploads data to the buffer.  Receives pointer to mapped buffer memory as
        parameter, or null to use the buffer upload interface. */
        void upload_data(char *) const;