Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kwin5 for openSUSE:Factory checked 
in at 2022-02-14 22:35:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwin5 (Old)
 and      /work/SRC/openSUSE:Factory/.kwin5.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwin5"

Mon Feb 14 22:35:58 2022 rev:159 rq:953959 version:5.24.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwin5/kwin5.changes      2022-02-07 
23:37:46.682571796 +0100
+++ /work/SRC/openSUSE:Factory/.kwin5.new.1956/kwin5.changes    2022-02-14 
22:36:08.565409247 +0100
@@ -1,0 +2,7 @@
+Sat Feb 12 19:50:57 UTC 2022 - Bj??rn Lie <bjorn....@gmail.com>
+
+- Add 43caf2539357a1f9d5b2668a8eff151517377a7e.patch: Fix mouse
+  pointer disappearing after using zoom effect on X11 (kde#448537,
+  boo#1195865)
+
+-------------------------------------------------------------------

New:
----
  43caf2539357a1f9d5b2668a8eff151517377a7e.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwin5.spec ++++++
--- /var/tmp/diff_new_pack.Sln6jV/_old  2022-02-14 22:36:09.265411072 +0100
+++ /var/tmp/diff_new_pack.Sln6jV/_new  2022-02-14 22:36:09.269411082 +0100
@@ -39,6 +39,8 @@
 Source1:        kwin-%{version}.tar.xz.sig
 Source2:        plasma.keyring
 %endif
+# PATCH-FIX-UPSTREAM
+Patch1:       
https://invent.kde.org/plasma/kwin/-/commit/43caf2539357a1f9d5b2668a8eff151517377a7e.patch
 # PATCH-FEATURE-OPENSUSE
 Patch101:       0001-Export-consistent-hostname-as-XAUTHLOCALHOSTNAME.patch
 BuildRequires:  extra-cmake-modules >= 0.0.11

++++++ 43caf2539357a1f9d5b2668a8eff151517377a7e.patch ++++++
>From 43caf2539357a1f9d5b2668a8eff151517377a7e Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorod...@kde.org>
Date: Wed, 9 Feb 2022 21:38:23 +0200
Subject: [PATCH] Fix mouse pointer disappearing after using zoom effect on X11

Currently, the Cursors::currentCursorChanged signal is wired to the
updateCursor() function which calls xcb_xfixes_hide_cursor() or
xcb_xfixes_show_cursor() depending if the cursor is hidden. However, the
currentCursorChanged signal can be emitted if the cursor changed, e.g. a
new pixmap attached, or its visibility status changes.

The zoom effect hides the pointer, but when user hovers ui elements, it
will most likely change and result in more than one xcb_xfixes_hide_cursor()
calls.

It appears like xcb_xfixes_hide_cursor() is implemented as a reference
counter, i.e. if xcb_xfixes_hide_cursor() is called two times, then you
must call xcb_xfixes_show_cursor() two times as well.

This change adds a dedicated signal to indicate whether the cursor is
hidden to avoid calling xcb_xfixes_hide_cursor() multiple times while
the screen is scaled.

BUG: 448537


(cherry picked from commit 0ad239a92de6ae859e892db6debafac2e3daefb5)
---
 src/backends/drm/drm_output.cpp              | 1 +
 src/backends/x11/standalone/x11_platform.cpp | 3 +--
 src/cursor.cpp                               | 4 ++--
 src/cursor.h                                 | 1 +
 4 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/backends/drm/drm_output.cpp b/src/backends/drm/drm_output.cpp
index 725ab7a8b7..bbac87297b 100644
--- a/src/backends/drm/drm_output.cpp
+++ b/src/backends/drm/drm_output.cpp
@@ -72,6 +72,7 @@ DrmOutput::DrmOutput(DrmPipeline *pipeline)
     });
 
     connect(Cursors::self(), &Cursors::currentCursorChanged, this, 
&DrmOutput::updateCursor);
+    connect(Cursors::self(), &Cursors::hiddenChanged, this, 
&DrmOutput::updateCursor);
     connect(Cursors::self(), &Cursors::positionChanged, this, 
&DrmOutput::moveCursor);
 }
 
diff --git a/src/backends/x11/standalone/x11_platform.cpp 
b/src/backends/x11/standalone/x11_platform.cpp
index ec8809a6e5..d4d96533d5 100644
--- a/src/backends/x11/standalone/x11_platform.cpp
+++ b/src/backends/x11/standalone/x11_platform.cpp
@@ -142,8 +142,7 @@ bool X11StandalonePlatform::initialize()
     if (Xcb::Extensions::self()->isRandrAvailable()) {
         m_randrEventFilter.reset(new XrandrEventFilter(this));
     }
-    connect(Cursors::self(), &Cursors::currentCursorChanged, this, 
&X11StandalonePlatform::updateCursor);
-    updateCursor();
+    connect(Cursors::self(), &Cursors::hiddenChanged, this, 
&X11StandalonePlatform::updateCursor);
     return true;
 }
 
diff --git a/src/cursor.cpp b/src/cursor.cpp
index 625e570786..a3a48fd306 100644
--- a/src/cursor.cpp
+++ b/src/cursor.cpp
@@ -67,7 +67,7 @@ void Cursors::hideCursor()
 {
     m_cursorHideCounter++;
     if (m_cursorHideCounter == 1) {
-        Q_EMIT currentCursorChanged(m_currentCursor);
+        Q_EMIT hiddenChanged();
     }
 }
 
@@ -75,7 +75,7 @@ void Cursors::showCursor()
 {
     m_cursorHideCounter--;
     if (m_cursorHideCounter == 0) {
-        Q_EMIT currentCursorChanged(m_currentCursor);
+        Q_EMIT hiddenChanged();
     }
 }
 
diff --git a/src/cursor.h b/src/cursor.h
index 610e7cadc6..926ebe21bf 100644
--- a/src/cursor.h
+++ b/src/cursor.h
@@ -280,6 +280,7 @@ public:
 
 Q_SIGNALS:
     void currentCursorChanged(Cursor* cursor);
+    void hiddenChanged();
     void positionChanged(Cursor* cursor, const QPoint &position);
 
 private:
-- 
GitLab

Reply via email to