mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
Reference in New Issue
Block a user