Accepting request 956939 from KDE:Qt:5.15
- Update to version 5.15.2+kde54: * Use proper dependencies in compile tests * Client: Fix opaque region setter * client: Simplify round trip behavior (boo#1196302) * Update the preedit styling mapping * Cursor position == 0 should still show the cursor * Client: Remove mWaitingForUpdateDelivery * Fix crash if no input method module could be loaded * Use wl_surface.damage_buffer on the client side * Do not create decorations when the shellSurface is not ready * Check pointer for null before use in ASSERT - Drop patches, now upstream: * 0001-Client-Remove-mWaitingForUpdateDelivery.patch * 0001-Use-proper-dependencies-in-compile-tests.patch OBS-URL: https://build.opensuse.org/request/show/956939 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwayland?expand=0&rev=44
This commit is contained in:
commit
11d72ad6a3
@ -1,77 +0,0 @@
|
||||
From 78b517296568e4cd960ef4e13001d1200ad33e01 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Tue, 1 Feb 2022 13:05:36 +0200
|
||||
Subject: [PATCH 1/3] Client: Remove mWaitingForUpdateDelivery
|
||||
|
||||
Currently, mWaitingForUpdateDelivery is shared between the main thread
|
||||
(doHandleFrameCallback()) and the frame callback event thread
|
||||
(handleFrameCallback()), however the access to it is not synchronized
|
||||
between neither both threads. On the other hand, QWaylandWindow
|
||||
already ensures not to create a frame callback if there's already one
|
||||
pending.
|
||||
|
||||
This change removes mWaitingForUpdateDelivery flag because it should be
|
||||
already covered by mWaitingForFrameCallback and to remove unsynchronized
|
||||
shared state between threads.
|
||||
|
||||
Change-Id: I0e5a25d18d1e66c4d7683e7e972330c4d7cbbf38
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 29 ++++++++++++-----------------
|
||||
src/client/qwaylandwindow_p.h | 1 -
|
||||
2 files changed, 12 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index acfe390e..30ae5345 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -638,23 +638,18 @@ void QWaylandWindow::handleFrameCallback()
|
||||
mFrameCallbackElapsedTimer.invalidate();
|
||||
|
||||
// The rest can wait until we can run it on the correct thread
|
||||
- if (!mWaitingForUpdateDelivery) {
|
||||
- auto doHandleExpose = [this]() {
|
||||
- bool wasExposed = isExposed();
|
||||
- mFrameCallbackTimedOut = false;
|
||||
- if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
|
||||
- sendExposeEvent(QRect(QPoint(), geometry().size()));
|
||||
- if (wasExposed && hasPendingUpdateRequest())
|
||||
- deliverUpdateRequest();
|
||||
-
|
||||
- mWaitingForUpdateDelivery = false;
|
||||
- };
|
||||
-
|
||||
- // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
|
||||
- // in the single-threaded case.
|
||||
- mWaitingForUpdateDelivery = true;
|
||||
- QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
|
||||
- }
|
||||
+ auto doHandleExpose = [this]() {
|
||||
+ bool wasExposed = isExposed();
|
||||
+ mFrameCallbackTimedOut = false;
|
||||
+ if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
|
||||
+ sendExposeEvent(QRect(QPoint(), geometry().size()));
|
||||
+ if (wasExposed && hasPendingUpdateRequest())
|
||||
+ deliverUpdateRequest();
|
||||
+ };
|
||||
+
|
||||
+ // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
|
||||
+ // in the single-threaded case.
|
||||
+ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
|
||||
|
||||
mFrameSyncWait.notify_all();
|
||||
}
|
||||
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||
index d45980a8..3ff68ccb 100644
|
||||
--- a/src/client/qwaylandwindow_p.h
|
||||
+++ b/src/client/qwaylandwindow_p.h
|
||||
@@ -228,7 +228,6 @@ protected:
|
||||
WId mWindowId;
|
||||
bool mWaitingForFrameCallback = false;
|
||||
bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
|
||||
- bool mWaitingForUpdateDelivery = false;
|
||||
int mFrameCallbackCheckIntervalTimerId = -1;
|
||||
QElapsedTimer mFrameCallbackElapsedTimer;
|
||||
struct ::wl_callback *mFrameCallback = nullptr;
|
||||
--
|
||||
2.34.0
|
||||
|
@ -1,120 +0,0 @@
|
||||
From 95bdca4b2ff43205f0666a5beda124d8ca326954 Mon Sep 17 00:00:00 2001
|
||||
From: Fabian Vogt <fabian@ritter-vogt.de>
|
||||
Date: Fri, 4 Feb 2022 11:07:36 +0100
|
||||
Subject: [PATCH] Use proper dependencies in compile tests
|
||||
|
||||
Use the dependencies as found by the "libraries" section instead of relying
|
||||
on them being available in the default location (e.g. "-ldrm").
|
||||
|
||||
Additionally, VK_USE_PLATFORM_WAYLAND_KHR requires <wayland-client.h>, so
|
||||
add the wayland-client dependency.
|
||||
|
||||
This fixes those tests if e.g. wayland-client headers need to be found through
|
||||
pkgconfig.
|
||||
---
|
||||
src/client/configure.json | 8 ++++----
|
||||
src/compositor/configure.json | 34 +++++++++++++++++++++++++++++-----
|
||||
2 files changed, 33 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/client/configure.json b/src/client/configure.json
|
||||
index 2f424580..29222357 100644
|
||||
--- a/src/client/configure.json
|
||||
+++ b/src/client/configure.json
|
||||
@@ -149,8 +149,7 @@
|
||||
"#endif"
|
||||
]
|
||||
},
|
||||
- "libs": "-ldrm",
|
||||
- "use": "egl"
|
||||
+ "use": "drm egl"
|
||||
},
|
||||
"vulkan-server-buffer": {
|
||||
"label": "Vulkan Buffer Sharing",
|
||||
@@ -168,7 +167,8 @@
|
||||
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
||||
"return 0;"
|
||||
]
|
||||
- }
|
||||
+ },
|
||||
+ "use": "wayland-client"
|
||||
},
|
||||
"egl_1_5-wayland": {
|
||||
"label": "EGL 1.5 with Wayland Platform",
|
||||
@@ -183,7 +183,7 @@
|
||||
"eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);"
|
||||
]
|
||||
},
|
||||
- "use": "egl"
|
||||
+ "use": "egl wayland-client"
|
||||
}
|
||||
},
|
||||
|
||||
diff --git a/src/compositor/configure.json b/src/compositor/configure.json
|
||||
index bcfd5215..da95d07b 100644
|
||||
--- a/src/compositor/configure.json
|
||||
+++ b/src/compositor/configure.json
|
||||
@@ -7,6 +7,31 @@
|
||||
"testDir": "../../config.tests",
|
||||
|
||||
"libraries": {
|
||||
+ "wayland-client": {
|
||||
+ "label": "Wayland client library",
|
||||
+ "headers": "wayland-version.h",
|
||||
+ "test": {
|
||||
+ "main": [
|
||||
+ "#if WAYLAND_VERSION_MAJOR < 1",
|
||||
+ "# error Wayland 1.8.0 or higher required",
|
||||
+ "#endif",
|
||||
+ "#if WAYLAND_VERSION_MAJOR == 1",
|
||||
+ "# if WAYLAND_VERSION_MINOR < 8",
|
||||
+ "# error Wayland 1.8.0 or higher required",
|
||||
+ "# endif",
|
||||
+ "# if WAYLAND_VERSION_MINOR == 8",
|
||||
+ "# if WAYLAND_VERSION_MICRO < 0",
|
||||
+ "# error Wayland 1.8.0 or higher required",
|
||||
+ "# endif",
|
||||
+ "# endif",
|
||||
+ "#endif"
|
||||
+ ]
|
||||
+ },
|
||||
+ "sources": [
|
||||
+ { "type": "pkgConfig", "args": "wayland-client" },
|
||||
+ "-lwayland-client"
|
||||
+ ]
|
||||
+ },
|
||||
"wayland-server": {
|
||||
"label": "wayland-server",
|
||||
"headers": "wayland-version.h",
|
||||
@@ -151,8 +176,7 @@
|
||||
"#endif"
|
||||
]
|
||||
},
|
||||
- "libs": "-ldrm",
|
||||
- "use": "egl"
|
||||
+ "use": "drm egl"
|
||||
},
|
||||
"dmabuf-client-buffer": {
|
||||
"label": "Linux Client dma-buf Buffer Sharing",
|
||||
@@ -176,8 +200,7 @@
|
||||
"return 0;"
|
||||
]
|
||||
},
|
||||
- "libs": "-ldrm",
|
||||
- "use": "egl"
|
||||
+ "use": "drm egl"
|
||||
},
|
||||
"vulkan-server-buffer": {
|
||||
"label": "Vulkan Buffer Sharing",
|
||||
@@ -195,7 +218,8 @@
|
||||
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
||||
"return 0;"
|
||||
]
|
||||
- }
|
||||
+ },
|
||||
+ "use": "wayland-client"
|
||||
}
|
||||
},
|
||||
|
||||
--
|
||||
2.34.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://invent.kde.org/qt/qt/qtwayland.git</param>
|
||||
<param name="changesrevision">4644d51f4b52e83fc1b4d02b380d80d9d57e76fa</param></service></servicedata>
|
||||
<param name="changesrevision">8f0c9169310344c8f179311bae446239cdb61f68</param></service></servicedata>
|
@ -1,3 +1,21 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 22 15:32:53 UTC 2022 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
- Update to version 5.15.2+kde54:
|
||||
* Use proper dependencies in compile tests
|
||||
* Client: Fix opaque region setter
|
||||
* client: Simplify round trip behavior (boo#1196302)
|
||||
* Update the preedit styling mapping
|
||||
* Cursor position == 0 should still show the cursor
|
||||
* Client: Remove mWaitingForUpdateDelivery
|
||||
* Fix crash if no input method module could be loaded
|
||||
* Use wl_surface.damage_buffer on the client side
|
||||
* Do not create decorations when the shellSurface is not ready
|
||||
* Check pointer for null before use in ASSERT
|
||||
- Drop patches, now upstream:
|
||||
* 0001-Client-Remove-mWaitingForUpdateDelivery.patch
|
||||
* 0001-Use-proper-dependencies-in-compile-tests.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 3 16:51:41 UTC 2022 - Fabian Vogt <fabian@ritter-vogt.de>
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
%define so_version 5.15.2
|
||||
%define tar_version qtwayland-everywhere-src-%{version}
|
||||
Name: libqt5-qtwayland
|
||||
Version: 5.15.2+kde44
|
||||
Version: 5.15.2+kde54
|
||||
Release: 0
|
||||
Summary: Qt 5 Wayland Addon
|
||||
# The wayland compositor files are GPL-3.0-or-later
|
||||
@ -37,14 +37,10 @@ Source: %{tar_version}.tar.xz
|
||||
Source1: baselibs.conf
|
||||
# PATCH-FIX-OPENSUSE
|
||||
Patch1: 0001-Revert-Bump-version.patch
|
||||
# PATCH-FIX-UPSTREAM https://codereview.qt-project.org/c/qt/qtwayland/+/393273
|
||||
Patch2: 0001-Client-Remove-mWaitingForUpdateDelivery.patch
|
||||
# https://codereview.qt-project.org/c/qt/qtwayland/+/393828/1
|
||||
Patch3: 0002-Guard-mResizeDirty-by-the-correctMutex.patch
|
||||
# https://codereview.qt-project.org/c/qt/qtwayland/+/393826/1
|
||||
Patch4: 0003-Fix-up-mutexes-for-frame-callbacks.patch
|
||||
# To be sent upstream
|
||||
Patch10: 0001-Use-proper-dependencies-in-compile-tests.patch
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: libqt5-qtbase-private-headers-devel >= %{real_version}
|
||||
BuildRequires: libqt5-qtdeclarative-private-headers-devel >= %{real_version}
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aaf9f796ebb53d93f871e25097797360ab185614ae7ee88b9aa50ecd2b36c369
|
||||
size 4691468
|
3
qtwayland-everywhere-src-5.15.2+kde54.obscpio
Normal file
3
qtwayland-everywhere-src-5.15.2+kde54.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6a85a954605f8d6677f8011750fb5f8f024e1c7b1de9d1e53d5dab2d769ddaf4
|
||||
size 4691980
|
@ -1,5 +1,4 @@
|
||||
name: qtwayland-everywhere-src
|
||||
version: 5.15.2+kde44
|
||||
mtime: 1642608988
|
||||
commit: 4644d51f4b52e83fc1b4d02b380d80d9d57e76fa
|
||||
|
||||
version: 5.15.2+kde54
|
||||
mtime: 1645543848
|
||||
commit: 8f0c9169310344c8f179311bae446239cdb61f68
|
||||
|
Loading…
Reference in New Issue
Block a user