Index: cc/tiles/gpu_image_decode_cache.cc |
diff --git a/cc/tiles/gpu_image_decode_cache.cc b/cc/tiles/gpu_image_decode_cache.cc |
index 70216a376f1a91890b4520d57f45c9cc1697d844..fcb06057be5484052e6ad68ae5408bc6d8409896 100644 |
--- a/cc/tiles/gpu_image_decode_cache.cc |
+++ b/cc/tiles/gpu_image_decode_cache.cc |
@@ -584,6 +584,26 @@ void GpuImageDecodeCache::SetShouldAggressivelyFreeResources( |
} |
} |
+void GpuImageDecodeCache::ClearCache() { |
+ base::AutoLock lock(lock_); |
+ for (auto it = persistent_cache_.begin(); it != persistent_cache_.end();) { |
+ if (it->second->decode.ref_count != 0 || |
+ it->second->upload.ref_count != 0) { |
+ ++it; |
+ continue; |
+ } |
+ |
+ if (it->second->upload.image()) { |
+ bytes_used_ -= it->second->size; |
+ images_pending_deletion_.push_back(it->second->upload.image()); |
+ it->second->upload.SetImage(nullptr); |
+ it->second->upload.budgeted = false; |
+ } |
+ |
+ it = persistent_cache_.Erase(it); |
+ } |
+} |
+ |
bool GpuImageDecodeCache::OnMemoryDump( |
const base::trace_event::MemoryDumpArgs& args, |
base::trace_event::ProcessMemoryDump* pmd) { |