From 08dd381f2c7fe6d30970f50137620051aec90a3b Mon Sep 17 00:00:00 2001 From: wangxinpeng Date: Thu, 17 Feb 2022 16:21:58 +0800 Subject: [PATCH] update screen info to IMS Signed-off-by: wangxinpeng Change-Id: Id5dad11922237bba6a724bab7bad388746c12aec --- .../include/display_manager_service_inner.h | 1 + dmserver/src/display_manager_service_inner.cpp | 17 +++++++++++++++++ wmserver/src/input_window_monitor.cpp | 17 +++++++++++------ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/dmserver/include/display_manager_service_inner.h b/dmserver/include/display_manager_service_inner.h index 1540ffde7a..c16ec7a27f 100644 --- a/dmserver/include/display_manager_service_inner.h +++ b/dmserver/include/display_manager_service_inner.h @@ -37,6 +37,7 @@ public: ScreenId GetRSScreenId(DisplayId displayId) const; const sptr GetScreenInfoByDisplayId(DisplayId displayId) const; const sptr GetScreenByDisplayId(DisplayId); + const sptr GetScreenModesByDisplayId(DisplayId displayId); void UpdateRSTree(DisplayId displayId, std::shared_ptr& surfaceNode, bool isAdd); void RegisterDisplayChangeListener(sptr listener); }; diff --git a/dmserver/src/display_manager_service_inner.cpp b/dmserver/src/display_manager_service_inner.cpp index a53ccf8afe..edaaa5cd4e 100644 --- a/dmserver/src/display_manager_service_inner.cpp +++ b/dmserver/src/display_manager_service_inner.cpp @@ -92,6 +92,23 @@ const sptr DisplayManagerServiceInner::GetScreenInfoByDisplayId(Disp DisplayManagerService::GetInstance().GetScreenIdByDisplayId(displayId)); } +const sptr DisplayManagerServiceInner::GetScreenModesByDisplayId(DisplayId displayId) +{ + const sptr display = GetDisplayById(displayId); + if (display == nullptr) { + WLOGFE("can not get display."); + return nullptr; + } + ScreenId dmsScreenId = display->GetAbstractScreenId(); + sptr abstractScreen = + DisplayManagerService::GetInstance().abstractScreenController_->GetAbstractScreen(dmsScreenId); + if (abstractScreen == nullptr) { + WLOGFE("can not get screenMode."); + return nullptr; + } + return abstractScreen->GetActiveScreenMode(); +} + void DisplayManagerServiceInner::RegisterDisplayChangeListener(sptr listener) { DisplayManagerService::GetInstance().RegisterDisplayChangeListener(listener); diff --git a/wmserver/src/input_window_monitor.cpp b/wmserver/src/input_window_monitor.cpp index 4b921aa4e2..f8ad19acad 100644 --- a/wmserver/src/input_window_monitor.cpp +++ b/wmserver/src/input_window_monitor.cpp @@ -79,19 +79,24 @@ void InputWindowMonitor::UpdateInputWindowByDisplayId(DisplayId displayId) void InputWindowMonitor::UpdateDisplaysInfo(const sptr& container, DisplayId displayId) { + sptr screenMode = + DisplayManagerServiceInner::GetInstance().GetScreenModesByDisplayId(displayId); + if (screenMode == nullptr) { + return; + } MMI::PhysicalDisplayInfo physicalDisplayInfo = { .id = static_cast(container->GetScreenId()), .leftDisplayId = static_cast(DISPLAY_ID_INVALD), .upDisplayId = static_cast(DISPLAY_ID_INVALD), - .topLeftX = container->GetDisplayRect().posX_, - .topLeftY = container->GetDisplayRect().posY_, - .width = static_cast(container->GetDisplayRect().width_), - .height = static_cast(container->GetDisplayRect().height_), + .topLeftX = 0, + .topLeftY = 0, + .width = static_cast(screenMode->width_), + .height = static_cast(screenMode->height_), .name = "physical_display0", .seatId = "seat0", .seatName = "default0", - .logicWidth = static_cast(container->GetDisplayRect().width_), - .logicHeight = static_cast(container->GetDisplayRect().height_), + .logicWidth = static_cast(screenMode->width_), + .logicHeight = static_cast(screenMode->height_), }; UpdateDisplayDirection(physicalDisplayInfo, displayId); auto physicalDisplayIter = std::find_if(physicalDisplays_.begin(), physicalDisplays_.end(), -- Gitee