diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2022-02-09 17:03:33 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2022-02-14 22:33:28 +0100 |
commit | c8b9160751c80e74fe1b4dbd232641005fee3601 (patch) | |
tree | 170f09a3bdf666ad89cf26197ce3307d35fffe54 /dev-qt/qtwayland | |
parent | sys-libs/binutils-libs: Stabilize 2.37_p1-r2 amd64, #833210 (diff) | |
download | gentoo-c8b9160751c80e74fe1b4dbd232641005fee3601.tar.gz gentoo-c8b9160751c80e74fe1b4dbd232641005fee3601.tar.bz2 gentoo-c8b9160751c80e74fe1b4dbd232641005fee3601.zip |
dev-qt/qtwayland: 5.15.2-r20 version bump to KDE 9f66cd37
Weng Xuetian (2):
Cursor position == 0 should still show the cursor
Update the preedit styling mapping
Dropping one upstreamed patch, adding a newly pending one:
- client: Simplify round trip behavior
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-qt/qtwayland')
-rw-r--r-- | dev-qt/qtwayland/Manifest | 2 | ||||
-rw-r--r-- | dev-qt/qtwayland/files/qtwayland-5.15.2-remove-mWaitingForUpdateDelivery.patch | 79 | ||||
-rw-r--r-- | dev-qt/qtwayland/files/qtwayland-5.15.2-simplify-roundtrip-behavior.patch | 82 | ||||
-rw-r--r-- | dev-qt/qtwayland/qtwayland-5.15.2-r20.ebuild (renamed from dev-qt/qtwayland/qtwayland-5.15.2-r19.ebuild) | 4 |
4 files changed, 85 insertions, 82 deletions
diff --git a/dev-qt/qtwayland/Manifest b/dev-qt/qtwayland/Manifest index 9a2c4f0dea39..b81ab4d5cfd4 100644 --- a/dev-qt/qtwayland/Manifest +++ b/dev-qt/qtwayland/Manifest @@ -1,2 +1,2 @@ DIST qtwayland-5.15.2-867540b9.tar.gz 830061 BLAKE2B b831288d6a3e671631b4df00eb1edb72e35128f3ed5a73983b3e15193f554fddcd0337deb832d44b795d2e37f0601fe35b8b0fcb5986bcc44154d172f3a54193 SHA512 b834802811d9f65559ef5e7468189b53c666e390aa09edeb490e5fee2dece13082b11da0f8b5924b89f7dc8e1eba375a485940f4dfbf0445f3d1e96033e33f24 -DIST qtwayland-5.15.2-ce2caf49.tar.gz 831808 BLAKE2B af7006f3ce5bb262710c5405f20107239140afe5c7f2b8b10ac834b7e41076a274adbf34152cba3fed19538f653f70faffb1255e622b8607d34f5a4695603461 SHA512 8eaf58da68311b072f5d0192444dafc5819971807682bb85f2316c10e4e64a735a95b05a0a5c1e4a66542702281deb364a6470f6bd0ea042818edb5a9b0396fb +DIST qtwayland-5.15.2-9f66cd37.tar.gz 831912 BLAKE2B 6dd0d695ef70e453df6400b5eb9f21c585d65fcb9ede94c7f23bd6d2a65afcdaf51d400a703e507f70150213280be24aa3f4ea175c00a9ebf7a78a6752b5f1c9 SHA512 586fe1f87736ba7de67631575778cc3c1f36a76e2b97681bbb4465078a2b39e9bae5c11a552f662385298869ba31d203ef05b9a0bb40e77e242d829d3d82041b diff --git a/dev-qt/qtwayland/files/qtwayland-5.15.2-remove-mWaitingForUpdateDelivery.patch b/dev-qt/qtwayland/files/qtwayland-5.15.2-remove-mWaitingForUpdateDelivery.patch deleted file mode 100644 index a76b15d39cac..000000000000 --- a/dev-qt/qtwayland/files/qtwayland-5.15.2-remove-mWaitingForUpdateDelivery.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 214f7ab9d3384a4123f14d9f6cd0205cf0aaa794 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] 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 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 -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit feb1a5c207c13d0bf87c0d8ad039279dbf8cee9e) ---- - 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 4c5711a0..949374b1 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -648,23 +648,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; --- -GitLab - diff --git a/dev-qt/qtwayland/files/qtwayland-5.15.2-simplify-roundtrip-behavior.patch b/dev-qt/qtwayland/files/qtwayland-5.15.2-simplify-roundtrip-behavior.patch new file mode 100644 index 000000000000..2b210e849210 --- /dev/null +++ b/dev-qt/qtwayland/files/qtwayland-5.15.2-simplify-roundtrip-behavior.patch @@ -0,0 +1,82 @@ +From d6a6b727832819d118199f7016c2c401663ee370 Mon Sep 17 00:00:00 2001 +From: David Edmundson <davidedmundson@kde.org> +Date: Wed, 9 Feb 2022 17:20:48 +0000 +Subject: [PATCH] client: Simplify round trip behavior + +The custom event queue was removed in +302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not +being able to use the inbuilt round trip method no longer applies. + +This fixes a real world problem. Use of a blocking round trip should not +process non wayland events. Doing so can lead to misbehaviour client +side as things happen out of order. The move to the event thread created +several regressions as we now get events before the QGuiApplication is +fully constructed. + +Change-Id: I650481f49a47ed1a9778c7e1bc3c48db6e8f0031 +Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 62646d9122845d7bd9104b610478cebde3e769c7) +--- + src/client/qwaylanddisplay.cpp | 43 +--------------------------------- + 1 file changed, 1 insertion(+), 42 deletions(-) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index 6f1bada5..86045a35 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -611,50 +611,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec() + return 0; + } + +-static void +-sync_callback(void *data, struct wl_callback *callback, uint32_t serial) +-{ +- Q_UNUSED(serial) +- bool *done = static_cast<bool *>(data); +- +- *done = true; +- +- // If the wl_callback done event is received after the condition check in the while loop in +- // forceRoundTrip(), but before the call to processEvents, the call to processEvents may block +- // forever if no more events are posted (eventhough the callback is handled in response to the +- // aboutToBlock signal). Hence, we wake up the event dispatcher so forceRoundTrip may return. +- // (QTBUG-64696) +- if (auto *dispatcher = QThread::currentThread()->eventDispatcher()) +- dispatcher->wakeUp(); +- +- wl_callback_destroy(callback); +-} +- +-static const struct wl_callback_listener sync_listener = { +- sync_callback +-}; +- + void QWaylandDisplay::forceRoundTrip() + { +- // wl_display_roundtrip() works on the main queue only, +- // but we use a separate one, so basically reimplement it here +- int ret = 0; +- bool done = false; +- wl_callback *callback = wl_display_sync(mDisplay); +- wl_callback_add_listener(callback, &sync_listener, &done); +- flushRequests(); +- if (QThread::currentThread()->eventDispatcher()) { +- while (!done && ret >= 0) { +- QThread::currentThread()->eventDispatcher()->processEvents(QEventLoop::WaitForMoreEvents); +- ret = wl_display_dispatch_pending(mDisplay); +- } +- } else { +- while (!done && ret >= 0) +- ret = wl_display_dispatch(mDisplay); +- } +- +- if (ret == -1 && !done) +- wl_callback_destroy(callback); ++ wl_display_roundtrip(mDisplay); + } + + bool QWaylandDisplay::supportsWindowDecoration() const +-- +GitLab + diff --git a/dev-qt/qtwayland/qtwayland-5.15.2-r19.ebuild b/dev-qt/qtwayland/qtwayland-5.15.2-r20.ebuild index 2761a297bc7b..a4798f13a60b 100644 --- a/dev-qt/qtwayland/qtwayland-5.15.2-r19.ebuild +++ b/dev-qt/qtwayland/qtwayland-5.15.2-r20.ebuild @@ -3,7 +3,7 @@ EAPI=8 -KDE_ORG_COMMIT=ce2caf493a1343fbd9f8e4c85baf6a61c057f242 +KDE_ORG_COMMIT=9f66cd3784421ee5dc6538630ade0cf215f656aa inherit qt5-build DESCRIPTION="Wayland platform plugin for Qt" @@ -36,7 +36,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}/${P}-QTBUG-90037-QTBUG-91264.patch" "${FILESDIR}/${P}-fix-qmake-deps.patch" - "${FILESDIR}/${P}-remove-mWaitingForUpdateDelivery.patch" + "${FILESDIR}/${P}-simplify-roundtrip-behavior.patch" "${FILESDIR}/${P}-guard-mResizeDirty.patch" "${FILESDIR}/${P}-fixup-mutexes.patch" ) |