From 57cbf1f3b86fa2dd87456ee0ad1a788f13e7fc1a Mon Sep 17 00:00:00 2001 From: Liu Yongwei Date: Tue, 9 Sep 2025 19:41:15 +0800 Subject: [PATCH] =?UTF-8?q?SetSkipDraw=E6=8E=A5=E5=8F=A3=E9=80=82=E9=85=8D?= =?UTF-8?q?=E5=BD=B1=E5=AD=90=E8=8A=82=E7=82=B9=20Signed-off-by:=20samuel7?= =?UTF-8?q?89=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../session/host/src/scb_system_session.cpp | 1 + window_scene/session/host/src/scene_session.cpp | 17 ++++++++++------- .../test/unittest/scene_session_test4.cpp | 16 +++++++++++++--- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/window_scene/session/host/src/scb_system_session.cpp b/window_scene/session/host/src/scb_system_session.cpp index 3f5867318b..b6b6fabfa2 100644 --- a/window_scene/session/host/src/scb_system_session.cpp +++ b/window_scene/session/host/src/scb_system_session.cpp @@ -53,6 +53,7 @@ SCBSystemSession::SCBSystemSession(const SessionInfo& info, const sptrCreateShadowSurfaceNode() : nullptr; RSAdapterUtil::SetRSUIContext(surfaceNode_, GetRSUIContext(), true); TLOGD(WmsLogTag::WMS_SCB, "Create RSSurfaceNode: %{public}s, name: %{public}s", RSAdapterUtil::RSNodeToStr(surfaceNode_).c_str(), name.c_str()); diff --git a/window_scene/session/host/src/scene_session.cpp b/window_scene/session/host/src/scene_session.cpp index 7bacd2bbf8..564d396722 100644 --- a/window_scene/session/host/src/scene_session.cpp +++ b/window_scene/session/host/src/scene_session.cpp @@ -7432,15 +7432,18 @@ bool SceneSession::IsTemporarilyShowWhenLocked() const void SceneSession::SetSkipDraw(bool skip) { - auto surfaceNode = GetSurfaceNode(); - if (!surfaceNode) { - WLOGFE("surfaceNode_ is null"); + auto shadowSurfaceNode = GetShadowSurfaceNode(); + if (!shadowSurfaceNode) { + WLOGFE("shadowSurfaceNode is null"); return; } - AutoRSTransaction trans(GetRSUIContext()); - surfaceNode->SetSkipDraw(skip); - if (auto leashWinSurfaceNode = GetLeashWinSurfaceNode()) { - leashWinSurfaceNode->SetSkipDraw(skip); + { + AutoRSTransaction trans(GetRSShadowContext()); + shadowSurfaceNode->SetSkipDraw(skip); + } + if (auto leashShadowSurfaceNode = GetLeashWinShadowSurfaceNode()) { + AutoRSTransaction trans(GetRSLeashWinShadowContext()); + leashShadowSurfaceNode->SetSkipDraw(skip); } } diff --git a/window_scene/test/unittest/scene_session_test4.cpp b/window_scene/test/unittest/scene_session_test4.cpp index 2ebcda0b8f..ebe1a8044a 100644 --- a/window_scene/test/unittest/scene_session_test4.cpp +++ b/window_scene/test/unittest/scene_session_test4.cpp @@ -296,12 +296,22 @@ HWTEST_F(SceneSessionTest4, SetSkipDraw, TestSize.Level1) EXPECT_NE(nullptr, session); struct RSSurfaceNodeConfig config; std::shared_ptr surfaceNode = RSSurfaceNode::Create(config); - session->surfaceNode_ = surfaceNode; + session->SetSurfaceNode(surfaceNode); + session->SetLeashWinSurfaceNode(surfaceNode); + EXPECT_TRUE(session->GetShadowSurfaceNode()); + EXPECT_TRUE(session->GetLeashWinShadowSurfaceNode()); + session->SetSkipDraw(true); + EXPECT_TRUE(session->GetShadowSurfaceNode()->GetSkipDraw()); + session->SetSkipDraw(false); + EXPECT_FALSE(session->GetShadowSurfaceNode()->GetSkipDraw()); + session->SetLeashWinSurfaceNode(nullptr); session->SetSkipDraw(true); - session->SetLeashWinSurfaceNode(surfaceNode); - EXPECT_EQ(surfaceNode, session->GetLeashWinSurfaceNode()); + EXPECT_FALSE(session->GetLeashWinShadowSurfaceNode()); + + session->SetSurfaceNode(nullptr); session->SetSkipDraw(true); + EXPECT_FALSE(session->GetShadowSurfaceNode()); } /** -- Gitee