修复分屏窗口冷启动配对窗口闪退的问题

Signed-off-by: xingyanan <xingyanan2@huawei.com>
Change-Id: I21f9413495b29c06ebc3f66348c1102ee2be85ad
Signed-off-by: xingyanan <xingyanan2@huawei.com>
This commit is contained in:
xingyanan
2022-07-18 19:23:33 +08:00
parent 6a6a7ebf5b
commit f602bf9aea
+10 -21
View File
@@ -129,17 +129,7 @@ WMError WindowNodeContainer::ShowStartingWindow(sptr<WindowNode>& node)
if (res != WMError::WM_OK) {
return res;
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
UpdateWindowTree(node);
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode() || node->GetWindowType() == WindowType::WINDOW_TYPE_DOCK_SLICE) {
RaiseSplitRelatedWindowToTop(node);
}
displayGroupController_->PreProcessWindowNode(node, WindowUpdateType::WINDOW_UPDATE_ADDED);
StartingWindow::UpdateRSTree(node);
AssignZOrder();
@@ -166,17 +156,7 @@ WMError WindowNodeContainer::AddWindowNode(sptr<WindowNode>& node, sptr<WindowNo
if (res != WMError::WM_OK) {
return res;
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
UpdateWindowTree(node);
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode()) {
RaiseSplitRelatedWindowToTop(node);
}
displayGroupController_->PreProcessWindowNode(node, WindowUpdateType::WINDOW_UPDATE_ADDED);
// add node on RSTree
for (auto& displayId : node->GetShowingDisplays()) {
@@ -187,7 +167,16 @@ WMError WindowNodeContainer::AddWindowNode(sptr<WindowNode>& node, sptr<WindowNo
node->startingWindowShown_ = false;
ReZOrderShowWhenLockedWindowIfNeeded(node);
}
auto windowPair = displayGroupController_->GetWindowPairByDisplayId(node->GetDisplayId());
if (windowPair == nullptr) {
WLOGFE("Window pair is nullptr");
return WMError::WM_ERROR_NULLPTR;
}
windowPair->UpdateIfSplitRelated(node);
if (node->IsSplitMode()) {
// raise the z-order of window pair
RaiseSplitRelatedWindowToTop(node);
}
AssignZOrder();
layoutPolicy_->AddWindowNode(node);
NotifyIfAvoidAreaChanged(node, AvoidControlType::AVOID_NODE_ADD);