diff --git a/dmserver/include/abstract_display_controller.h b/dmserver/include/abstract_display_controller.h index ed3119a8b94bf845ac647a2d20fc0b54782fb9c8..ba8c2275002f556116d54c439be563983a0caccc 100644 --- a/dmserver/include/abstract_display_controller.h +++ b/dmserver/include/abstract_display_controller.h @@ -40,6 +40,8 @@ public: std::shared_ptr GetScreenSnapshot(DisplayId displayId); sptr GetAbstractDisplay(DisplayId displayId) const; + DisplayId GetDisplayIdByScreenId(ScreenId id) const; + std::vector GetAllDisplayIds() const; void AddDisplayForExpandScreen(sptr absScreen); private: diff --git a/dmserver/include/display_manager_service.h b/dmserver/include/display_manager_service.h index ee3dc6d9c8ab382736c857bc7bb56cbb68700b36..994f65a99203e1664ff32448b3fb5a2ab15fe8ba 100644 --- a/dmserver/include/display_manager_service.h +++ b/dmserver/include/display_manager_service.h @@ -86,6 +86,7 @@ public: sptr GetScreenInfoById(ScreenId screenId) override; sptr GetScreenGroupInfoById(ScreenId screenId) override; std::vector> GetAllScreenInfos() override; + std::vector GetAllDisplayIds() const; DMError MakeExpand(std::vector screenId, std::vector startPoint) override; bool SetScreenActiveMode(ScreenId screenId, uint32_t modeId) override; diff --git a/dmserver/src/abstract_display_controller.cpp b/dmserver/src/abstract_display_controller.cpp index d54d6fcab1da35234024781719af39cab5fa3d4e..2b9859c41f089d20dbfb9d078ee61d8cd9266680 100644 --- a/dmserver/src/abstract_display_controller.cpp +++ b/dmserver/src/abstract_display_controller.cpp @@ -86,6 +86,27 @@ sptr AbstractDisplayController::GetAbstractDisplay(DisplayId di return iter->second; } +DisplayId AbstractDisplayController::GetDisplayIdByScreenId(ScreenId id) const +{ + for (auto iter = abstractDisplayMap_.begin(); iter != abstractDisplayMap_.end(); iter++) { + if (iter->second->GetAbstractScreenId() != id) { + continue; + } + return iter->first; + } + WLOGFE("Failed to get AbstractDisplayId by screenId %{public}" PRIu64", return nullptr!", id); + return DISPLAY_ID_INVALD; +} + +std::vector AbstractDisplayController::GetAllDisplayIds() const +{ + std::vector res; + for (auto iter = abstractDisplayMap_.begin(); iter != abstractDisplayMap_.end(); iter++) { + res.push_back(iter->first); + } + return res; +} + std::shared_ptr AbstractDisplayController::GetScreenSnapshot(DisplayId displayId) { sptr abstractDisplay = GetAbstractDisplay(displayId); diff --git a/dmserver/src/display_manager_service.cpp b/dmserver/src/display_manager_service.cpp index 0e3c34e080cd93342ac7d8328fcab282cafce59f..a46ef7d6b7575868188999339e7bbac6406388e8 100644 --- a/dmserver/src/display_manager_service.cpp +++ b/dmserver/src/display_manager_service.cpp @@ -84,9 +84,9 @@ ScreenId DisplayManagerService::GetScreenIdFromDisplayId(DisplayId displayId) DisplayId DisplayManagerService::GetDefaultDisplayId() { - ScreenId screenId = abstractDisplayController_->GetDefaultScreenId(); - WLOGFI("GetDefaultDisplayId %{public}" PRIu64"", screenId); - return GetDisplayIdFromScreenId(screenId); + ScreenId dmsScreenId = abstractScreenController_->GetDefaultAbstractScreenId(); + WLOGFI("GetDefaultDisplayId %{public}" PRIu64"", dmsScreenId); + return abstractDisplayController_->GetDisplayIdByScreenId(dmsScreenId); } DisplayInfo DisplayManagerService::GetDisplayInfoById(DisplayId displayId) @@ -446,6 +446,11 @@ sptr DisplayManagerService::GetScreenGroupInfoById(ScreenId scr return screenGroup->ConvertToScreenGroupInfo(); } +std::vector DisplayManagerService::GetAllDisplayIds() const +{ + return abstractDisplayController_->GetAllDisplayIds(); +} + std::vector> DisplayManagerService::GetAllScreenInfos() { std::vector screenIds = abstractScreenController_->GetAllScreenIds(); diff --git a/dmserver/src/display_manager_service_inner.cpp b/dmserver/src/display_manager_service_inner.cpp index edaaa5cd4ec4fe75112d2c2904302cb7147f6ebf..96bacf5e38bf60b77606ca2328d508e3dd0e5f5f 100644 --- a/dmserver/src/display_manager_service_inner.cpp +++ b/dmserver/src/display_manager_service_inner.cpp @@ -50,14 +50,17 @@ const sptr DisplayManagerServiceInner::GetDisplayById(DisplayId const sptr DisplayManagerServiceInner::GetDefaultDisplay() { + DisplayId defaultDisplayId = GetDefaultDisplayId(); + if (defaultDisplayId == DISPLAY_ID_INVALD) { + WLOGFE("Fail to get default displayId"); + return nullptr; + } return GetDisplayById(GetDefaultDisplayId()); } std::vector DisplayManagerServiceInner::GetAllDisplayIds() { - std::vector res; - res.push_back(GetDefaultDisplayId()); - return res; + return DisplayManagerService::GetInstance().GetAllDisplayIds(); } std::vector> DisplayManagerServiceInner::GetAllDisplays()