]> git.tdb.fi Git - libs/gl.git/blobdiff - source/bufferable.h
Move buffer resizing out of Bufferable
[libs/gl.git] / source / bufferable.h
index 9b2f0bf8bfe2fb58323a3be15f781d8b5aa83091..86c5c77fc4d39226295c3e442903eb476e85de1b 100644 (file)
@@ -20,7 +20,6 @@ public:
        private:
                const Bufferable &bufferable;
                char *mapped_address;
-               bool buffer_resized;
 
        public:
                AsyncUpdater(const Bufferable &);
@@ -46,6 +45,14 @@ public:
        buffer, and this object is inserted after it. */
        void use_buffer(Buffer *buf, Bufferable *prev = 0);
 
+       /** Informs the objects in this chain that the buffer has been resized and
+       data should be reuploaded. */
+       void buffer_resized();
+
+       /** Returns the total amount of storage required by this object and others
+       in the same chain, including any alignment between objects. */
+       unsigned get_required_buffer_size() const;
+
        /** Uploads new data into the buffer if necessary. */
        void refresh() const { if(buffer && dirty) upload_data(0); }
 
@@ -81,10 +88,6 @@ protected:
        virtual void location_changed(Buffer *, unsigned, unsigned) const { }
 
 private:
-       bool resize_buffer() const;
-
-       void update_buffer_size() const;
-
        /** Uploads data to the buffer.  Receives pointer to mapped buffer memory as
        parameter.  If null, buffer interface should be used instead. */
        void upload_data(char *) const;