X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fbufferable.cpp;h=d8f3c9c43f9622602851e03f38dd72221031d0b3;hp=69588dddef301d72f0eda7128209a5fba632cc63;hb=c356a20547afae97b412da36e0b0a7d51e879401;hpb=7d221b1fd6194e59bc0783740a2a17ac71fa4da5 diff --git a/source/core/bufferable.cpp b/source/core/bufferable.cpp index 69588ddd..d8f3c9c4 100644 --- a/source/core/bufferable.cpp +++ b/source/core/bufferable.cpp @@ -1,5 +1,4 @@ #include -#include "buffer.h" #include "bufferable.h" #include "error.h" @@ -170,19 +169,13 @@ Bufferable::AsyncUpdater *Bufferable::create_async_updater() const Bufferable::AsyncUpdater::AsyncUpdater(const Bufferable &b): - bufferable(b) -{ - bufferable.buffer->require_size(bufferable.get_required_buffer_size()); - mapped_address = reinterpret_cast(bufferable.buffer->map()); -} - -Bufferable::AsyncUpdater::~AsyncUpdater() -{ - bufferable.buffer->unmap(); -} + bufferable(b), + transfer(b.buffer->sub_data_async(0, bufferable.get_required_buffer_size())) +{ } void Bufferable::AsyncUpdater::upload_data() { + char *mapped_address = static_cast(transfer.get_address()); bufferable.upload_data(0, mapped_address+bufferable.offset); // Update all bufferables in the same buffer at once for(const Bufferable *b=bufferable.prev_in_buffer; b; b=b->prev_in_buffer)