Accepting request 956809 from home:Vogtinator:qt5.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/956809
OBS-URL: https://build.opensuse.org/package/show/KDE:Qt:5.15/libqt5-qtwayland?expand=0&rev=21
This commit is contained in:
Antonio Larrosa 2022-02-23 08:08:58 +00:00 committed by Git OBS Bridge
parent d825f60c24
commit 90b5b201c1
8 changed files with 26 additions and 210 deletions

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aaf9f796ebb53d93f871e25097797360ab185614ae7ee88b9aa50ecd2b36c369
size 4691468

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6a85a954605f8d6677f8011750fb5f8f024e1c7b1de9d1e53d5dab2d769ddaf4
size 4691980

View File

@ -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