mirror of
https://github.com/openharmony/windowmanager.git
synced 2026-07-18 16:24:27 -04:00
fix screen Manager crash bug
Signed-off-by: xiaojianfeng <xiaojianfeng3@huawei.com> Change-Id: Id4ac0353552aed60d6cfa6a36174ae148c9b9663
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user