Index: gpu/command_buffer/client/buffer_tracker.cc |
diff --git a/gpu/command_buffer/client/buffer_tracker.cc b/gpu/command_buffer/client/buffer_tracker.cc |
index 18cedb975d059664d421d5e65f11a982a39a474b..0d6a1372a2a23ba77daf13890a3405db1be7522f 100644 |
--- a/gpu/command_buffer/client/buffer_tracker.cc |
+++ b/gpu/command_buffer/client/buffer_tracker.cc |
@@ -42,6 +42,13 @@ BufferTracker::Buffer* BufferTracker::GetBuffer(GLuint client_id) { |
return it != buffers_.end() ? it->second : NULL; |
} |
+void BufferTracker::UnmanageBuffer(GLuint client_id) { |
+ BufferMap::iterator it = buffers_.find(client_id); |
+ if (it == buffers_.end()) |
+ return; |
+ buffers_.erase(it); |
+} |
+ |
void BufferTracker::RemoveBuffer(GLuint client_id) { |
BufferMap::iterator it = buffers_.find(client_id); |
if (it != buffers_.end()) { |
@@ -60,8 +67,19 @@ void BufferTracker::FreePendingToken(Buffer* buffer, int32 token) { |
buffer->shm_id_ = 0; |
buffer->shm_offset_ = 0; |
buffer->address_ = NULL; |
+ buffer->unused_token_ = 0; |
} |
+void BufferTracker::Free(Buffer* buffer) { |
+ if (buffer->address_) |
+ mapped_memory_->Free(buffer->address_); |
+ |
+ buffer->size_ = 0; |
+ buffer->shm_id_ = 0; |
+ buffer->shm_offset_ = 0; |
+ buffer->address_ = NULL; |
+ buffer->unused_token_ = 0; |
+} |
} // namespace gles2 |
} // namespace gpu |