From 37f09e918de42dfd89074e56c7408cb8f8a48139 Mon Sep 17 00:00:00 2001 From: wanghongenaf Date: Fri, 30 May 2025 16:29:46 +0800 Subject: [PATCH 1/4] hdi remove the manager of the vsync status Signed-off-by: wanghongenaf --- .../v1_0/hdi_impl/display_composer_hdi_impl.h | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h index 8c5e9c17..885fe9c4 100644 --- a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h @@ -77,7 +77,9 @@ public: vBlankCb_(nullptr), hotPlugCbData_(nullptr), vBlankCbData_(nullptr), - recipient_(nullptr) {} + recipient_(nullptr) { + vsyncEnableStatus_.clear(); + } virtual ~DisplayComposerHdiImpl() { @@ -216,7 +218,20 @@ public: virtual int32_t SetDisplayVsyncEnabled(uint32_t devId, bool enabled) override { COMPOSER_CHECK_NULLPTR_RETURN(hdi_); - return ToDispErrCode(hdi_->SetDisplayVsyncEnabled(devId, enabled)); + /*Already enable,return success*/ + if(enable && vsynEnableStatus_[devId]){ + HDF_LOGD("%{public}s:vsynStatus[%{public}u] = %{public}d, skip", __func__,devId, vsyncEnableStatus_[devId]); + return DISPLAY_SUCCESS; + } + + int32_t ret = ToDispErrCode(hdi_->SetDisplayVsyncEnabled(devId ,enabled)); + if(ret != DISPLAY_SUCCESS){ + HDF_LOGD("%{public}s:vsyncStatus[%{public}u] = %{public}d, fail", __func__,devId, enabled); + return ret; + } + + vsyncEnableStatus_[devId] = enabled; + return ret; } virtual int32_t RegDisplayVBlankCallback(uint32_t devId, VBlankCallback cb, void *data) override @@ -479,7 +494,7 @@ public: HDF_LOGE("error: hot plug callback fn is nullptr"); ret = HDF_FAILURE; } - + vsyncEnableStatus_[outputId] = false; return ret; } @@ -560,6 +575,7 @@ protected: void *hotPlugCbData_; void *vBlankCbData_; sptr recipient_; + std::unordered_mapvsyncEnableStatus_; }; using HdiDisplayComposer = DisplayComposerHdiImpl; } // namespace V1_0 -- Gitee From ce343d215ead8936ce42084b7269fe90ef1833f0 Mon Sep 17 00:00:00 2001 From: wanghongenaf Date: Fri, 30 May 2025 10:04:47 +0000 Subject: [PATCH 2/4] update display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h. Signed-off-by: wanghongenaf --- display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h index 885fe9c4..08931f60 100644 --- a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h @@ -219,7 +219,7 @@ public: { COMPOSER_CHECK_NULLPTR_RETURN(hdi_); /*Already enable,return success*/ - if(enable && vsynEnableStatus_[devId]){ + if(enable && (vsynEnableStatus_.find(devId) != vsyncEnableStatus_.end()) && vsyncEnableStatus_[devId]){ HDF_LOGD("%{public}s:vsynStatus[%{public}u] = %{public}d, skip", __func__,devId, vsyncEnableStatus_[devId]); return DISPLAY_SUCCESS; } -- Gitee From 79b13090c25b24de18c7984433c6010a4239b9be Mon Sep 17 00:00:00 2001 From: wanghongenaf Date: Fri, 30 May 2025 10:52:54 +0000 Subject: [PATCH 3/4] update display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h. Signed-off-by: wanghongenaf --- display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h index 08931f60..1e62cc90 100644 --- a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h @@ -219,7 +219,7 @@ public: { COMPOSER_CHECK_NULLPTR_RETURN(hdi_); /*Already enable,return success*/ - if(enable && (vsynEnableStatus_.find(devId) != vsyncEnableStatus_.end()) && vsyncEnableStatus_[devId]){ + if(enabled && (vsynEnableStatus_.find(devId) != vsyncEnableStatus_.end()) && vsyncEnableStatus_[devId]){ HDF_LOGD("%{public}s:vsynStatus[%{public}u] = %{public}d, skip", __func__,devId, vsyncEnableStatus_[devId]); return DISPLAY_SUCCESS; } -- Gitee From f7805a2b9bddca8adfa7681ba5e4b0b6a543435e Mon Sep 17 00:00:00 2001 From: wanghongenaf Date: Fri, 30 May 2025 10:54:40 +0000 Subject: [PATCH 4/4] update display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h. Signed-off-by: wanghongenaf --- display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h index 1e62cc90..8fcedd3c 100644 --- a/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_0/hdi_impl/display_composer_hdi_impl.h @@ -219,7 +219,7 @@ public: { COMPOSER_CHECK_NULLPTR_RETURN(hdi_); /*Already enable,return success*/ - if(enabled && (vsynEnableStatus_.find(devId) != vsyncEnableStatus_.end()) && vsyncEnableStatus_[devId]){ + if(enabled && (vsyncEnableStatus_.find(devId) != vsyncEnableStatus_.end()) && vsyncEnableStatus_[devId]){ HDF_LOGD("%{public}s:vsynStatus[%{public}u] = %{public}d, skip", __func__,devId, vsyncEnableStatus_[devId]); return DISPLAY_SUCCESS; } -- Gitee