diff --git a/display/composer/cache_manager/cache_manager.h b/display/composer/cache_manager/cache_manager.h index 239b144d2d25b0be5ad81acc62b5c582f5e2629d..51f95f58e594a61d27984dd5e0d4847633797272 100644 --- a/display/composer/cache_manager/cache_manager.h +++ b/display/composer/cache_manager/cache_manager.h @@ -85,6 +85,9 @@ public: auto cacheItem = caches_.find(id); if (cacheItem != caches_.end()) { HDF_LOGI("%{public}s: intend to insert a existing cache, SeqNo=%{public}d", __func__, id); + if (cleanUpFunc_ && cacheItem->second != nullptr) { + cleanUpFunc_(cacheItem->second); + } cacheItem->second.reset(cache); } else { if (cacheCountMax_ != 0 && caches_.size() >= cacheCountMax_) { @@ -201,6 +204,9 @@ public: auto cacheItem = caches_.find(id); if (cacheItem != caches_.end()) { HDF_LOGI("%{public}s: intend to insert a existing cache, SeqNo=%{public}d", __func__, id); + if (cleanUpFunc_ && cacheItem->second != nullptr) { + cleanUpFunc_(cacheItem->second); + } cacheItem->second = OHOS::sptr(cache); } else { if (cacheCountMax_ != 0 && caches_.size() >= cacheCountMax_) {