X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fbufferable.cpp;fp=source%2Fcore%2Fbufferable.cpp;h=502c270c8f6bad09861841847e1dc71d70d006c7;hb=5fa0901a84cdba32f491a4e3997916f2fbb30863;hp=fcedc5becd666efb16ef780a73c4bc8fa24fe5c5;hpb=97818e67b2543a6075c13e6bf22c296757b975e5;p=libs%2Fgl.git diff --git a/source/core/bufferable.cpp b/source/core/bufferable.cpp index fcedc5be..502c270c 100644 --- a/source/core/bufferable.cpp +++ b/source/core/bufferable.cpp @@ -70,11 +70,20 @@ void Bufferable::change_buffer(Buffer *buf) } } -size_t Bufferable::get_required_buffer_size() const +size_t Bufferable::get_required_buffer_size(bool align) const { const Bufferable *last = this; for(; last->next_in_buffer; last=last->next_in_buffer) ; - return last->offset+last->get_data_size(); + size_t size = last->offset+last->get_data_size(); + if(align) + { + const Bufferable *first = this; + for(; first->prev_in_buffer; first=first->prev_in_buffer) ; + size_t alignment = first->get_alignment(); + size += alignment-1; + size -= size%alignment; + } + return size; } void Bufferable::unlink_from_buffer()