From d8928110118bbc4ec4d604ed2effdd05d86946b0 Mon Sep 17 00:00:00 2001 From: xiaojianfeng Date: Tue, 15 Feb 2022 20:34:14 +0800 Subject: [PATCH] fix screen Manager crash bug Signed-off-by: xiaojianfeng Change-Id: Id4ac0353552aed60d6cfa6a36174ae148c9b9663 --- dmserver/src/abstract_screen_controller.cpp | 1 + dmserver/src/display_manager_service.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dmserver/src/abstract_screen_controller.cpp b/dmserver/src/abstract_screen_controller.cpp index 2d5a68d5..31ccbf4e 100644 --- a/dmserver/src/abstract_screen_controller.cpp +++ b/dmserver/src/abstract_screen_controller.cpp @@ -725,6 +725,7 @@ void AbstractScreenController::DumpScreenInfo() const PRIu64" %{public}10s %{public}20" PRIu64" ", screen->dmsId_, screen->rsId_, screen->groupDmsId_, isGroup.c_str(), screenType.c_str(), nodeId, isMirrored.c_str(), screen->rSDisplayNodeConfig_.mirrorNodeId); } + DumpScreenGroupInfo(); } void AbstractScreenController::DumpScreenGroupInfo() const diff --git a/dmserver/src/display_manager_service.cpp b/dmserver/src/display_manager_service.cpp index 1845e2b6..b2c9b499 100644 --- a/dmserver/src/display_manager_service.cpp +++ b/dmserver/src/display_manager_service.cpp @@ -133,14 +133,15 @@ DMError DisplayManagerService::DestroyVirtualScreen(ScreenId screenId) return DMError::DM_ERROR_INVALID_PARAM; } WM_SCOPED_TRACE("dms:DestroyVirtualScreen(%" PRIu64")", screenId); - std::map>::iterator iter = displayNodeMap_.find(screenId); + auto rsScreenId = abstractScreenController_->ConvertToRsScreenId(screenId); + std::map>::iterator iter = displayNodeMap_.find(rsScreenId); if (iter == displayNodeMap_.end()) { WLOGFE("DisplayManagerService: displayNode is nullptr"); return abstractScreenController_->DestroyVirtualScreen(screenId); } - displayNodeMap_[screenId]->RemoveFromTree(); + displayNodeMap_[rsScreenId]->RemoveFromTree(); WLOGFE("DisplayManagerService: displayNode remove from tree"); - displayNodeMap_.erase(screenId); + displayNodeMap_.erase(rsScreenId); auto transactionProxy = RSTransactionProxy::GetInstance(); if (transactionProxy != nullptr) { transactionProxy->FlushImplicitTransaction();