Index: gpu/command_buffer/client/mapped_memory.cc |
diff --git a/gpu/command_buffer/client/mapped_memory.cc b/gpu/command_buffer/client/mapped_memory.cc |
index 689b576b9d8b49631746817e3e6a180b3ad8c750..461343e25a0f8a012c64be04ea0f4877fbf8feba 100644 |
--- a/gpu/command_buffer/client/mapped_memory.cc |
+++ b/gpu/command_buffer/client/mapped_memory.cc |
@@ -88,6 +88,21 @@ void MappedMemoryManager::FreePendingToken(void* pointer, int32 token) { |
GPU_NOTREACHED(); |
} |
+void MappedMemoryManager::FreeUnused() { |
+ CommandBuffer* cmd_buf = helper_->command_buffer(); |
+ MemoryChunkVector::iterator iter = chunks_.begin(); |
+ while (iter != chunks_.end()) { |
+ MemoryChunk* chunk = *iter; |
+ chunk->FreeUnused(); |
+ if (!chunk->InUse()) { |
+ cmd_buf->DestroyTransferBuffer(chunk->shm_id()); |
+ iter = chunks_.erase(iter); |
+ } else { |
+ ++iter; |
+ } |
+ } |
+} |
+ |
} // namespace gpu |