]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/bufferable.h
Use size_t to store sizes of buffers and such
[libs/gl.git] / source / core / bufferable.h
index c7e26aefc0b8526b1a1ee330b3f38b15875fdb44..60ce307292d900f3d5df4e01b6df412f80e778e5 100644 (file)
@@ -30,7 +30,7 @@ public:
 
 private:
        Buffer *buffer = 0;
-       unsigned offset = 0;
+       std::size_t offset = 0;
        Bufferable *next_in_buffer = 0;
        Bufferable *prev_in_buffer = 0;
        mutable bool location_dirty = false;
@@ -50,14 +50,14 @@ public:
 
        /** 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;
+       std::size_t 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();
@@ -67,7 +67,7 @@ public:
        const Buffer *get_buffer() const { return buffer; }
 
        /** Returns the size of the data, in bytes. */
-       virtual unsigned get_data_size() const = 0;
+       virtual std::size_t get_data_size() const = 0;
 
 protected:
        /** Returns a pointer to the start of data in client memory. */
@@ -75,7 +75,7 @@ protected:
 
        /** Returns the alignment required for the data, in bytes.  The offset is
        guaranteed to be a multiple of this. */
-       virtual unsigned get_alignment() const { return 1; }
+       virtual std::size_t get_alignment() const { return 1; }
 
        /** Updates the offsets for the chain so that data from different objects
        does not overlap.  Should be called if either data size or alignment
@@ -84,12 +84,9 @@ protected:
 
 public:
        /** Returns the offset of the data from the beginning of the buffer. */
-       unsigned get_offset() const { return offset; }
+       std::size_t 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;