fix screen Manager crash bug

Signed-off-by: xiaojianfeng <xiaojianfeng3@huawei.com>
Change-Id: Id4ac0353552aed60d6cfa6a36174ae148c9b9663
This commit is contained in:
xiaojianfeng
2022-02-15 20:34:14 +08:00
parent 6a250c9ac2
commit d892811011
2 changed files with 5 additions and 3 deletions
@@ -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
+4 -3
View File
@@ -133,14 +133,15 @@ DMError DisplayManagerService::DestroyVirtualScreen(ScreenId screenId)
return DMError::DM_ERROR_INVALID_PARAM;
}
WM_SCOPED_TRACE("dms:DestroyVirtualScreen(%" PRIu64")", screenId);
std::map<ScreenId, std::shared_ptr<RSDisplayNode>>::iterator iter = displayNodeMap_.find(screenId);
auto rsScreenId = abstractScreenController_->ConvertToRsScreenId(screenId);
std::map<ScreenId, std::shared_ptr<RSDisplayNode>>::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();