From ac4ec3993aa588d88cf7cd8f2714c4d546db372b Mon Sep 17 00:00:00 2001 From: Grady Date: Mon, 10 Jan 2022 10:15:44 +0800 Subject: [PATCH 1/2] change output format Signed-off-by: Grady Change-Id: Ic22faf33ddfc0fd9a14eb69ae9b06823ee900554 --- dm/src/display_manager.cpp | 2 +- dmserver/src/abstract_display_manager.cpp | 2 +- dmserver/src/display_manager_service.cpp | 4 ++-- dmserver/src/display_manager_service_inner.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dm/src/display_manager.cpp b/dm/src/display_manager.cpp index a391e69742..9ec4c3ac1a 100644 --- a/dm/src/display_manager.cpp +++ b/dm/src/display_manager.cpp @@ -134,7 +134,7 @@ std::vector> DisplayManager::GetAllDisplays() if (display != nullptr) { res.push_back(display); } else { - WLOGFE("DisplayManager::GetAllDisplays display %" PRIu64" nullptr!", displayId); + WLOGFE("DisplayManager::GetAllDisplays display %{public}" PRIu64" nullptr!", displayId); } } return res; diff --git a/dmserver/src/abstract_display_manager.cpp b/dmserver/src/abstract_display_manager.cpp index 2ed3b24e26..e79ec9ecc0 100644 --- a/dmserver/src/abstract_display_manager.cpp +++ b/dmserver/src/abstract_display_manager.cpp @@ -63,7 +63,7 @@ ScreenId AbstractDisplayManager::CreateVirtualScreen(const VirtualDisplayInfo &v } ScreenId result = rsInterface_->CreateVirtualScreen(virtualDisplayInfo.name_, virtualDisplayInfo.width_, virtualDisplayInfo.height_, surface, virtualDisplayInfo.displayIdToMirror_, virtualDisplayInfo.flags_); - WLOGFI("AbstractDisplayManager::CreateVirtualDisplay id: %{public}llu", result >> 32); + WLOGFI("AbstractDisplayManager::CreateVirtualDisplay id: %{public}" PRIu64"", result >> 32); return result; } diff --git a/dmserver/src/display_manager_service.cpp b/dmserver/src/display_manager_service.cpp index d95ee09530..35f15841e1 100644 --- a/dmserver/src/display_manager_service.cpp +++ b/dmserver/src/display_manager_service.cpp @@ -68,7 +68,7 @@ ScreenId DisplayManagerService::GetScreenIdFromDisplayId(DisplayId displayId) DisplayId DisplayManagerService::GetDefaultDisplayId() { ScreenId screenId = AbstractDisplayManager::GetInstance().GetDefaultScreenId(); - WLOGFI("GetDefaultDisplayId %{public}llu", screenId); + WLOGFI("GetDefaultDisplayId %{public}" PRIu64"", screenId); return GetDisplayIdFromScreenId(screenId); } @@ -87,7 +87,7 @@ DisplayInfo DisplayManagerService::GetDisplayInfoById(DisplayId displayId) DisplayId DisplayManagerService::CreateVirtualDisplay(const VirtualDisplayInfo &virtualDisplayInfo, sptr surface) { - WLOGFI("name %{public}s, width %{public}u, height %{public}u, mirrotId %{public}llu, flags %{public}d", + WLOGFI("name %{public}s, width %{public}u, height %{public}u, mirrotId %{public}" PRIu64", flags %{public}d", virtualDisplayInfo.name_.c_str(), virtualDisplayInfo.width_, virtualDisplayInfo.height_, virtualDisplayInfo.displayIdToMirror_, virtualDisplayInfo.flags_); ScreenId screenId = AbstractDisplayManager::GetInstance().CreateVirtualScreen(virtualDisplayInfo, surface); diff --git a/dmserver/src/display_manager_service_inner.cpp b/dmserver/src/display_manager_service_inner.cpp index 6b65413d81..a22f2e93fa 100644 --- a/dmserver/src/display_manager_service_inner.cpp +++ b/dmserver/src/display_manager_service_inner.cpp @@ -68,7 +68,7 @@ std::vector> DisplayManagerServiceInner::GetAllDispl if (display != nullptr) { res.push_back(display); } else { - WLOGFE("GetAllDisplays display %" PRIu64" nullptr!", displayId); + WLOGFE("GetAllDisplays display %{public}" PRIu64" nullptr!", displayId); } } return res; -- Gitee From 63cf28715e9f21028ab34e03f3b1e84340f9881d Mon Sep 17 00:00:00 2001 From: Grady Date: Tue, 11 Jan 2022 15:11:36 +0800 Subject: [PATCH 2/2] Save RSDisplayNode in DMS Signed-off-by: Grady Change-Id: Ib64896c897b6ca99df3023ed3a106436c8b8adfb --- dmserver/include/display_manager_service.h | 5 +++++ dmserver/src/display_manager_service.cpp | 15 +++++++++++++++ wmserver/include/window_manager_service.h | 1 + wmserver/include/window_node_container.h | 1 + wmserver/src/window_manager_service.cpp | 5 +++++ wmserver/src/window_node_container.cpp | 5 +++++ 6 files changed, 32 insertions(+) diff --git a/dmserver/include/display_manager_service.h b/dmserver/include/display_manager_service.h index 0684e31432..370a439324 100644 --- a/dmserver/include/display_manager_service.h +++ b/dmserver/include/display_manager_service.h @@ -21,12 +21,14 @@ #include #include +#include #include "abstract_display.h" #include "abstract_display_manager.h" #include "display_manager_stub.h" #include "single_instance.h" #include "singleton_delegator.h" +#include "transaction/rs_interfaces.h" namespace OHOS::Rosen { class DisplayManagerService : public SystemAbility, public DisplayManagerStub { @@ -53,6 +55,9 @@ private: static inline SingletonDelegator delegator_; std::map> abstractDisplayMap_; +#ifdef FOUNDATION_DMSERVER_RSDISPLAYNODE + std::map> displayNodeMap_; +#endif }; } // namespace OHOS::Rosen diff --git a/dmserver/src/display_manager_service.cpp b/dmserver/src/display_manager_service.cpp index 35f15841e1..1ffd3ab052 100644 --- a/dmserver/src/display_manager_service.cpp +++ b/dmserver/src/display_manager_service.cpp @@ -23,6 +23,7 @@ #include #include "window_manager_hilog.h" +#include "window_manager_service.h" namespace OHOS::Rosen { namespace { @@ -91,6 +92,16 @@ DisplayId DisplayManagerService::CreateVirtualDisplay(const VirtualDisplayInfo & virtualDisplayInfo.name_.c_str(), virtualDisplayInfo.width_, virtualDisplayInfo.height_, virtualDisplayInfo.displayIdToMirror_, virtualDisplayInfo.flags_); ScreenId screenId = AbstractDisplayManager::GetInstance().CreateVirtualScreen(virtualDisplayInfo, surface); +#ifdef FOUNDATION_DMSERVER_RSDISPLAYNODE + if (virtualDisplayInfo.displayIdToMirror_ != DISPLAY_ID_INVALD) { + std::shared_ptr displayNode = + SingletonContainer::Get().GetDisplayNode(virtualDisplayInfo.displayIdToMirror_); + NodeId id = displayNode->GetId(); + struct RSDisplayNodeConfig config = {screenId, true, id}; + displayNodeMap_[screenId] = RSDisplayNode::Create(config); + WLOGFI("DisplayManagerService::NodeId: %{public}" PRIu64 "", id >> 32); + } +#endif return GetDisplayIdFromScreenId(screenId); } @@ -98,6 +109,10 @@ bool DisplayManagerService::DestroyVirtualDisplay(DisplayId displayId) { WLOGFI("DisplayManagerService::DestroyVirtualDisplay"); ScreenId screenId = GetScreenIdFromDisplayId(displayId); +#ifdef FOUNDATION_DMSERVER_RSDISPLAYNODE + displayNodeMap_[screenId]->RemoveFromTree(); + displayNodeMap_.erase(screenId); +#endif return AbstractDisplayManager::GetInstance().DestroyVirtualScreen(screenId); } diff --git a/wmserver/include/window_manager_service.h b/wmserver/include/window_manager_service.h index 36935f3a10..dd787e03c7 100644 --- a/wmserver/include/window_manager_service.h +++ b/wmserver/include/window_manager_service.h @@ -55,6 +55,7 @@ public: void RegisterFocusChangedListener(const sptr& windowManagerAgent) override; void UnregisterFocusChangedListener(const sptr& windowManagerAgent) override; + std::shared_ptr GetDisplayNode(int32_t displayId) const; protected: WindowManagerService(); diff --git a/wmserver/include/window_node_container.h b/wmserver/include/window_node_container.h index 04430981cf..66b360203d 100644 --- a/wmserver/include/window_node_container.h +++ b/wmserver/include/window_node_container.h @@ -45,6 +45,7 @@ public: Rect GetDisplayRect() const; sptr GetTopImmersiveNode() const; void NotifySystemBarIfChanged(); + std::shared_ptr GetDisplayNode() const; private: void AssignZOrder(sptr& node); diff --git a/wmserver/src/window_manager_service.cpp b/wmserver/src/window_manager_service.cpp index 56a0fa8665..68afada8ac 100644 --- a/wmserver/src/window_manager_service.cpp +++ b/wmserver/src/window_manager_service.cpp @@ -224,5 +224,10 @@ void WindowManagerService::OnWindowEvent(Event event, uint32_t windowId) break; } } + +std::shared_ptr WindowManagerService::GetDisplayNode(int32_t displayId) const +{ + return windowRoot_->GetOrCreateWindowNodeContainer(displayId)->GetDisplayNode(); +} } } \ No newline at end of file diff --git a/wmserver/src/window_node_container.cpp b/wmserver/src/window_node_container.cpp index 38dc36447e..6cb62ec786 100644 --- a/wmserver/src/window_node_container.cpp +++ b/wmserver/src/window_node_container.cpp @@ -451,5 +451,10 @@ Rect WindowNodeContainer::GetDisplayRect() const { return displayRect_; } + +std::shared_ptr WindowNodeContainer::GetDisplayNode() const +{ + return displayNode_; +} } } -- Gitee