From 77ed48a0f2d10d87ef2bb95a227fa3f78a82a017 Mon Sep 17 00:00:00 2001 From: z-hf Date: Sat, 1 Mar 2025 19:28:06 +0800 Subject: [PATCH] add surfaceNode bounds Signed-off-by: z-hf Change-Id: I9b0691a902788edbcb76077009539f051db25d5b --- .../include/touch_drawing_manager.h | 1 + .../window_manager/src/touch_drawing_manager.cpp | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/service/window_manager/include/touch_drawing_manager.h b/service/window_manager/include/touch_drawing_manager.h index b64826f34..42bf893cb 100644 --- a/service/window_manager/include/touch_drawing_manager.h +++ b/service/window_manager/include/touch_drawing_manager.h @@ -125,6 +125,7 @@ private: int32_t scaleW_ { 0 }; int32_t scaleH_ { 0 }; int64_t lastActionTime_ { 0 }; + uint64_t screenId_ { -1 }; double xVelocity_ { 0.0 }; double yVelocity_ { 0.0 }; double pressure_ { 0.0 }; diff --git a/service/window_manager/src/touch_drawing_manager.cpp b/service/window_manager/src/touch_drawing_manager.cpp index 26d2316f4..bdee1f7cc 100644 --- a/service/window_manager/src/touch_drawing_manager.cpp +++ b/service/window_manager/src/touch_drawing_manager.cpp @@ -371,12 +371,16 @@ void TouchDrawingManager::AddCanvasNode(std::shared_ptr& ca CALL_DEBUG_ENTER; std::lock_guard lock(mutex_); CHKPV(surfaceNode_); - if (canvasNode != nullptr) { + if (canvasNode != nullptr && screenId_ == static_cast(displayInfo_.id)) { return; } + MMI_HILOGI("Screen from:%{public}" PRIu64 " to :%{public}d", screenId_, displayInfo_.id); + screenId_ = static_cast(displayInfo_.id); canvasNode = isTrackerNode ? Rosen::RSCanvasDrawingNode::Create() : Rosen::RSCanvasNode::Create(); canvasNode->SetBounds(0, 0, scaleW_, scaleH_); canvasNode->SetFrame(0, 0, scaleW_, scaleH_); + surfaceNode_->SetBounds(0, 0, scaleW_, scaleH_); + surfaceNode_->SetFrame(0, 0, scaleW_, scaleH_); if (isNeedRotate) { RotationCanvasNode(canvasNode); } @@ -457,14 +461,14 @@ void TouchDrawingManager::CreateTouchWindow() surfaceNode_->SetBackgroundColor(Rosen::Drawing::Color::COLOR_TRANSPARENT); #endif surfaceNode_->SetRotation(0); - uint64_t screenId = static_cast(displayInfo_.id); + screenId_ = static_cast(displayInfo_.id); if (displayInfo_.displayMode == DisplayMode::MAIN) { - screenId = FOLD_SCREEN_MAIN_ID; + screenId_ = FOLD_SCREEN_MAIN_ID; } else if (displayInfo_.displayMode == DisplayMode::FULL) { - screenId = FOLD_SCREEN_FULL_ID; + screenId_ = FOLD_SCREEN_FULL_ID; } - surfaceNode_->AttachToDisplay(screenId); - MMI_HILOGI("Setting screen:%{public}" PRIu64 ", displayNode:%{public}" PRIu64, screenId, surfaceNode_->GetId()); + surfaceNode_->AttachToDisplay(screenId_); + MMI_HILOGI("Setting screen:%{public}" PRIu64 ", displayNode:%{public}" PRIu64, screenId_, surfaceNode_->GetId()); } void TouchDrawingManager::DrawBubbleHandler() -- Gitee