From c62c13bc45a7309fadaf25cafc4e97656918b050 Mon Sep 17 00:00:00 2001 From: ck Date: Sat, 17 Sep 2022 14:31:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E6=AC=A1=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=A8=A1=E5=BC=8F=E5=90=8Edock=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 响应了太多屏幕信息变化,将大量重复调用去掉 monitorUpdateTimer 本来就可以更新位置 Bug: https://pms.uniontech.com/bug-view-158709.html Log: 修复wayland dock位置异常问题 Influence: wayland dock position incorrect Change-Id: Ia686089736d6077b47d44c2eaecfbc4240400501 --- frame/util/multiscreenworker.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frame/util/multiscreenworker.cpp b/frame/util/multiscreenworker.cpp index 82b632b9c..e99766f04 100644 --- a/frame/util/multiscreenworker.cpp +++ b/frame/util/multiscreenworker.cpp @@ -878,7 +878,11 @@ void MultiScreenWorker::onRequestUpdatePosition(const Position &fromPos, const P void MultiScreenWorker::onRequestUpdateMonitorInfo() { - resetDockScreen(); + // resetDockScreen 调用太频繁,未在合适的时机调用时出现 wayland set_position 数值异常 + // 推测是 qt 未能正确传递窗口位置到 waylandserver, 此处修改经过测试可以较好的规避此问题。 + // for test : DOCK_RESET_NOW=true dde-dock + if (qEnvironmentVariableIsSet("DOCK_RESET_NOW")) + resetDockScreen(); // m_monitorUpdateTimer timeout will call resetDockScreen // 只需要在屏幕信息变化的时候更新,其他时间不需要更新 onRequestUpdateRegionMonitor();