From 4258db1261b100727bc77ada4ff508b20784f4df Mon Sep 17 00:00:00 2001 From: Klaus_q Date: Mon, 14 Mar 2022 21:30:35 +0800 Subject: [PATCH] fix MakeExpand creating redundant display error Signed-off-by: Klaus_q Change-Id: Ia3c1c4a11794ad35ab3bbd56de48333bacaab2a1 --- .../include/abstract_display_controller.h | 1 - dmserver/src/abstract_display_controller.cpp | 24 +++++++------------ dmserver/src/display_manager_service.cpp | 4 ---- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/dmserver/include/abstract_display_controller.h b/dmserver/include/abstract_display_controller.h index 19cd57b8..af4496b7 100644 --- a/dmserver/include/abstract_display_controller.h +++ b/dmserver/include/abstract_display_controller.h @@ -45,7 +45,6 @@ public: sptr GetAbstractDisplay(DisplayId displayId) const; sptr GetAbstractDisplayByScreen(ScreenId screenId) const; std::vector GetAllDisplayIds() const; - void AddDisplayForExpandScreen(sptr absScreen); void SetFreeze(std::vector displayIds, bool isFreeze); private: diff --git a/dmserver/src/abstract_display_controller.cpp b/dmserver/src/abstract_display_controller.cpp index 2902a6bf..c9b6c3f1 100644 --- a/dmserver/src/abstract_display_controller.cpp +++ b/dmserver/src/abstract_display_controller.cpp @@ -390,6 +390,14 @@ void AbstractDisplayController::AddScreenToMirrorLocked(sptr abs void AbstractDisplayController::AddScreenToExpandLocked(sptr absScreen) { + for (auto iter = abstractDisplayMap_.begin(); iter != abstractDisplayMap_.end(); iter++) { + sptr abstractDisplay = iter->second; + if (abstractDisplay->GetAbstractScreenId() == absScreen->dmsId_) { + WLOGE("error, screenId: %{public}" PRIu64" already has corresponding display", + absScreen->dmsId_); + return; + } + } WLOGI("bind display to expand. screen:%{public}" PRIu64"", absScreen->dmsId_); sptr info; if (absScreen->type_ == ScreenType::VIRTUAL) { @@ -417,22 +425,6 @@ void AbstractDisplayController::AddScreenToExpandLocked(sptr abs DisplayManagerAgentController::GetInstance().OnDisplayCreate(display->ConvertToDisplayInfo()); } -void AbstractDisplayController::AddDisplayForExpandScreen(sptr absScreen) -{ - for (auto iter = abstractDisplayMap_.begin(); iter != abstractDisplayMap_.end(); iter++) { - sptr abstractDisplay = iter->second; - if (abstractDisplay->GetAbstractScreenId() == absScreen->dmsId_) { - WLOGE("error, screenId: %{public}" PRIu64" already has corresponding display", - absScreen->dmsId_); - return; - } - } - WLOGI("screenId: %{public}" PRIu64" has no corresponding display, create new display.", - absScreen->dmsId_); - AddScreenToExpandLocked(absScreen); -} - - void AbstractDisplayController::SetFreeze(std::vector displayIds, bool toFreeze) { WM_SCOPED_TRACE("dms:SetAllFreeze"); diff --git a/dmserver/src/display_manager_service.cpp b/dmserver/src/display_manager_service.cpp index d1d2156f..9befafdf 100644 --- a/dmserver/src/display_manager_service.cpp +++ b/dmserver/src/display_manager_service.cpp @@ -481,10 +481,6 @@ ScreenId DisplayManagerService::MakeExpand(std::vector expandScreenIds if (iter != allExpandScreenIds.end()) { allExpandScreenIds.erase(iter); } - for (ScreenId expandScreenId : allExpandScreenIds) { - auto expandScreen = abstractScreenController_->GetAbstractScreen(expandScreenId); - abstractDisplayController_->AddDisplayForExpandScreen(expandScreen); - } SetShotScreen(defaultScreenId, shotScreenIds); WM_SCOPED_TRACE("dms:MakeExpand"); if (!allExpandScreenIds.empty() && !abstractScreenController_->MakeExpand(allExpandScreenIds, startPoints)) {