diff --git a/service/window_manager/include/touch_drawing_manager.h b/service/window_manager/include/touch_drawing_manager.h index b64826f341223fa8e1241cf788dcab31c9d7d36a..42bf893cb0d6eb3c8bb8eafd610a4c05c911631b 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 26d2316f440cca489f8d42b18422214fcb3eecb1..bdee1f7cc3991981d4d3c0312fa98e646d207f26 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()