| 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 4713e8be9a0cad47224402d2eb1689bf121a20ed..a6b9228a94a4ae71bc6d9d5cd4c930862fa78a7c 100644
|
| --- a/cc/tiles/gpu_image_decode_cache.cc
|
| +++ b/cc/tiles/gpu_image_decode_cache.cc
|
| @@ -659,6 +659,23 @@ size_t GpuImageDecodeCache::GetMaximumMemoryLimitBytes() const {
|
| return normal_max_cache_bytes_;
|
| }
|
|
|
| +void GpuImageDecodeCache::NotifyImageUnused(uint32_t skimage_id) {
|
| + auto it = persistent_cache_.Peek(skimage_id);
|
| + if (it != persistent_cache_.end()) {
|
| + if (it->second->decode.ref_count != 0 ||
|
| + it->second->upload.ref_count != 0) {
|
| + it->second->is_orphaned = true;
|
| + } else if (it->second->upload.image()) {
|
| + DCHECK(!it->second->decode.is_locked());
|
| + bytes_used_ -= it->second->size;
|
| + images_pending_deletion_.push_back(it->second->upload.image());
|
| + it->second->upload.SetImage(nullptr);
|
| + it->second->upload.budgeted = false;
|
| + }
|
| + persistent_cache_.Erase(it);
|
| + }
|
| +}
|
| +
|
| bool GpuImageDecodeCache::OnMemoryDump(
|
| const base::trace_event::MemoryDumpArgs& args,
|
| base::trace_event::ProcessMemoryDump* pmd) {
|
|
|