Commit 609d7ae8 authored by ccameron@chromium.org's avatar ccameron@chromium.org

Fix transfer buffer accounting

BUG=141550


Review URL: https://chromiumcodereview.appspot.com/10825288

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150987 0039d316-1c4b-4281-b951-d872f2087c98
parent 1332623f
......@@ -25,11 +25,12 @@ TransferBufferManager::TransferBufferManager()
TransferBufferManager::~TransferBufferManager() {
for (size_t i = 0; i < registered_objects_.size(); ++i) {
if (registered_objects_[i].shared_memory) {
DCHECK(shared_memory_bytes_allocated_ >= registered_objects_[i].size);
shared_memory_bytes_allocated_ -= registered_objects_[i].size;
delete registered_objects_[i].shared_memory;
}
}
// TODO(gman): Should we report 0 bytes to TRACE here?
DCHECK(!shared_memory_bytes_allocated_);
}
bool TransferBufferManager::Initialize() {
......@@ -42,10 +43,6 @@ int32 TransferBufferManager::CreateTransferBuffer(
if (!buffer.CreateAnonymous(size))
return -1;
shared_memory_bytes_allocated_ += size;
TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
return RegisterTransferBuffer(&buffer, size, id_request);
}
......@@ -81,6 +78,10 @@ int32 TransferBufferManager::RegisterTransferBuffer(
buffer.size = size;
buffer.shared_memory = duped_shared_memory.release();
shared_memory_bytes_allocated_ += size;
TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
// If caller requested specific id, first try to use id_request.
if (id_request != -1) {
int32 cur_size = static_cast<int32>(registered_objects_.size());
......@@ -120,6 +121,7 @@ void TransferBufferManager::DestroyTransferBuffer(int32 handle) {
if (static_cast<size_t>(handle) >= registered_objects_.size())
return;
DCHECK(shared_memory_bytes_allocated_ >= registered_objects_[handle].size);
shared_memory_bytes_allocated_ -= registered_objects_[handle].size;
TRACE_COUNTER_ID1(
"CommandBuffer", "SharedMemory", this, shared_memory_bytes_allocated_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment