[arch-commits] Commit in qt5-wayland/trunk (1 file)

Jan Steffens heftig at archlinux.org
Fri Dec 20 12:30:43 UTC 2019


    Date: Friday, December 20, 2019 @ 12:30:41
  Author: heftig
Revision: 371961

remove unused patch version accidentally committed

Deleted:
  qt5-wayland/trunk/0001-Drive-cursor-animation-with-a-timer.patch

------------------------------------------------+
 0001-Drive-cursor-animation-with-a-timer.patch |  124 -----------------------
 1 file changed, 124 deletions(-)

Deleted: 0001-Drive-cursor-animation-with-a-timer.patch
===================================================================
--- 0001-Drive-cursor-animation-with-a-timer.patch	2019-12-20 12:28:55 UTC (rev 371960)
+++ 0001-Drive-cursor-animation-with-a-timer.patch	2019-12-20 12:30:41 UTC (rev 371961)
@@ -1,124 +0,0 @@
-From 78b7b39d408077ad139cba3087b54142533852bb Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
-Date: Fri, 13 Dec 2019 22:15:32 +0100
-Subject: [PATCH] Drive cursor animation with a timer
-
-Using only wl_surface_frame callbacks to update the cursor does so much
-more often than needed. In addition, at least GNOME and Weston fire the
-callback for the cursor surface immediately, which ends up updating the
-cursor at over 3000 Hz here.
-
-Use wl_cursor_frame_and_duration to drive a single shot timer. This
-function is also guaranteed to return 0 for single frame cursors, so we
-can avoid starting the timer at all.
-
-We wait for both the surface frame callback and the timer to fire before
-updating the cursor for the next frame of animation. This reduces our
-update rate to the frame rate of the cursor or the rate requested by the
-compositor, whichever is lower.
-
-Change-Id: I10277460ebe9b547ebaf7f73424b9ef17614107f
----
- src/client/qwaylandinputdevice.cpp | 34 +++++++++++++++++++++++++++---
- src/client/qwaylandinputdevice_p.h |  5 +++++
- 2 files changed, 36 insertions(+), 3 deletions(-)
-
-diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
-index d812918e..e740b9c2 100644
---- a/src/client/qwaylandinputdevice.cpp
-+++ b/src/client/qwaylandinputdevice.cpp
-@@ -143,6 +143,12 @@ QWaylandWindow *QWaylandInputDevice::Keyboard::focusWindow() const
- QWaylandInputDevice::Pointer::Pointer(QWaylandInputDevice *seat)
-     : mParent(seat)
- {
-+#if QT_CONFIG(cursor)
-+    mCursor.frameTimer.setSingleShot(true);
-+    mCursor.frameTimer.callOnTimeout([&]() {
-+        cursorTimerCallback();
-+    });
-+#endif
- }
- 
- QWaylandInputDevice::Pointer::~Pointer()
-@@ -224,7 +230,7 @@ public:
-         if (animated) {
-             m_frameCallback.reset(new WlCallback(frame(), [this](uint32_t time){
-                Q_UNUSED(time);
--               m_pointer->updateCursor();
-+               m_pointer->cursorFrameCallback();
-             }));
-         }
-         commit();
-@@ -328,7 +334,8 @@ void QWaylandInputDevice::Pointer::updateCursor()
-     uint time = seat()->mCursor.animationTimer.elapsed();
- 
-     if (struct ::wl_cursor *waylandCursor = mCursor.theme->cursor(shape)) {
--        int frame = wl_cursor_frame(waylandCursor, time);
-+        uint duration = 0;
-+        int frame = wl_cursor_frame_and_duration(waylandCursor, time, &duration);
-         ::wl_cursor_image *image = waylandCursor->images[frame];
- 
-         struct wl_buffer *buffer = wl_cursor_image_get_buffer(image);
-@@ -339,7 +346,12 @@ void QWaylandInputDevice::Pointer::updateCursor()
-         int bufferScale = mCursor.themeBufferScale;
-         QPoint hotspot = QPoint(image->hotspot_x, image->hotspot_y) / bufferScale;
-         QSize size = QSize(image->width, image->height) / bufferScale;
--        bool animated = waylandCursor->image_count > 1 && image->delay > 0;
-+        bool animated = duration > 0;
-+        if (animated) {
-+            mCursor.gotFrameCallback = false;
-+            mCursor.gotTimerCallback = false;
-+            mCursor.frameTimer.start(duration);
-+        }
-         getOrCreateCursorSurface()->update(buffer, hotspot, size, bufferScale, animated);
-         return;
-     }
-@@ -354,6 +366,22 @@ CursorSurface *QWaylandInputDevice::Pointer::getOrCreateCursorSurface()
-     return mCursor.surface.get();
- }
- 
-+void QWaylandInputDevice::Pointer::cursorTimerCallback()
-+{
-+    mCursor.gotTimerCallback = true;
-+    if (mCursor.gotFrameCallback) {
-+        updateCursor();
-+    }
-+}
-+
-+void QWaylandInputDevice::Pointer::cursorFrameCallback()
-+{
-+    mCursor.gotFrameCallback = true;
-+    if (mCursor.gotTimerCallback) {
-+        updateCursor();
-+    }
-+}
-+
- #endif // QT_CONFIG(cursor)
- 
- QWaylandInputDevice::Touch::Touch(QWaylandInputDevice *p)
-diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h
-index 60d6f2c1..a567c57b 100644
---- a/src/client/qwaylandinputdevice_p.h
-+++ b/src/client/qwaylandinputdevice_p.h
-@@ -286,6 +286,8 @@ public:
-     int idealCursorScale() const;
-     void updateCursorTheme();
-     void updateCursor();
-+    void cursorTimerCallback();
-+    void cursorFrameCallback();
-     CursorSurface *getOrCreateCursorSurface();
- #endif
-     QWaylandInputDevice *seat() const { return mParent; }
-@@ -325,6 +327,9 @@ public:
-         QWaylandCursorTheme *theme = nullptr;
-         int themeBufferScale = 0;
-         QScopedPointer<CursorSurface> surface;
-+        QTimer frameTimer;
-+        bool gotFrameCallback = false;
-+        bool gotTimerCallback = false;
-     } mCursor;
- #endif
-     QPointF mSurfacePos;
--- 
-2.24.1
-


More information about the arch-commits mailing list