From f2583d557521c88da760bb36ea1f03a644e6d5a9 Mon Sep 17 00:00:00 2001 From: meikun Date: Sat, 6 Sep 2025 16:57:46 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=BD=B1=E5=AD=90=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: meikun --- window_scene/session/host/src/scene_session.cpp | 6 +++--- window_scene/session_manager/src/scene_session_manager.cpp | 4 ++-- window_scene/test/unittest/scene_session_test.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 6640111a91..710f1e95db 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -4882,10 +4882,10 @@ void SceneSession::CloneWindow(NodeId surfaceNodeId, bool needOffScreen) { HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "SceneSession::CloneWindow"); AutoRSTransaction trans(GetRSUIContext()); - if (auto surfaceNode = GetSurfaceNode()) { + if (auto leashWinShadowSurfaceNode = GetLeashWinShadowSurfaceNode()) { TLOGI(WmsLogTag::WMS_PC, "%{public}s this: %{public}" PRIu64 " cloned: %{public}" PRIu64, - surfaceNode->GetName().c_str(), surfaceNode->GetId(), surfaceNodeId); - surfaceNode->SetClonedNodeInfo(surfaceNodeId, needOffScreen); + leashWinShadowSurfaceNode->GetName().c_str(), leashWinShadowSurfaceNode->GetId(), surfaceNodeId); + leashWinShadowSurfaceNode->SetClonedNodeInfo(surfaceNodeId, needOffScreen); } } diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 660c206894..5e4965ae8c 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -16746,8 +16746,8 @@ WSError SceneSessionManager::CloneWindow(int32_t fromPersistentId, int32_t toPer NodeId nodeId = INVALID_NODEID; if (fromPersistentId >= 0) { // if fromPersistentId < 0, excute CloneWindow(0) to cancel cloneWindow if (auto fromSceneSession = GetSceneSession(fromPersistentId)) { - if (auto surfaceNode = fromSceneSession->GetSurfaceNode()) { - nodeId = surfaceNode->GetId(); + if (auto leashWinShadowSurfaceNode = fromSceneSession->GetLeashWinShadowSurfaceNode()) { + nodeId = leashWinShadowSurfaceNode->GetId(); } } else { TLOGNE(WmsLogTag::WMS_PC, "Session is nullptr, id: %{public}d", fromPersistentId); diff --git a/window_scene/test/unittest/scene_session_test.cpp b/window_scene/test/unittest/scene_session_test.cpp index b030f899e8..1afb6169c0 100644 --- a/window_scene/test/unittest/scene_session_test.cpp +++ b/window_scene/test/unittest/scene_session_test.cpp @@ -2345,7 +2345,7 @@ HWTEST_F(SceneSessionTest, CloneWindow, TestSize.Level1) bool needOffScreen = false; struct RSSurfaceNodeConfig config; std::shared_ptr surfaceNode = RSSurfaceNode::Create(config); - sceneSession->SetSurfaceNode(surfaceNode); + sceneSession->GetLeashWinShadowSurfaceNode(surfaceNode); sceneSession->CloneWindow(surfaceNodeId, needOffScreen); EXPECT_TRUE(logMsg.find("cloned") != std::string::npos); } -- Gitee From f849de980e3a60b543a033ea881fb20ce65c5428 Mon Sep 17 00:00:00 2001 From: meikun Date: Sat, 6 Sep 2025 17:21:06 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=BD=B1=E5=AD=90=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: meikun --- window_scene/session_manager/src/scene_session_manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 5e4965ae8c..660c206894 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -16746,8 +16746,8 @@ WSError SceneSessionManager::CloneWindow(int32_t fromPersistentId, int32_t toPer NodeId nodeId = INVALID_NODEID; if (fromPersistentId >= 0) { // if fromPersistentId < 0, excute CloneWindow(0) to cancel cloneWindow if (auto fromSceneSession = GetSceneSession(fromPersistentId)) { - if (auto leashWinShadowSurfaceNode = fromSceneSession->GetLeashWinShadowSurfaceNode()) { - nodeId = leashWinShadowSurfaceNode->GetId(); + if (auto surfaceNode = fromSceneSession->GetSurfaceNode()) { + nodeId = surfaceNode->GetId(); } } else { TLOGNE(WmsLogTag::WMS_PC, "Session is nullptr, id: %{public}d", fromPersistentId); -- Gitee From 952ad200da2b00f5c89573af8114659e01cc2dfa Mon Sep 17 00:00:00 2001 From: meikun Date: Thu, 11 Sep 2025 11:00:46 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=BD=B1=E5=AD=90=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: meikun --- window_scene/session/host/src/scene_session.cpp | 6 +++--- window_scene/test/unittest/scene_session_test.cpp | 10 ++++++---- window_scene/test/unittest/scene_session_test6.cpp | 1 + 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 710f1e95db..0eabfb1a15 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -4882,10 +4882,10 @@ void SceneSession::CloneWindow(NodeId surfaceNodeId, bool needOffScreen) { HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER, "SceneSession::CloneWindow"); AutoRSTransaction trans(GetRSUIContext()); - if (auto leashWinShadowSurfaceNode = GetLeashWinShadowSurfaceNode()) { + if (auto shadowSurfaceNode = GetShadowSurfaceNode()) { TLOGI(WmsLogTag::WMS_PC, "%{public}s this: %{public}" PRIu64 " cloned: %{public}" PRIu64, - leashWinShadowSurfaceNode->GetName().c_str(), leashWinShadowSurfaceNode->GetId(), surfaceNodeId); - leashWinShadowSurfaceNode->SetClonedNodeInfo(surfaceNodeId, needOffScreen); + shadowSurfaceNode->GetName().c_str(), shadowSurfaceNode->GetId(), surfaceNodeId); + shadowSurfaceNode->SetClonedNodeInfo(surfaceNodeId, needOffScreen); } } diff --git a/window_scene/test/unittest/scene_session_test.cpp b/window_scene/test/unittest/scene_session_test.cpp index 1afb6169c0..2a7d4ee61c 100644 --- a/window_scene/test/unittest/scene_session_test.cpp +++ b/window_scene/test/unittest/scene_session_test.cpp @@ -2332,7 +2332,6 @@ HWTEST_F(SceneSessionTest, IsFollowParentMultiScreenPolicy, TestSize.Level1) */ HWTEST_F(SceneSessionTest, CloneWindow, TestSize.Level1) { - LOG_SetCallback(SceneSessionLogCallback); SessionInfo info; info.abilityName_ = "CloneWindow"; info.bundleName_ = "CloneWindow"; @@ -2343,12 +2342,15 @@ HWTEST_F(SceneSessionTest, CloneWindow, TestSize.Level1) EXPECT_NE(sceneSession, nullptr); uint64_t surfaceNodeId = 1; bool needOffScreen = false; + sceneSession->SetSurfaceNode(nullptr); + sceneSession->CloneWindow(surfaceNodeId, needOffScreen); struct RSSurfaceNodeConfig config; std::shared_ptr surfaceNode = RSSurfaceNode::Create(config); - sceneSession->GetLeashWinShadowSurfaceNode(surfaceNode); + sceneSession->SetSurfaceNode(surfaceNode); + auto shadowSurfaceNode = sceneSession->GetShadowSurfaceNode(); sceneSession->CloneWindow(surfaceNodeId, needOffScreen); - EXPECT_TRUE(logMsg.find("cloned") != std::string::npos); -} + EXPECT_TRUE(shadowSurfaceNode != nullptr); +}} /** * @tc.name: GetGlobalOrWinRect diff --git a/window_scene/test/unittest/scene_session_test6.cpp b/window_scene/test/unittest/scene_session_test6.cpp index 0737acaa22..ac44dc5cc5 100644 --- a/window_scene/test/unittest/scene_session_test6.cpp +++ b/window_scene/test/unittest/scene_session_test6.cpp @@ -1265,6 +1265,7 @@ HWTEST_F(SceneSessionTest6, SetSupportEnterWaterfallMode, Function | SmallTest | { SessionInfo info; sptr session = sptr::MakeSptr(info, nullptr); + session->sessionStage_ = sptr::MakeSptr(); session->systemConfig_.windowUIType_ = WindowUIType::PC_WINDOW; session->GetSessionProperty()->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW); session->SetSupportEnterWaterfallMode(true); -- Gitee