From 3e2fa0b27f3e02a65adfc575b968b77829940ed5 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Tue, 10 Dec 2024 21:05:16 +0800 Subject: [PATCH] bug fix Signed-off-by: pxd2022 --- display/composer/cache_manager/device_cache_manager.cpp | 6 ++++++ .../composer/common/include/display_vdi_adapter_interface.h | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/display/composer/cache_manager/device_cache_manager.cpp b/display/composer/cache_manager/device_cache_manager.cpp index 28d94f4b..c696d539 100644 --- a/display/composer/cache_manager/device_cache_manager.cpp +++ b/display/composer/cache_manager/device_cache_manager.cpp @@ -135,12 +135,18 @@ void DeviceCacheManager::Dump() const int32_t DeviceCacheManager::AddCacheInternal(uint32_t deviceId, DeviceCache::DeviceType type) { + auto devCache = deviceCaches_->SearchCache(deviceId); + if (devCache != nullptr && devCache->CacheType() == type) { + HDF_LOGI("AddCacheInternal deviceId:%{public}u, type:%{public}u already exist", deviceId, type); + return HDF_SUCCESS; + } DeviceCache* device = DeviceCache::Create(deviceId, type); DISPLAY_CHK_RETURN(device == nullptr, HDF_FAILURE, HDF_LOGE("%{public}s: Create cache failed", __func__)); bool ret = deviceCaches_->InsertCache(deviceId, device); DISPLAY_CHK_RETURN(ret == false, HDF_FAILURE, HDF_LOGE("%{public}s: insert device cache failed", __func__)); + HDF_LOGI("AddCacheInternal deviceId:%{public}u, type:%{public}u success", deviceId, type); return HDF_SUCCESS; } diff --git a/display/composer/common/include/display_vdi_adapter_interface.h b/display/composer/common/include/display_vdi_adapter_interface.h index fddea665..2665da49 100644 --- a/display/composer/common/include/display_vdi_adapter_interface.h +++ b/display/composer/common/include/display_vdi_adapter_interface.h @@ -92,6 +92,8 @@ struct DisplayComposerVdiAdapter { int32_t (*SetDisplayActiveRegion)(uint32_t devId, const IRect& rect); int32_t (*FastPresent)(uint32_t devId, const PresentParam& param, const std::vector& inHandles); + int32_t (*ClearDisplayClientBuffer)(uint32_t devId); + int32_t (*ClearLayerBuffer)(uint32_t devId, uint32_t layerId); }; using LoadVdiImplFunc = int32_t (*)(); @@ -155,6 +157,8 @@ using GetHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, uint32_t& frameCo using SetDisplayActiveRegionFunc = int32_t (*)(uint32_t devId, const IRect& rect); using FastPresentFunc = int32_t (*)(uint32_t devId, const PresentParam& param, const std::vector& inHandles); +using ClearDisplayClientBufferFunc = int32_t (*)(uint32_t devId); +using ClearLayerBufferFunc = int32_t (*)(uint32_t devId, uint32_t layerId); } // namespace Composer } // namespace Display -- Gitee