5.15.11
This commit is contained in:
parent
4c11bfec54
commit
2ff721c9b7
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,3 +18,4 @@
|
||||
/qtwayland-everywhere-opensource-src-5.15.8.tar.xz
|
||||
/qtwayland-everywhere-opensource-src-5.15.9.tar.xz
|
||||
/qtwayland-everywhere-opensource-src-5.15.10.tar.xz
|
||||
/qtwayland-everywhere-opensource-src-5.15.11.tar.xz
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d7ea7592e47828d2f806bb372db705a1f3b9f948 Mon Sep 17 00:00:00 2001
|
||||
From ec085b69839e85b4543afb2009d519da21ffd782 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Wed, 5 May 2021 20:49:26 +0300
|
||||
Subject: [PATCH 01/51] Client: Announce an output after receiving more
|
||||
Subject: [PATCH 01/59] Client: Announce an output after receiving more
|
||||
complete state
|
||||
|
||||
Output initialization is not atomic, meaning that the compositor may
|
||||
@ -142,5 +142,5 @@ index df1c94f2..050cfdc0 100644
|
||||
|
||||
#if QT_CONFIG(cursor)
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e08bb6ed336b4bd2f3e85b0d2f43f1b49cdaf7b0 Mon Sep 17 00:00:00 2001
|
||||
From 09b0405d8dd413c34ab03b3c9a288f3e11765ec1 Mon Sep 17 00:00:00 2001
|
||||
From: Jaeyoon Jung <jaeyoon.jung@lge.com>
|
||||
Date: Mon, 15 Feb 2021 08:31:06 +0900
|
||||
Subject: [PATCH 02/51] Fix issue with repeated window size changes
|
||||
Subject: [PATCH 02/59] Fix issue with repeated window size changes
|
||||
|
||||
Check if the new window size is different from the size requested
|
||||
previously before calling wl_egl_window_resize. It addresses the issue
|
||||
@ -20,7 +20,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
index 57d4eb6b..13dd747a 100644
|
||||
index e00c28c3..64f7caeb 100644
|
||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
@@ -122,14 +122,16 @@ void QWaylandEglWindow::updateSurface(bool create)
|
||||
@ -42,10 +42,10 @@ index 57d4eb6b..13dd747a 100644
|
||||
|
||||
if (!m_eglSurface && m_waylandEglWindow && create) {
|
||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||
index 6c8f04ec..94c56325 100644
|
||||
index 2fccbcea..ad1e5ee9 100644
|
||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||
@@ -87,6 +87,7 @@ private:
|
||||
@@ -85,6 +85,7 @@ private:
|
||||
mutable QOpenGLFramebufferObject *m_contentFBO = nullptr;
|
||||
|
||||
QSurfaceFormat m_format;
|
||||
@ -54,5 +54,5 @@ index 6c8f04ec..94c56325 100644
|
||||
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 40965d23e170cb02b184cda5962352acd415542e Mon Sep 17 00:00:00 2001
|
||||
From 1cdb21c2e739aabb6793cf90029e76921b67d975 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Tue, 9 Feb 2021 16:09:21 +0000
|
||||
Subject: [PATCH 03/51] Client: Connect drags being accepted to updating the
|
||||
Subject: [PATCH 03/59] Client: Connect drags being accepted to updating the
|
||||
source drag icon
|
||||
|
||||
Currently in a multi-process drag and drop when the other client accepts
|
||||
@ -23,7 +23,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||
index 7e2e3308..bbd2d568 100644
|
||||
index 1e2db786..0124b890 100644
|
||||
--- a/src/client/qwaylanddatadevice.cpp
|
||||
+++ b/src/client/qwaylanddatadevice.cpp
|
||||
@@ -124,6 +124,7 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
|
||||
@ -35,5 +35,5 @@ index 7e2e3308..bbd2d568 100644
|
||||
start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
|
||||
return true;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1474fd12afbc6c9850872801c70252c425d4280b Mon Sep 17 00:00:00 2001
|
||||
From 4bce11a39578ed43d7efd61e2140704e84386cb9 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Fri, 14 May 2021 13:23:24 +0100
|
||||
Subject: [PATCH 04/51] Client: Disconnect registry listener on destruction
|
||||
Subject: [PATCH 04/59] Client: Disconnect registry listener on destruction
|
||||
|
||||
If a display outlives a QWaylandClientExtension and a new global is
|
||||
announced we end up delivering an event to a now deleted extension which
|
||||
@ -15,7 +15,7 @@ Change-Id: Idc0de40be61a2f7627ab4963e1fe29b22fbf3f04
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
|
||||
index 125b1e19..797b06fe 100644
|
||||
index 966096a8..2dc61b77 100644
|
||||
--- a/src/client/global/qwaylandclientextension.cpp
|
||||
+++ b/src/client/global/qwaylandclientextension.cpp
|
||||
@@ -88,6 +88,13 @@ QWaylandClientExtension::QWaylandClientExtension(const int ver)
|
||||
@ -45,5 +45,5 @@ index 98272e57..5bd28398 100644
|
||||
QtWaylandClient::QWaylandIntegration *integration() const;
|
||||
int version() const;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f5e0a5773064636b6802a4f8f7fb0cb3cec46a68 Mon Sep 17 00:00:00 2001
|
||||
From 668ebf5792f1eb0910245465e5407fcab86ce98b Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Mon, 3 May 2021 23:01:53 +0100
|
||||
Subject: [PATCH 05/51] Client: Set XdgShell size hints before the first commit
|
||||
Subject: [PATCH 05/59] Client: Set XdgShell size hints before the first commit
|
||||
|
||||
propagateSizeHints is only called in QWindow we have platform window and
|
||||
minimumSizeHint is then sent. We also need to send existing hints when
|
||||
@ -20,7 +20,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
2 files changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index fa9c01aa..c3d2d3ea 100644
|
||||
index 94ea573e..699a75eb 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -105,8 +105,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure()
|
||||
@ -54,5 +54,5 @@ index 2277bbb8..2fdd0a7c 100644
|
||||
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100));
|
||||
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000));
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 27108c290bf0f12bb032827e5c01cc94e330d547 Mon Sep 17 00:00:00 2001
|
||||
From bc07f9d8083f9f731fefb0f1180a18d2172eb57d Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Mon, 14 Jun 2021 12:45:37 +0100
|
||||
Subject: [PATCH 06/51] Fix build
|
||||
Subject: [PATCH 06/59] Fix build
|
||||
|
||||
1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't
|
||||
backport.
|
||||
@ -14,7 +14,7 @@ d6ac8cf6.
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
|
||||
index 797b06fe..edccfe63 100644
|
||||
index 2dc61b77..36609c08 100644
|
||||
--- a/src/client/global/qwaylandclientextension.cpp
|
||||
+++ b/src/client/global/qwaylandclientextension.cpp
|
||||
@@ -74,7 +74,10 @@ void QWaylandClientExtensionPrivate::handleRegistryGlobal(void *data, ::wl_regis
|
||||
@ -42,5 +42,5 @@ index 69cc46a0..9091efbe 100644
|
||||
|
||||
class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 07a83b80d7c1b90146d9c6b6339bf4e730ca50b9 Mon Sep 17 00:00:00 2001
|
||||
From cfbb11da7f7ecbf6372967f01015d269d832dccf Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Liang <zhanglianga@uniontech.com>
|
||||
Date: Mon, 1 Feb 2021 19:29:43 +0800
|
||||
Subject: [PATCH 07/51] Fix: remove listener
|
||||
Subject: [PATCH 07/59] Fix: remove listener
|
||||
|
||||
Add the operation for removing the listener form listener list
|
||||
|
||||
@ -13,7 +13,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 78e387bc..280e63bd 100644
|
||||
index 8a6d5db1..16f8ca1a 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -456,9 +456,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data)
|
||||
@ -29,5 +29,5 @@ index 78e387bc..280e63bd 100644
|
||||
|
||||
uint32_t QWaylandDisplay::currentTimeMillisec()
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 218aa4f1fb91a1dfe892111a45376091dd34ec06 Mon Sep 17 00:00:00 2001
|
||||
From 25218285ed45d32a93d10e354975ccbbd98cdb77 Mon Sep 17 00:00:00 2001
|
||||
From: David Redondo <qt@david-redondo.de>
|
||||
Date: Wed, 26 May 2021 14:49:40 +0200
|
||||
Subject: [PATCH 08/51] Hook up queryKeyboardModifers
|
||||
Subject: [PATCH 08/59] Hook up queryKeyboardModifers
|
||||
|
||||
Can be useful when upon enter a modifiers event is received but no key
|
||||
event so no QKeyEvent is generated.
|
||||
@ -51,5 +51,5 @@ index ff70ae25..73b80658 100644
|
||||
|
||||
QStringList themeNames() const override;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From cedb1d0987486f0162d8a10defb3705f5e3b3a45 Mon Sep 17 00:00:00 2001
|
||||
From d9d5f69f5619dbaa40ca9b97981721467424947b Mon Sep 17 00:00:00 2001
|
||||
From: Jan Blackquill <uhhadd@gmail.com>
|
||||
Date: Tue, 24 Aug 2021 14:36:34 -0400
|
||||
Subject: [PATCH 09/51] Correctly detect if image format is supported by
|
||||
Subject: [PATCH 09/59] Correctly detect if image format is supported by
|
||||
QImageWriter
|
||||
|
||||
The code queries potential image formats by stripping a mimetype of its
|
||||
@ -51,7 +51,7 @@ Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp
|
||||
index a5fdd34d..051a91dc 100644
|
||||
index c5266ab3..e2fe1928 100644
|
||||
--- a/src/shared/qwaylandmimehelper.cpp
|
||||
+++ b/src/shared/qwaylandmimehelper.cpp
|
||||
@@ -60,7 +60,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &
|
||||
@ -64,5 +64,5 @@ index a5fdd34d..051a91dc 100644
|
||||
fmt = imgFmt;
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 39f76fba46ff2a6bd4aca6c2abea501d56bed62e Mon Sep 17 00:00:00 2001
|
||||
From d2992d985306a8bec6298c5238a85ade1ae0c611 Mon Sep 17 00:00:00 2001
|
||||
From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
|
||||
Date: Thu, 27 May 2021 19:55:04 -0300
|
||||
Subject: [PATCH 10/51] Client: Don't always recreate frame callbacks
|
||||
Subject: [PATCH 10/59] Client: Don't always recreate frame callbacks
|
||||
|
||||
The main QWaylandWindow method that is executed when handling updates is
|
||||
QWaylandWindow::handleUpdate(). This method always, unconditionally queues
|
||||
@ -38,10 +38,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index df2dcdaa..23816895 100644
|
||||
index 5a390434..2dce02f0 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -1192,6 +1192,10 @@ void QWaylandWindow::requestUpdate()
|
||||
@@ -1196,6 +1196,10 @@ void QWaylandWindow::requestUpdate()
|
||||
void QWaylandWindow::handleUpdate()
|
||||
{
|
||||
qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread();
|
||||
@ -73,5 +73,5 @@ index 2fdd0a7c..e2593314 100644
|
||||
|
||||
void tst_xdgshell::popup()
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From c9cd53f50c71af26278589b1477c8d800c776ac1 Mon Sep 17 00:00:00 2001
|
||||
From cc3fbf3c1d36d5d997082927f895a88ea6d17474 Mon Sep 17 00:00:00 2001
|
||||
From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
|
||||
Date: Thu, 27 May 2021 20:02:53 -0300
|
||||
Subject: [PATCH 11/51] Client: Always destroy frame callback in the actual
|
||||
Subject: [PATCH 11/59] Client: Always destroy frame callback in the actual
|
||||
callback
|
||||
|
||||
It's good hygiene to destroy all frame callbacks. Destroy the
|
||||
@ -23,7 +23,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 23816895..d3f28d68 100644
|
||||
index 2dce02f0..c532b44a 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -635,9 +635,13 @@ void QWaylandWindow::commit()
|
||||
@ -41,7 +41,7 @@ index 23816895..d3f28d68 100644
|
||||
window->handleFrameCallback();
|
||||
}
|
||||
};
|
||||
@@ -1201,11 +1205,6 @@ void QWaylandWindow::handleUpdate()
|
||||
@@ -1205,11 +1209,6 @@ void QWaylandWindow::handleUpdate()
|
||||
if (!mSurface)
|
||||
return;
|
||||
|
||||
@ -54,5 +54,5 @@ index 23816895..d3f28d68 100644
|
||||
struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object()));
|
||||
wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue);
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 398c131a02d48fc9f538951f08caa93dccd03a1a Mon Sep 17 00:00:00 2001
|
||||
From 2a68cb54a8a07a59e140fe8acd966ca6bb485afd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
|
||||
Date: Wed, 18 Aug 2021 18:28:20 +0200
|
||||
Subject: [PATCH 12/51] Wayland client: use wl_keyboard to determine active
|
||||
Subject: [PATCH 12/59] Wayland client: use wl_keyboard to determine active
|
||||
state
|
||||
|
||||
Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay
|
||||
@ -46,7 +46,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
13 files changed, 39 insertions(+), 66 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 280e63bd..1568052e 100644
|
||||
index 16f8ca1a..d1ca0274 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -579,14 +579,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic
|
||||
@ -95,7 +95,7 @@ index 1bad8b67..15104d65 100644
|
||||
void blockingReadEvents();
|
||||
void flushRequests();
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index d3f28d68..b363c352 100644
|
||||
index c532b44a..fdffe584 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -96,7 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
|
||||
@ -115,7 +115,7 @@ index d3f28d68..b363c352 100644
|
||||
}
|
||||
|
||||
QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface)
|
||||
@@ -1105,10 +1106,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab)
|
||||
@@ -1109,10 +1110,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab)
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ index 261f8cbb..c1bcd5c6 100644
|
||||
private:
|
||||
QScopedPointer<QWaylandXdgShellV6> m_xdgShell;
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index c3d2d3ea..9a362b74 100644
|
||||
index 699a75eb..888bab77 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface)
|
||||
@ -337,5 +337,5 @@ index e2593314..73d1eb9c 100644
|
||||
const QSize screenSize(640, 480);
|
||||
const uint maximizedSerial = exec([=] {
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4cbf15b311fd9b00b28205e474c4b31a92ab819d Mon Sep 17 00:00:00 2001
|
||||
From 888f3c6eca8e807a3ca870067e080349a76a5703 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
Date: Fri, 16 Jul 2021 13:00:03 +0200
|
||||
Subject: [PATCH 13/51] Client: do not empty clipboard when a new popup/window
|
||||
Subject: [PATCH 13/59] Client: do not empty clipboard when a new popup/window
|
||||
is opened
|
||||
|
||||
If we open a new popup or a window within the same app we have to avoid
|
||||
@ -21,7 +21,7 @@ Cherry-pick: 1e57ebd501cfc2255300392cd4565cd034efeed8
|
||||
2 files changed, 13 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 1568052e..aa8808e9 100644
|
||||
index d1ca0274..7560bf41 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -601,6 +601,19 @@ void QWaylandDisplay::handleWaylandSync()
|
||||
@ -45,7 +45,7 @@ index 1568052e..aa8808e9 100644
|
||||
|
||||
const wl_callback_listener QWaylandDisplay::syncCallbackListener = {
|
||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||
index e931d1f5..5d704795 100644
|
||||
index 08e8adb8..e1111124 100644
|
||||
--- a/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/src/client/qwaylandinputdevice.cpp
|
||||
@@ -1304,14 +1304,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed()
|
||||
@ -64,5 +64,5 @@ index e931d1f5..5d704795 100644
|
||||
mRepeatTimer.stop();
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 52f362f8dfd27a65cdee945ba923ae30521ab922 Mon Sep 17 00:00:00 2001
|
||||
From 23c698917e0fdac0d9519334b7c375cf226e36c7 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Tue, 16 Feb 2021 09:51:47 +0000
|
||||
Subject: [PATCH 14/51] Client: Implement DataDeviceV3
|
||||
Subject: [PATCH 14/59] Client: Implement DataDeviceV3
|
||||
|
||||
DataDeviceV2 fixes a leak of DataDevice resources.
|
||||
|
||||
@ -36,7 +36,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
12 files changed, 153 insertions(+), 46 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||
index bbd2d568..fbb5aa91 100644
|
||||
index 0124b890..d154c695 100644
|
||||
--- a/src/client/qwaylanddatadevice.cpp
|
||||
+++ b/src/client/qwaylanddatadevice.cpp
|
||||
@@ -72,6 +72,8 @@ QWaylandDataDevice::QWaylandDataDevice(QWaylandDataDeviceManager *manager, QWayl
|
||||
@ -340,7 +340,7 @@ index 9cf1483c..6f667398 100644
|
||||
|
||||
|
||||
diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
|
||||
index f45122fb..5599cbd4 100644
|
||||
index 9b17cdfa..9610366d 100644
|
||||
--- a/src/client/qwaylanddatasource.cpp
|
||||
+++ b/src/client/qwaylanddatasource.cpp
|
||||
@@ -101,7 +101,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd)
|
||||
@ -378,10 +378,10 @@ index f45122fb..5599cbd4 100644
|
||||
|
||||
}
|
||||
diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
|
||||
index 25afff79..96f07bc3 100644
|
||||
index 3003da1b..b6a9e06b 100644
|
||||
--- a/src/client/qwaylanddatasource_p.h
|
||||
+++ b/src/client/qwaylanddatasource_p.h
|
||||
@@ -77,17 +77,25 @@ public:
|
||||
@@ -77,16 +77,24 @@ public:
|
||||
QMimeData *mimeData() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
@ -401,7 +401,6 @@ index 25afff79..96f07bc3 100644
|
||||
+ void data_source_action(uint32_t action) override;
|
||||
|
||||
private:
|
||||
QWaylandDisplay *m_display = nullptr;
|
||||
QMimeData *m_mime_data = nullptr;
|
||||
+ bool m_accepted = false;
|
||||
+ Qt::DropAction m_dropAction = Qt::IgnoreAction;
|
||||
@ -409,7 +408,7 @@ index 25afff79..96f07bc3 100644
|
||||
|
||||
}
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index aa8808e9..2d298532 100644
|
||||
index 7560bf41..7f28d01c 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -356,7 +356,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
|
||||
@ -509,5 +508,5 @@ index 1568b3b9..067410d0 100644
|
||||
class DataDeviceCompositor : public DefaultCompositor {
|
||||
public:
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b29079669153d7b1894fc13b2cd8c6de1ad5471a Mon Sep 17 00:00:00 2001
|
||||
From bfc5a684b3f8aa38f28267513872376e04bda8b6 Mon Sep 17 00:00:00 2001
|
||||
From: Arjen Hiemstra <ahiemstra@heimr.nl>
|
||||
Date: Thu, 18 Nov 2021 13:05:30 +0100
|
||||
Subject: [PATCH 15/51] Client: Delay deletion of QDrag object until after
|
||||
Subject: [PATCH 15/59] Client: Delay deletion of QDrag object until after
|
||||
we're done with it
|
||||
|
||||
In certain cases, most notably when performing drag and drop operations
|
||||
@ -63,5 +63,5 @@ index 747f0190..46f629ac 100644
|
||||
private:
|
||||
QWaylandDisplay *m_display = nullptr;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From fde475c6e235429e7af64a54b9d81e893c618af7 Mon Sep 17 00:00:00 2001
|
||||
From 4d4eb8e543f688c9d5c9e1083f5e46ddf42b9786 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Sun, 14 Nov 2021 13:54:19 +0000
|
||||
Subject: [PATCH 16/51] Client: Avoid processing of events when showing windows
|
||||
Subject: [PATCH 16/59] Client: Avoid processing of events when showing windows
|
||||
|
||||
The only time we want to dispatch events from the wayland socket is when
|
||||
the application is waiting for external events. Doing so at any other
|
||||
@ -22,7 +22,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index b363c352..b98435ed 100644
|
||||
index fdffe584..83a394c4 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -437,7 +437,6 @@ void QWaylandWindow::setVisible(bool visible)
|
||||
@ -34,5 +34,5 @@ index b363c352..b98435ed 100644
|
||||
setGeometry(windowGeometry());
|
||||
// Don't flush the events here, or else the newly visible window may start drawing, but since
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f22c2639663d9b9010fd79a5873e11a716106b65 Mon Sep 17 00:00:00 2001
|
||||
From 359bc440082f7876a51c12a0db4e9399006726f2 Mon Sep 17 00:00:00 2001
|
||||
From: Elvis Lee <kwangwoong.lee@lge.com>
|
||||
Date: Thu, 18 Feb 2021 15:45:49 +0900
|
||||
Subject: [PATCH 17/51] Handle registry_global out of constructor
|
||||
Subject: [PATCH 17/59] Handle registry_global out of constructor
|
||||
|
||||
Factory functions in QWaylandDisplay::registry_global() can be overridden.
|
||||
Later, other classes instantiated in the registry_global can support
|
||||
@ -17,7 +17,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
3 files changed, 17 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 2d298532..97fb8cbe 100644
|
||||
index 7f28d01c..c2482030 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -160,13 +160,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
|
||||
@ -81,5 +81,5 @@ index cd8569b1..8afecb31 100644
|
||||
mDisplay->ensureScreen();
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 192b3af086ecca973109be4e169a601af434239a Mon Sep 17 00:00:00 2001
|
||||
From 3430f8812afa51b5b6fb139361b45fbfe6cff5d0 Mon Sep 17 00:00:00 2001
|
||||
From: Elvis Lee <kwangwoong.lee@lge.com>
|
||||
Date: Wed, 17 Mar 2021 16:31:10 +0900
|
||||
Subject: [PATCH 18/51] Connect flushRequest after forceRoundTrip
|
||||
Subject: [PATCH 18/59] Connect flushRequest after forceRoundTrip
|
||||
|
||||
If flushRequest is connected with aboutToBlock, the flushRequest
|
||||
may consumes all events so that processEvents might be blocked in forceRoundTrip.
|
||||
@ -43,5 +43,5 @@ index 8afecb31..661cea53 100644
|
||||
mDisplay->ensureScreen();
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 965fc31b57176d7d913d90465a857c285abd0a59 Mon Sep 17 00:00:00 2001
|
||||
From 1fe2895d2e3ccae0ae0abb2760e1714ac296c3ea Mon Sep 17 00:00:00 2001
|
||||
From: Adrien Faveraux <af@brain-networks.fr>
|
||||
Date: Fri, 26 Nov 2021 09:18:58 +0100
|
||||
Subject: [PATCH 19/51] Move the wayland socket polling to a separate event
|
||||
Subject: [PATCH 19/59] Move the wayland socket polling to a separate event
|
||||
thread
|
||||
|
||||
New event threads is introduced which calls poll() on the wayland fd,
|
||||
@ -32,7 +32,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
5 files changed, 255 insertions(+), 108 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 97fb8cbe..ebcdbd22 100644
|
||||
index c2482030..c38f6f82 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -87,10 +87,203 @@
|
||||
@ -371,13 +371,15 @@ index 97fb8cbe..ebcdbd22 100644
|
||||
}
|
||||
|
||||
QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const
|
||||
@@ -678,4 +816,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p
|
||||
@@ -678,6 +816,8 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p
|
||||
|
||||
} // namespace QtWaylandClient
|
||||
|
||||
+#include "qwaylanddisplay.moc"
|
||||
+
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "moc_qwaylanddisplay_p.cpp"
|
||||
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
|
||||
index 49820255..cf91b924 100644
|
||||
--- a/src/client/qwaylanddisplay_p.h
|
||||
@ -458,7 +460,7 @@ index 661cea53..fbf00c6b 100644
|
||||
// Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
|
||||
mDisplay->initialize();
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index b98435ed..292dd023 100644
|
||||
index 83a394c4..3d9741d2 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
||||
@ -506,7 +508,7 @@ index b98435ed..292dd023 100644
|
||||
|
||||
if (mWaitingForFrameCallback) {
|
||||
qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed";
|
||||
@@ -1179,8 +1182,11 @@ void QWaylandWindow::requestUpdate()
|
||||
@@ -1183,8 +1186,11 @@ void QWaylandWindow::requestUpdate()
|
||||
Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA
|
||||
|
||||
// If we have a frame callback all is good and will be taken care of there
|
||||
@ -520,7 +522,7 @@ index b98435ed..292dd023 100644
|
||||
|
||||
// If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet
|
||||
// This is a somewhat redundant behavior and might indicate a bug in the calling code, so log
|
||||
@@ -1193,7 +1199,12 @@ void QWaylandWindow::requestUpdate()
|
||||
@@ -1197,7 +1203,12 @@ void QWaylandWindow::requestUpdate()
|
||||
// so use invokeMethod to delay the delivery a bit.
|
||||
QMetaObject::invokeMethod(this, [this] {
|
||||
// Things might have changed in the meantime
|
||||
@ -534,7 +536,7 @@ index b98435ed..292dd023 100644
|
||||
deliverUpdateRequest();
|
||||
}, Qt::QueuedConnection);
|
||||
}
|
||||
@@ -1213,9 +1224,10 @@ void QWaylandWindow::handleUpdate()
|
||||
@@ -1217,9 +1228,10 @@ void QWaylandWindow::handleUpdate()
|
||||
if (!mSurface)
|
||||
return;
|
||||
|
||||
@ -547,7 +549,7 @@ index b98435ed..292dd023 100644
|
||||
mFrameCallback = wl_surface_frame(wrappedSurface);
|
||||
wl_proxy_wrapper_destroy(wrappedSurface);
|
||||
wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
|
||||
@@ -1225,6 +1237,8 @@ void QWaylandWindow::handleUpdate()
|
||||
@@ -1229,6 +1241,8 @@ void QWaylandWindow::handleUpdate()
|
||||
// Start a timer for handling the case when the compositor stops sending frame callbacks.
|
||||
if (mFrameCallbackTimeout > 0) {
|
||||
QMetaObject::invokeMethod(this, [this] {
|
||||
@ -570,5 +572,5 @@ index fb3ed606..54ac67a9 100644
|
||||
|
||||
// True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 39f6f824e660c36b2865bf55f9ea609aaa02697e Mon Sep 17 00:00:00 2001
|
||||
From fa1d00f0c46d09187c43e9a133a55e8d3f8b3652 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 20/51] Client: Remove mWaitingForUpdateDelivery
|
||||
Subject: [PATCH 20/59] Client: Remove mWaitingForUpdateDelivery
|
||||
|
||||
Currently, mWaitingForUpdateDelivery is shared between the main thread
|
||||
(doHandleFrameCallback()) and the frame callback event thread
|
||||
@ -23,7 +23,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
2 files changed, 12 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 292dd023..de5af1bd 100644
|
||||
index 3d9741d2..afc9c137 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -651,23 +651,18 @@ void QWaylandWindow::handleFrameCallback()
|
||||
@ -75,5 +75,5 @@ index 54ac67a9..cf7ce879 100644
|
||||
QElapsedTimer mFrameCallbackElapsedTimer;
|
||||
struct ::wl_callback *mFrameCallback = nullptr;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 89b396cbef7c8fb7041d3a13d952d468c5c57e56 Mon Sep 17 00:00:00 2001
|
||||
From 24228d70a20ddd13f82a798522c397fb2ec65038 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Wed, 9 Feb 2022 17:20:48 +0000
|
||||
Subject: [PATCH 21/51] client: Simplify round trip behavior
|
||||
Subject: [PATCH 21/59] client: Simplify round trip behavior
|
||||
|
||||
The custom event queue was removed in
|
||||
302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not
|
||||
@ -22,7 +22,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
1 file changed, 1 insertion(+), 42 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index ebcdbd22..d371ffec 100644
|
||||
index c38f6f82..b8da02b3 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -615,50 +615,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec()
|
||||
@ -78,5 +78,5 @@ index ebcdbd22..d371ffec 100644
|
||||
|
||||
bool QWaylandDisplay::supportsWindowDecoration() const
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0cf12729a90380d3ef11efebfbfa9458c397d592 Mon Sep 17 00:00:00 2001
|
||||
From a65677be1d27d82cb4dbc2539731c59e87750d34 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Sat, 19 Feb 2022 17:01:04 +0200
|
||||
Subject: [PATCH 22/51] Client: Fix opaque region setter
|
||||
Subject: [PATCH 22/59] Client: Fix opaque region setter
|
||||
|
||||
The rect is in the global coordinate system, while the opaque region
|
||||
must be in the surface local coordinate system.
|
||||
@ -14,7 +14,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index de5af1bd..69319228 100644
|
||||
index afc9c137..2704e938 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -372,7 +372,7 @@ void QWaylandWindow::setGeometry(const QRect &rect)
|
||||
@ -27,5 +27,5 @@ index de5af1bd..69319228 100644
|
||||
|
||||
void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset)
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1ab149c13af4806ef950487e2d9db8a937645791 Mon Sep 17 00:00:00 2001
|
||||
From 74b040b6ab20bdad4e251db621e397e0dbbc8efc 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 23/51] Use proper dependencies in compile tests
|
||||
Subject: [PATCH 23/59] 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").
|
||||
@ -122,5 +122,5 @@ index bcfd5215..da95d07b 100644
|
||||
},
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 16d52e9ad900a25a02ff4eae43cc7d7e43dbad8a Mon Sep 17 00:00:00 2001
|
||||
From 1e7ae6005c5bacc1b25648c1a920354547b77e23 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Olav Tvete <paul.tvete@qt.io>
|
||||
Date: Tue, 15 Mar 2022 15:59:15 +0100
|
||||
Subject: [PATCH 24/51] Revert "Client: Remove mWaitingForUpdateDelivery"
|
||||
Subject: [PATCH 24/59] Revert "Client: Remove mWaitingForUpdateDelivery"
|
||||
|
||||
The reverted commit introduces a severe performance regression
|
||||
when a client window is resized while a QtQuick renderthread
|
||||
@ -18,7 +18,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
2 files changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 69319228..a87e11aa 100644
|
||||
index 2704e938..ff3690be 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -658,11 +658,17 @@ void QWaylandWindow::handleFrameCallback()
|
||||
@ -55,5 +55,5 @@ index cf7ce879..54ac67a9 100644
|
||||
QElapsedTimer mFrameCallbackElapsedTimer;
|
||||
struct ::wl_callback *mFrameCallback = nullptr;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2a7884f0d51d4da20e675640b8d987004c9d77c5 Mon Sep 17 00:00:00 2001
|
||||
From 6c1ce5358f5c2bc06d796300c221f5b78628269b Mon Sep 17 00:00:00 2001
|
||||
From: Paul Olav Tvete <paul.tvete@qt.io>
|
||||
Date: Tue, 15 Mar 2022 16:53:04 +0100
|
||||
Subject: [PATCH 25/51] Fix race condition on mWaitingForUpdateDelivery
|
||||
Subject: [PATCH 25/59] Fix race condition on mWaitingForUpdateDelivery
|
||||
|
||||
Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
@ -11,7 +11,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
2 files changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index a87e11aa..264ca59b 100644
|
||||
index ff3690be..77f82b37 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -652,24 +652,21 @@ void QWaylandWindow::handleFrameCallback()
|
||||
@ -55,5 +55,5 @@ index 54ac67a9..c0a76345 100644
|
||||
QElapsedTimer mFrameCallbackElapsedTimer;
|
||||
struct ::wl_callback *mFrameCallback = nullptr;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From ddfa956f6c39c53249116b979f679b255ed4a596 Mon Sep 17 00:00:00 2001
|
||||
From 1b236eb0325235597e8dda0af22c775b207b3fe9 Mon Sep 17 00:00:00 2001
|
||||
From: Kenneth Topp <ken@bllue.org>
|
||||
Date: Mon, 4 Apr 2022 09:36:21 -0400
|
||||
Subject: [PATCH 26/51] use poll(2) when reading from clipboard
|
||||
Subject: [PATCH 26/59] use poll(2) when reading from clipboard
|
||||
|
||||
change clipboard read away from select(2) call which can fail when
|
||||
an application has large number of open files
|
||||
@ -44,5 +44,5 @@ index c9e158cc..fe0ea8c9 100644
|
||||
} else if (ready == 0) {
|
||||
qWarning("QWaylandDataOffer: timeout reading from pipe");
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b981fc82eb37700353949c72d3fd6d0887c8c107 Mon Sep 17 00:00:00 2001
|
||||
From a6fefb960c7f78db7985c4ac159aabe194ac57cd Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hermann <ulf.hermann@qt.io>
|
||||
Date: Tue, 22 Feb 2022 12:31:08 +0100
|
||||
Subject: [PATCH 27/51] Reduce memory leakage
|
||||
Subject: [PATCH 27/59] Reduce memory leakage
|
||||
|
||||
We need to clean up the event queue when we're done.
|
||||
|
||||
@ -13,7 +13,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index d371ffec..1b9ec699 100644
|
||||
index b8da02b3..4a331a4c 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -381,6 +381,9 @@ QWaylandDisplay::~QWaylandDisplay(void)
|
||||
@ -27,5 +27,5 @@ index d371ffec..1b9ec699 100644
|
||||
|
||||
// Steps which is called just after constructor. This separates registry_global() out of the constructor
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 91afb601e33f492393f7b27a84aa281b55d26de2 Mon Sep 17 00:00:00 2001
|
||||
From: Sam James <sam@gentoo.org>
|
||||
Date: Sat, 18 Jun 2022 17:11:11 +0100
|
||||
Subject: [PATCH 28/51] Fix build with libcxx (missing array include)
|
||||
|
||||
Bug: https://bugs.gentoo.org/833488
|
||||
|
||||
Task-number: QTBUG-104435
|
||||
Change-Id: I06384761a5560b81b675e6c4ae498bb93dcb4f4f
|
||||
Pick-to: 5.15 6.2 6.3 6.4
|
||||
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
|
||||
(cherry picked from commit 5065013b0c2346b5918a2681ae2e58046140e8a7)
|
||||
---
|
||||
.../compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h
|
||||
index 56a710c3..c6a8b6c6 100644
|
||||
--- a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h
|
||||
+++ b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <QtCore/QTextStream>
|
||||
#include <QtGui/QOpenGLTexture>
|
||||
|
||||
+#include <array>
|
||||
+
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 76a2b1919f04152e77740b2d1601df893b8d79ba Mon Sep 17 00:00:00 2001
|
||||
From b308ffb47e635b407a1387ec369e5b3af8554122 Mon Sep 17 00:00:00 2001
|
||||
From: Weng Xuetian <wengxt@gmail.com>
|
||||
Date: Wed, 20 Jul 2022 15:57:40 -0700
|
||||
Subject: [PATCH 29/51] Only close popup in the the hierchary
|
||||
Subject: [PATCH 28/59] Only close popup in the the hierchary
|
||||
|
||||
Imagine following event sequences:
|
||||
1. a tooltip is shown. activePopups = {tooltip}
|
||||
@ -31,7 +31,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
9 files changed, 136 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 264ca59b..9e82c174 100644
|
||||
index 77f82b37..096859e8 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -239,6 +239,7 @@ bool QWaylandWindow::shouldCreateSubSurface() const
|
||||
@ -81,7 +81,7 @@ index 264ca59b..9e82c174 100644
|
||||
reset();
|
||||
}
|
||||
}
|
||||
@@ -1297,6 +1280,20 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
|
||||
@@ -1301,6 +1284,20 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea)
|
||||
wl_region_destroy(region);
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ index 8c371661..151c78e3 100644
|
||||
auto *shell = m_xdgSurface->m_shell;
|
||||
Q_ASSERT(shell->m_topmostGrabbingPopup == this);
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index 9a362b74..ead99989 100644
|
||||
index 888bab77..774c86f8 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -195,12 +195,17 @@ QtWayland::xdg_toplevel::resize_edge QWaylandXdgSurface::Toplevel::convertToResi
|
||||
@ -397,5 +397,5 @@ index 73d1eb9c..747875b4 100644
|
||||
void tst_xdgshell::switchPopups()
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b14eb8fdac3bfa2763a83541a3e4764c0eac153e Mon Sep 17 00:00:00 2001
|
||||
From 7afa1f5d74b0a99c3dcfb4a3be68eee4fa28d7f6 Mon Sep 17 00:00:00 2001
|
||||
From: Roman Genkhel <roman.genhel@lge.com>
|
||||
Date: Thu, 12 Nov 2020 12:21:51 +0300
|
||||
Subject: [PATCH 30/51] Check pointer for null before use in ASSERT
|
||||
Subject: [PATCH 29/59] Check pointer for null before use in ASSERT
|
||||
|
||||
Task-number: QTBUG-85195
|
||||
Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414
|
||||
@ -12,7 +12,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 9e82c174..0a5fc15b 100644
|
||||
index 096859e8..6d49fdfd 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -536,12 +536,12 @@ void QWaylandWindow::sendRecursiveExposeEvent()
|
||||
@ -30,5 +30,5 @@ index 9e82c174..0a5fc15b 100644
|
||||
buffer->setBusy();
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7daab1d4a36463f0904fdde539894609f8b367c1 Mon Sep 17 00:00:00 2001
|
||||
From 892892aca2465d3903ea51120e46b40f0924b00d Mon Sep 17 00:00:00 2001
|
||||
From: Paul Olav Tvete <paul.tvete@qt.io>
|
||||
Date: Mon, 6 Jul 2020 14:37:35 +0200
|
||||
Subject: [PATCH 31/51] Use wl_surface.damage_buffer on the client side
|
||||
Subject: [PATCH 30/59] Use wl_surface.damage_buffer on the client side
|
||||
|
||||
Prefer the newer, recommended damage_buffer when the compositor
|
||||
supports it.
|
||||
@ -20,7 +20,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
6 files changed, 28 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 1b9ec699..6898a881 100644
|
||||
index 4a331a4c..f23c459d 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -493,7 +493,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
|
||||
@ -33,7 +33,7 @@ index 1b9ec699..6898a881 100644
|
||||
} else if (interface == QStringLiteral("wl_shm")) {
|
||||
mShm.reset(new QWaylandShm(this, version, id));
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 0a5fc15b..5b7f9df9 100644
|
||||
index 6d49fdfd..4e5ca97c 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -563,7 +563,11 @@ void QWaylandWindow::damage(const QRect &rect)
|
||||
@ -127,5 +127,5 @@ index 949dc23d..d176837e 100644
|
||||
uint32_t callback) override;
|
||||
void surface_commit(Resource *resource) override;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 152984fa2347a2f02568ac6cd9baba5bd8e4d56d Mon Sep 17 00:00:00 2001
|
||||
From aa577f8dc28d606dab2cf5aea57ac33477cd4294 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Fri, 5 Aug 2022 15:00:31 +0100
|
||||
Subject: [PATCH 32/51] Client: clear focus on touch cancel
|
||||
Subject: [PATCH 31/59] Client: clear focus on touch cancel
|
||||
|
||||
When we get a touch_cancel event all touches should be treated as
|
||||
lifted.
|
||||
@ -23,7 +23,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
4 files changed, 39 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||
index 5d704795..5b880984 100644
|
||||
index e1111124..4d58e9ab 100644
|
||||
--- a/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/src/client/qwaylandinputdevice.cpp
|
||||
@@ -1392,6 +1392,7 @@ void QWaylandInputDevice::Touch::touch_cancel()
|
||||
@ -112,5 +112,5 @@ index 296dbf47..210d8ddb 100644
|
||||
Seat *m_seat = nullptr;
|
||||
};
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 11824dcf4164898a48b0629a072370a195dcc8f1 Mon Sep 17 00:00:00 2001
|
||||
From ad92da9b721ee6faad78a5fcbbe05904455b27ab Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Thu, 3 Feb 2022 19:42:33 +0000
|
||||
Subject: [PATCH 33/51] Guard mResizeDirty by the correctMutex
|
||||
Subject: [PATCH 32/59] Guard mResizeDirty by the correctMutex
|
||||
|
||||
mResizeDirty is used in the GUI thread in setCanResize which can be
|
||||
called from the GUI thread. It is queried and set whilst the resizeLock
|
||||
@ -15,7 +15,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 5b7f9df9..117e3383 100644
|
||||
index 4e5ca97c..f8c71d9c 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -358,11 +358,12 @@ void QWaylandWindow::setGeometry(const QRect &rect)
|
||||
@ -35,5 +35,5 @@ index 5b7f9df9..117e3383 100644
|
||||
}
|
||||
QRect exposeGeometry(QPoint(), geometry().size());
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 8e2f1b74e780b998ab682d9abbd53feeceaa819e Mon Sep 17 00:00:00 2001
|
||||
From 1c9db5444951c613ad4866b282ddeb6de5820e7d Mon Sep 17 00:00:00 2001
|
||||
From: Albert Astals Cid <aacid@kde.org>
|
||||
Date: Fri, 9 Sep 2022 15:37:49 +0200
|
||||
Subject: [PATCH 34/51] Fix compile tests
|
||||
Subject: [PATCH 33/59] Fix compile tests
|
||||
|
||||
Broken in c618467da4c06528537026e2b78f92265bce446f
|
||||
---
|
||||
@ -25,5 +25,5 @@ index b063e0d9..2ea382f1 100644
|
||||
{
|
||||
auto e = window.m_events.takeFirst();
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3f0371cb22e117020e57255858e02f9237210a3b Mon Sep 17 00:00:00 2001
|
||||
From c31476115b3f2f34ffef4ce139640d0619fd274d Mon Sep 17 00:00:00 2001
|
||||
From: Fushan Wen <qydwhotmail@gmail.com>
|
||||
Date: Sun, 18 Sep 2022 18:17:18 +0800
|
||||
Subject: [PATCH 37/51] Call `finishDrag()` in
|
||||
Subject: [PATCH 34/59] Call `finishDrag()` in
|
||||
`QWaylandDataDevice::dragSourceCancelled()`
|
||||
|
||||
Drags can either get finished or cancelled. If a drag is finished
|
||||
@ -22,7 +22,7 @@ BUG: 446111
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||
index fbb5aa91..e3e60ed5 100644
|
||||
index d154c695..9b3c18ac 100644
|
||||
--- a/src/client/qwaylanddatadevice.cpp
|
||||
+++ b/src/client/qwaylanddatadevice.cpp
|
||||
@@ -296,6 +296,7 @@ void QWaylandDataDevice::selectionSourceCancelled()
|
||||
@ -34,5 +34,5 @@ index fbb5aa91..e3e60ed5 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 20bef824f4b78598fbffa5ada8271e22b658f635 Mon Sep 17 00:00:00 2001
|
||||
From de7fbc797929fee6604ed404aefc6ed452beeda1 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Mon, 12 Sep 2022 13:28:08 +0100
|
||||
Subject: [PATCH 38/51] Hold surface read lock throughout
|
||||
Subject: [PATCH 35/59] Hold surface read lock throughout
|
||||
QWaylandEglWindow::updateSurface
|
||||
|
||||
QWaylandEGLWindow::updateSurface is called from both the main and render
|
||||
@ -50,7 +50,7 @@ index 2be87bc0..ea3d1995 100644
|
||||
};
|
||||
|
||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
index 13dd747a..872a6237 100644
|
||||
index 64f7caeb..dbe2845a 100644
|
||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||
@@ -40,6 +40,7 @@
|
||||
@ -81,5 +81,5 @@ index 13dd747a..872a6237 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,40 +0,0 @@
|
||||
From a7c3f946175a78df45b1eb3301cf16a05a542d58 Mon Sep 17 00:00:00 2001
|
||||
From: Alexandros Frantzis <alexandros.frantzis@collabora.com>
|
||||
Date: Wed, 11 May 2022 17:12:52 +0300
|
||||
Subject: [PATCH 35/51] Use CRLF line delimiter for text/uri-list data
|
||||
|
||||
According to RFC 2483, which describes text/uri-list, the line delimiter
|
||||
must be CRLF (instead of the currently used LF). Some applications
|
||||
strictly expect the CRLF delimiter and fail to properly parse the
|
||||
uri-list otherwise (e.g., WineX11/XWayland).
|
||||
|
||||
https://datatracker.ietf.org/doc/html/rfc2483
|
||||
|
||||
5. The text/uri-list Internet Media Type
|
||||
The format of text/uri-list resources is:
|
||||
3) As for all text/* formats, lines are terminated with a CRLF pair.
|
||||
|
||||
Pick-to: 6.4 6.3 6.2 5.15
|
||||
Change-Id: I7c062224a9060028ab6293fdf172692ade28cca5
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit bd5b0a804b91b9fbd0ce44d5d6765e07d0a50b4f)
|
||||
---
|
||||
src/shared/qwaylandmimehelper.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp
|
||||
index 051a91dc..e2fe1928 100644
|
||||
--- a/src/shared/qwaylandmimehelper.cpp
|
||||
+++ b/src/shared/qwaylandmimehelper.cpp
|
||||
@@ -74,7 +74,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &
|
||||
QList<QUrl> urls = mimeData->urls();
|
||||
for (int i = 0; i < urls.count(); ++i) {
|
||||
content.append(urls.at(i).toEncoded());
|
||||
- content.append('\n');
|
||||
+ content.append("\r\n");
|
||||
}
|
||||
} else {
|
||||
content = mimeData->data(mimeType);
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,43 +0,0 @@
|
||||
From 36522a8ed9f43cd49100e06040711de9c2c0c163 Mon Sep 17 00:00:00 2001
|
||||
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
Date: Mon, 8 Aug 2022 12:14:01 +0200
|
||||
Subject: [PATCH 36/51] Avoid calling requestUpdate from wrong thread
|
||||
|
||||
In certain circumstances, we can get to createDecoration()
|
||||
from the render thread (from QWaylandGLContext::makeCurrent)
|
||||
|
||||
Calling requestUpdate() from this secondary thread would
|
||||
cause an assert, so we queue the call on the appropriate
|
||||
thread instead.
|
||||
|
||||
This amends af7b60ade5c4be81cbc58eb18307c017d5594071.
|
||||
|
||||
Pick-to: 5.15 6.2 6.3 6.3.2 6.4
|
||||
Fixes: QTBUG-105308
|
||||
Change-Id: I4805265f39e24eb1464897532be2025bc3c27728
|
||||
Reviewed-by: Inho Lee <inho.lee@qt.io>
|
||||
(cherry picked from commit a0c0b5b42335808c2222cbf72c1758e955731ed9)
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 117e3383..4ddf9fbe 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -873,7 +873,11 @@ bool QWaylandWindow::createDecoration()
|
||||
// size and are not redrawn, leaving the new buffer empty. As a simple
|
||||
// work-around, we trigger a full extra update whenever the client-side
|
||||
// window decorations are toggled while the window is showing.
|
||||
- window()->requestUpdate();
|
||||
+ // Note: createDecoration() is sometimes called from the render thread
|
||||
+ // of Qt Quick. This is essentially wrong and could potentially cause problems,
|
||||
+ // but until the underlying issue has been fixed, we have to use invokeMethod()
|
||||
+ // here to avoid asserts.
|
||||
+ QMetaObject::invokeMethod(window(), &QWindow::requestUpdate);
|
||||
}
|
||||
|
||||
return mWindowDecoration;
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6481efa9a8fe88043d931648d72dceeeb91af64d Mon Sep 17 00:00:00 2001
|
||||
From dbde248fea508102f656c863c23c09e544f3fd82 Mon Sep 17 00:00:00 2001
|
||||
From: David Redondo <qt@david-redondo.de>
|
||||
Date: Wed, 8 Jun 2022 11:25:59 +0200
|
||||
Subject: [PATCH 39/51] Keep toplevel windows in the top left corner of the
|
||||
Subject: [PATCH 36/59] Keep toplevel windows in the top left corner of the
|
||||
screen
|
||||
|
||||
We can't know the actual position of a window on the screen. This causes
|
||||
@ -39,7 +39,7 @@ index fbf00c6b..54861600 100644
|
||||
|
||||
QWaylandIntegration::~QWaylandIntegration()
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 4ddf9fbe..f322a8d6 100644
|
||||
index f8c71d9c..7c7e49ac 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -350,8 +350,13 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect)
|
||||
@ -86,5 +86,5 @@ index ea3d1995..487a91a6 100644
|
||||
virtual void ensureSize();
|
||||
WId winId() const override;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3b29b796f98721cb52c89a56e28ff8f9b830ebc5 Mon Sep 17 00:00:00 2001
|
||||
From e79050b5c2ebbb34a9a6c76739b5b824b4819a35 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Thu, 17 Nov 2022 15:25:37 +0200
|
||||
Subject: [PATCH 40/51] Client: Add F_SEAL_SHRINK seal to shm backing file
|
||||
Subject: [PATCH 37/59] Client: Add F_SEAL_SHRINK seal to shm backing file
|
||||
|
||||
This lets libwayland-server avoid installing a SIGBUS handler when it
|
||||
wants to mmap() the backing file and access the contents of shared
|
||||
@ -49,5 +49,5 @@ index dc7ff670..98acd42d 100644
|
||||
|
||||
QScopedPointer<QFile> filePointer;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 36a9d60c3ed05e2ec8faf7e81946becfaeb2f1d5 Mon Sep 17 00:00:00 2001
|
||||
From 50803a2025bad39adb6e0ac969bba60929d593d4 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Mon, 21 Nov 2022 18:39:40 +0200
|
||||
Subject: [PATCH 41/51] Client: Call wl_output_release() upon QWaylandScreen
|
||||
Subject: [PATCH 38/59] Client: Call wl_output_release() upon QWaylandScreen
|
||||
destruction
|
||||
|
||||
It ensures that the proxy gets destroyed.
|
||||
@ -27,5 +27,5 @@ index 7c2d9be3..64ae4fe7 100644
|
||||
|
||||
uint QWaylandScreen::requiredEvents() const
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4293409e97c6ecfaec49b87818f9b439010187c9 Mon Sep 17 00:00:00 2001
|
||||
From 5a0e6102fa153daa0e50859f66654e48033bc0fe Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Tue, 22 Nov 2022 12:33:41 +0200
|
||||
Subject: [PATCH 42/51] Client: Bump wl_output version
|
||||
Subject: [PATCH 39/59] Client: Bump wl_output version
|
||||
|
||||
wl_output_release is available starting with wl_output v3.
|
||||
|
||||
@ -26,5 +26,5 @@ index 64ae4fe7..5537dafd 100644
|
||||
, mWaylandDisplay(waylandDisplay)
|
||||
, mOutputName(QStringLiteral("Screen%1").arg(id))
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7c43759079528c33c30c4a823de7fb2dff6acd27 Mon Sep 17 00:00:00 2001
|
||||
From b55964ec30a055ac199e4d6b463afd67b651381c Mon Sep 17 00:00:00 2001
|
||||
From: Weng Xuetian <wengxt@gmail.com>
|
||||
Date: Sun, 27 Nov 2022 12:44:40 -0800
|
||||
Subject: [PATCH 43/51] Fix frame sync related to unprotected multithread
|
||||
Subject: [PATCH 40/59] Fix frame sync related to unprotected multithread
|
||||
access
|
||||
|
||||
There is a few crashes happens in real life that frame callback is
|
||||
@ -21,7 +21,7 @@ Change-Id: Ie01d08d07a2f10f70606ed1935caac09cb4f0382
|
||||
2 files changed, 43 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index f322a8d6..6337db00 100644
|
||||
index 7c7e49ac..2e445340 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -252,13 +252,16 @@ void QWaylandWindow::reset()
|
||||
@ -162,5 +162,5 @@ index 487a91a6..2f219d8c 100644
|
||||
static QWaylandWindow *mMouseGrab;
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 817655fa798fc2d640b4db006df229c335e02c3b Mon Sep 17 00:00:00 2001
|
||||
From a2808e43ff20ab164dfcc9a570da8c28bcfe8334 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Tue, 27 Sep 2022 22:05:07 +0300
|
||||
Subject: [PATCH 44/51] Client: Handle zwp_primary_selection_device_manager_v1
|
||||
Subject: [PATCH 41/59] Client: Handle zwp_primary_selection_device_manager_v1
|
||||
global removal
|
||||
|
||||
The zwp_primary_selection_device_manager_v1 global can be withdrawn if
|
||||
@ -19,7 +19,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
2 files changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index 6898a881..27f55965 100644
|
||||
index f23c459d..cc321497 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -519,6 +519,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
|
||||
@ -46,7 +46,7 @@ index 6898a881..27f55965 100644
|
||||
break;
|
||||
}
|
||||
diff --git a/src/client/qwaylandprimaryselectionv1.cpp b/src/client/qwaylandprimaryselectionv1.cpp
|
||||
index 832f9678..ea508771 100644
|
||||
index 78b1de13..cf3b4b22 100644
|
||||
--- a/src/client/qwaylandprimaryselectionv1.cpp
|
||||
+++ b/src/client/qwaylandprimaryselectionv1.cpp
|
||||
@@ -54,11 +54,6 @@ QWaylandPrimarySelectionDeviceManagerV1::QWaylandPrimarySelectionDeviceManagerV1
|
||||
@ -62,5 +62,5 @@ index 832f9678..ea508771 100644
|
||||
|
||||
QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat)
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 9e03f149e70896d92b51d9c25af681ddc2b5acfb Mon Sep 17 00:00:00 2001
|
||||
From fa2a6997d29efea85323237cd3ca8555d091f2d8 Mon Sep 17 00:00:00 2001
|
||||
From: Aleix Pol <aleixpol@kde.org>
|
||||
Date: Mon, 19 Dec 2022 15:31:03 +0100
|
||||
Subject: [PATCH 45/51] Fixes the build on CentOS
|
||||
Subject: [PATCH 42/59] Fixes the build on CentOS
|
||||
|
||||
Change-Id: I3c21972e7681be99b0f45c3ea3a57be285e4ff8e
|
||||
---
|
||||
@ -22,5 +22,5 @@ index 98acd42d..41cffdf7 100644
|
||||
if (fd >= 0)
|
||||
fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL);
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5028633b140c013b14a487889eeef992233d4edf Mon Sep 17 00:00:00 2001
|
||||
From 4a6222595cc45d57471d5f89959ec2963877fb47 Mon Sep 17 00:00:00 2001
|
||||
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
Date: Mon, 23 May 2022 09:47:24 +0200
|
||||
Subject: [PATCH 46/51] client: Avoid protocol error with invalid min/max size
|
||||
Subject: [PATCH 43/59] client: Avoid protocol error with invalid min/max size
|
||||
|
||||
If the application sets an invalid minimum and maximum size
|
||||
(where the minimum is higher than the maximum), then we
|
||||
@ -35,7 +35,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index ead99989..ad666129 100644
|
||||
index 774c86f8..696eaf77 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -384,10 +384,10 @@ void QWaylandXdgSurface::setSizeHints()
|
||||
@ -52,5 +52,5 @@ index ead99989..ad666129 100644
|
||||
maxHeight = 0;
|
||||
m_toplevel->set_max_size(maxWidth, maxHeight);
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From aeb7bf67a99fecf5f4e49ba7c49edf9c8b9db2b6 Mon Sep 17 00:00:00 2001
|
||||
From 4b4bfbb61b7f232061e0b8e0d4be6487596a3521 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Tue, 22 Nov 2022 23:27:34 +0200
|
||||
Subject: [PATCH 47/51] Client: Fix handling of Qt::BlankCursor
|
||||
Subject: [PATCH 44/59] Client: Fix handling of Qt::BlankCursor
|
||||
|
||||
The cursor may not be properly set when a window has Qt::BlankCursor and
|
||||
it's shown. In that case, the cursor surface may not be present and
|
||||
@ -20,7 +20,7 @@ Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||
index 5b880984..9a0fe49d 100644
|
||||
index 4d58e9ab..132c5345 100644
|
||||
--- a/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/src/client/qwaylandinputdevice.cpp
|
||||
@@ -310,8 +310,7 @@ void QWaylandInputDevice::Pointer::updateCursor()
|
||||
@ -34,5 +34,5 @@ index 5b880984..9a0fe49d 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2e4c35db38a55243bc2458dc87cc9ff6afb81586 Mon Sep 17 00:00:00 2001
|
||||
From 58664797ea7f63baf8e4a22e5ca2906363bf4539 Mon Sep 17 00:00:00 2001
|
||||
From: Marco Martin <notmart@gmail.com>
|
||||
Date: Fri, 24 Feb 2023 17:40:48 +0100
|
||||
Subject: [PATCH 48/51] client: Force a roundtrip when an XdgOutput is not
|
||||
Subject: [PATCH 45/59] client: Force a roundtrip when an XdgOutput is not
|
||||
ready yet
|
||||
|
||||
Is possible that the server sends a surface_enter before
|
||||
@ -21,7 +21,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
4 files changed, 42 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 6337db00..3b700002 100644
|
||||
index 2e445340..9bf5b150 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -1042,6 +1042,8 @@ void QWaylandWindow::handleScreensChanged()
|
||||
@ -113,5 +113,5 @@ index 80429608..68e8d77a 100644
|
||||
QCOMPOSITOR_TEST_MAIN(tst_xdgoutput)
|
||||
#include "tst_xdgoutput.moc"
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From dd8640794264449cb978765029fc4713f3fb31b9 Mon Sep 17 00:00:00 2001
|
||||
From 091f3dad76007774e103ed8c81adcbf0eca89977 Mon Sep 17 00:00:00 2001
|
||||
From: Tang Haixiang <tanghaixiang@uniontech.com>
|
||||
Date: Thu, 22 Dec 2022 15:19:53 +0800
|
||||
Subject: [PATCH 49/51] Client: Manage QMimeData lifecycle
|
||||
Subject: [PATCH 46/59] Client: Manage QMimeData lifecycle
|
||||
|
||||
QMimeData is created by user, it is not taken care of in qtwayland,
|
||||
which will cause memory leak.
|
||||
@ -105,7 +105,7 @@ index ce14e124..bb52683d 100644
|
||||
|
||||
}
|
||||
diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
|
||||
index 5599cbd4..e085152c 100644
|
||||
index 9610366d..1a6b9835 100644
|
||||
--- a/src/client/qwaylanddatasource.cpp
|
||||
+++ b/src/client/qwaylanddatasource.cpp
|
||||
@@ -71,11 +71,6 @@ QWaylandDataSource::~QWaylandDataSource()
|
||||
@ -121,7 +121,7 @@ index 5599cbd4..e085152c 100644
|
||||
{
|
||||
Q_EMIT cancelled();
|
||||
diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
|
||||
index 96f07bc3..14d1542d 100644
|
||||
index b6a9e06b..089c5485 100644
|
||||
--- a/src/client/qwaylanddatasource_p.h
|
||||
+++ b/src/client/qwaylanddatasource_p.h
|
||||
@@ -74,8 +74,6 @@ public:
|
||||
@ -134,5 +134,5 @@ index 96f07bc3..14d1542d 100644
|
||||
void cancelled();
|
||||
void finished();
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 346cebf39b90f7fe012f57e66d493634aba20f89 Mon Sep 17 00:00:00 2001
|
||||
From aae875167fb67df735f922677104f815463b9f1c Mon Sep 17 00:00:00 2001
|
||||
From: Aleix Pol <aleixpol@kde.org>
|
||||
Date: Mon, 6 Mar 2023 01:11:45 +0100
|
||||
Subject: [PATCH 50/51] client: Do not cast placeholder screens to
|
||||
Subject: [PATCH 47/59] client: Do not cast placeholder screens to
|
||||
QWaylandScreen
|
||||
|
||||
It's wrong to C-cast an object to a class that isn't theirs. Check if it
|
||||
@ -30,5 +30,5 @@ index bf54a1a0..9763c312 100644
|
||||
|
||||
return nullptr;
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From aabaa4efd1d284f07c3cb5b8a7d62a9143701bc4 Mon Sep 17 00:00:00 2001
|
||||
From 53ee577e86f88abbbdbba26c593d03d87994b757 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Thu, 12 Jan 2023 14:49:25 +0200
|
||||
Subject: [PATCH 51/51] Client: Remove flip popup constraints
|
||||
Subject: [PATCH 48/59] Client: Remove flip popup constraints
|
||||
|
||||
xdg_positioner doesn't have good anchor rect and other needed
|
||||
information so the compositor can properly flip popups. In some windows
|
||||
@ -22,7 +22,7 @@ Reviewed-by: Liang Qi <liang.qi@qt.io>
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index ad666129..822b385c 100644
|
||||
index 696eaf77..2cc36510 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -425,9 +425,7 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent)
|
||||
@ -37,5 +37,5 @@ index ad666129..822b385c 100644
|
||||
positioner->destroy();
|
||||
|
||||
--
|
||||
2.40.1
|
||||
2.41.0
|
||||
|
38
0049-Destroy-frame-queue-before-display.patch
Normal file
38
0049-Destroy-frame-queue-before-display.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From c64fb8989dcde2a00381d8ff75e7cf63dfc94b90 Mon Sep 17 00:00:00 2001
|
||||
From: David Redondo <qt@david-redondo.de>
|
||||
Date: Tue, 11 Apr 2023 14:27:27 +0200
|
||||
Subject: [PATCH 49/59] Destroy frame queue before display
|
||||
|
||||
wl_event_queue_destroy accesses the display.
|
||||
Found by running a test under valgrind.
|
||||
|
||||
Pick-to: 6.5
|
||||
Change-Id: Ic89cbd3b6e98b4fc9561b0e63b5fab4886a1ec50
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit a76bf824fcd1cc3789f0d3454a0423c0241d9718)
|
||||
---
|
||||
src/client/qwaylanddisplay.cpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||
index cc321497..737b539d 100644
|
||||
--- a/src/client/qwaylanddisplay.cpp
|
||||
+++ b/src/client/qwaylanddisplay.cpp
|
||||
@@ -379,11 +379,12 @@ QWaylandDisplay::~QWaylandDisplay(void)
|
||||
#if QT_CONFIG(cursor)
|
||||
qDeleteAll(mCursorThemes);
|
||||
#endif
|
||||
- if (mDisplay)
|
||||
- wl_display_disconnect(mDisplay);
|
||||
|
||||
if (m_frameEventQueue)
|
||||
wl_event_queue_destroy(m_frameEventQueue);
|
||||
+
|
||||
+ if (mDisplay)
|
||||
+ wl_display_disconnect(mDisplay);
|
||||
}
|
||||
|
||||
// Steps which is called just after constructor. This separates registry_global() out of the constructor
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,42 @@
|
||||
From 2dabdd8227088d01a6d375e25226b1805769021d Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <davidedmundson@kde.org>
|
||||
Date: Wed, 7 Jun 2023 22:12:15 +0100
|
||||
Subject: [PATCH 50/59] client: Fix crash on dnd updates after client facing
|
||||
drag ends
|
||||
|
||||
A platform drag and a application-facing drag have two different
|
||||
lifespans.
|
||||
|
||||
The platform drag lasts until all mimedata is transferred and the client
|
||||
receiving the drops marks it as finished.
|
||||
|
||||
The application facing QDrag lasts until the client deletes it. We can
|
||||
get a crash if we get updates during this time.
|
||||
|
||||
The drop event is guarded, but not the action negotiation.
|
||||
|
||||
Pick-to: 6.6
|
||||
Change-Id: Ib9c047f04d65883105d4cd3f169637d0e038a63f
|
||||
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
(cherry picked from commit 22daca49b807fefba58113a06b86df4274e49f62)
|
||||
---
|
||||
src/client/qwaylanddatadevice.cpp | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||
index 9b3c18ac..9c3308d5 100644
|
||||
--- a/src/client/qwaylanddatadevice.cpp
|
||||
+++ b/src/client/qwaylanddatadevice.cpp
|
||||
@@ -132,6 +132,9 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, Qt::DropActions supporte
|
||||
connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
|
||||
connect(m_dragSource.data(), &QWaylandDataSource::dndResponseUpdated, this, [this](bool accepted, Qt::DropAction action) {
|
||||
auto drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag());
|
||||
+ if (!drag->currentDrag()) {
|
||||
+ return;
|
||||
+ }
|
||||
// in old versions drop action is not set, so we guess
|
||||
if (wl_data_source_get_version(m_dragSource->object()) < 3) {
|
||||
drag->setResponse(accepted);
|
||||
--
|
||||
2.41.0
|
||||
|
66
0051-Convert-cursor-bitmap-to-supported-format.patch
Normal file
66
0051-Convert-cursor-bitmap-to-supported-format.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From e14bd7626bf8dd24c8de325656371383a434e345 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Weghorn <m.weghorn@posteo.de>
|
||||
Date: Mon, 20 Feb 2023 14:02:23 +0100
|
||||
Subject: [PATCH 51/59] Convert cursor bitmap to supported format
|
||||
|
||||
The 1-bit image formats QImage::Format_Mono and
|
||||
QImage::Format_MonoLSB used by cursor bitmaps don't have
|
||||
a corresponding wl_shm_format.
|
||||
|
||||
Therefore, convert to a supported image format as necessary
|
||||
to make such bitmap cursors work on Wayland as well.
|
||||
|
||||
Fixes: QTBUG-95434
|
||||
Change-Id: I402fd870b301ddc01075251b66f2cf7cc1923133
|
||||
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
(cherry picked from commit 45ec1362f8fcb5ade92f4d2d4985b1c24e78c8ba)
|
||||
|
||||
Backport changes: Use Qt::ReturnByValue version for QCursor::mask() and QCursor::bitmap()
|
||||
---
|
||||
src/client/qwaylandcursor.cpp | 23 ++++++++++++++++++++++-
|
||||
1 file changed, 22 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp
|
||||
index e4eca9d4..ba76ba2d 100644
|
||||
--- a/src/client/qwaylandcursor.cpp
|
||||
+++ b/src/client/qwaylandcursor.cpp
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "qwaylandshmbackingstore_p.h"
|
||||
|
||||
#include <QtGui/QImageReader>
|
||||
+#include <QBitmap>
|
||||
#include <QDebug>
|
||||
|
||||
#include <wayland-cursor.h>
|
||||
@@ -250,7 +251,27 @@ QWaylandCursor::QWaylandCursor(QWaylandDisplay *display)
|
||||
QSharedPointer<QWaylandBuffer> QWaylandCursor::cursorBitmapBuffer(QWaylandDisplay *display, const QCursor *cursor)
|
||||
{
|
||||
Q_ASSERT(cursor->shape() == Qt::BitmapCursor);
|
||||
- const QImage &img = cursor->pixmap().toImage();
|
||||
+
|
||||
+ const QBitmap mask = cursor->mask(Qt::ReturnByValue);
|
||||
+ QImage img;
|
||||
+ if (cursor->pixmap().isNull())
|
||||
+ img = cursor->bitmap(Qt::ReturnByValue).toImage();
|
||||
+ else
|
||||
+ img = cursor->pixmap().toImage();
|
||||
+
|
||||
+ // convert to supported format if necessary
|
||||
+ if (!display->shm()->formatSupported(img.format())) {
|
||||
+ if (mask.isNull()) {
|
||||
+ img.convertTo(QImage::Format_RGB32);
|
||||
+ } else {
|
||||
+ // preserve mask
|
||||
+ img.convertTo(QImage::Format_ARGB32);
|
||||
+ QPixmap pixmap = QPixmap::fromImage(img);
|
||||
+ pixmap.setMask(mask);
|
||||
+ img = pixmap.toImage();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
QSharedPointer<QWaylandShmBuffer> buffer(new QWaylandShmBuffer(display, img.size(), img.format()));
|
||||
memcpy(buffer->image()->bits(), img.bits(), size_t(img.sizeInBytes()));
|
||||
return buffer;
|
||||
--
|
||||
2.41.0
|
||||
|
169
0052-Replace-scale-with-devicePixelRatio-for-non-integer-.patch
Normal file
169
0052-Replace-scale-with-devicePixelRatio-for-non-integer-.patch
Normal file
@ -0,0 +1,169 @@
|
||||
From 53e02e2ccf64ce1459fd46a71c88d069d8d5e478 Mon Sep 17 00:00:00 2001
|
||||
From: Jungi Byun <jungi.byun@lge.com>
|
||||
Date: Wed, 27 Jan 2021 08:24:23 +0900
|
||||
Subject: [PATCH 52/59] Replace scale with devicePixelRatio for non-integer
|
||||
scaling
|
||||
|
||||
The 'scale' event from wayland cannot support non-integer scaling
|
||||
which was originally supported in Qt.
|
||||
|
||||
As default, devicePixelRatio follows the 'scale' so that the high DPI
|
||||
still works as the mechanism in Wayland. But if non-integer scaling
|
||||
factor such as 150% is needed, it can be supported to override the
|
||||
devicePixelRatio.
|
||||
|
||||
Change-Id: I63a04db27bd521264b6d0904e1ddd05a572dc970
|
||||
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
|
||||
Reviewed-by: Jungi Byun <jungi.byun@lge.com>
|
||||
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
(cherry picked from commit cf98abbc6ae9ba9373803ffe193f839324e0c80b)
|
||||
---
|
||||
src/client/qwaylandabstractdecoration.cpp | 2 +-
|
||||
src/client/qwaylandshmbackingstore.cpp | 6 +++---
|
||||
src/client/qwaylandshmbackingstore_p.h | 2 +-
|
||||
src/client/qwaylandwindow.cpp | 16 ++++++++--------
|
||||
src/client/qwaylandwindow_p.h | 2 +-
|
||||
.../client/wayland-egl/qwaylandglcontext.cpp | 2 +-
|
||||
6 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp
|
||||
index b628930d..d15a7f9f 100644
|
||||
--- a/src/client/qwaylandabstractdecoration.cpp
|
||||
+++ b/src/client/qwaylandabstractdecoration.cpp
|
||||
@@ -122,7 +122,7 @@ const QImage &QWaylandAbstractDecoration::contentImage()
|
||||
if (d->m_isDirty) {
|
||||
// Update the decoration backingstore
|
||||
|
||||
- const int bufferScale = waylandWindow()->scale();
|
||||
+ const qreal bufferScale = waylandWindow()->scale();
|
||||
const QSize imageSize = waylandWindow()->surfaceSize() * bufferScale;
|
||||
d->m_decorationContentImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied);
|
||||
// Only scale by buffer scale, not QT_SCALE_FACTOR etc.
|
||||
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
|
||||
index 41cffdf7..90e37e95 100644
|
||||
--- a/src/client/qwaylandshmbackingstore.cpp
|
||||
+++ b/src/client/qwaylandshmbackingstore.cpp
|
||||
@@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE
|
||||
namespace QtWaylandClient {
|
||||
|
||||
QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
|
||||
- const QSize &size, QImage::Format format, int scale)
|
||||
+ const QSize &size, QImage::Format format, qreal scale)
|
||||
{
|
||||
int stride = size.width() * 4;
|
||||
int alloc = stride * size.height();
|
||||
@@ -114,7 +114,7 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display,
|
||||
QWaylandShm* shm = display->shm();
|
||||
wl_shm_format wl_format = shm->formatFrom(format);
|
||||
mImage = QImage(data, size.width(), size.height(), stride, format);
|
||||
- mImage.setDevicePixelRatio(qreal(scale));
|
||||
+ mImage.setDevicePixelRatio(scale);
|
||||
|
||||
mShmPool = wl_shm_create_pool(shm->object(), fd, alloc);
|
||||
init(wl_shm_pool_create_buffer(mShmPool,0, size.width(), size.height(),
|
||||
@@ -277,7 +277,7 @@ QWaylandShmBuffer *QWaylandShmBackingStore::getBuffer(const QSize &size)
|
||||
void QWaylandShmBackingStore::resize(const QSize &size)
|
||||
{
|
||||
QMargins margins = windowDecorationMargins();
|
||||
- int scale = waylandWindow()->scale();
|
||||
+ qreal scale = waylandWindow()->scale();
|
||||
QSize sizeWithMargins = (size + QSize(margins.left()+margins.right(),margins.top()+margins.bottom())) * scale;
|
||||
|
||||
// We look for a free buffer to draw into. If the buffer is not the last buffer we used,
|
||||
diff --git a/src/client/qwaylandshmbackingstore_p.h b/src/client/qwaylandshmbackingstore_p.h
|
||||
index e01632da..f3fae438 100644
|
||||
--- a/src/client/qwaylandshmbackingstore_p.h
|
||||
+++ b/src/client/qwaylandshmbackingstore_p.h
|
||||
@@ -71,7 +71,7 @@ class QWaylandWindow;
|
||||
class Q_WAYLAND_CLIENT_EXPORT QWaylandShmBuffer : public QWaylandBuffer {
|
||||
public:
|
||||
QWaylandShmBuffer(QWaylandDisplay *display,
|
||||
- const QSize &size, QImage::Format format, int scale = 1);
|
||||
+ const QSize &size, QImage::Format format, qreal scale = 1);
|
||||
~QWaylandShmBuffer() override;
|
||||
QSize size() const override { return mImage.size(); }
|
||||
int scale() const override { return int(mImage.devicePixelRatio()); }
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 9bf5b150..92eeba53 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -185,7 +185,7 @@ void QWaylandWindow::initWindow()
|
||||
// typically be integer 1 (normal-dpi) or 2 (high-dpi). Call set_buffer_scale()
|
||||
// to inform the compositor that high-resolution buffers will be provided.
|
||||
if (mDisplay->compositorVersion() >= 3)
|
||||
- mSurface->set_buffer_scale(scale());
|
||||
+ mSurface->set_buffer_scale(mScale);
|
||||
|
||||
if (QScreen *s = window()->screen())
|
||||
setOrientationMask(s->orientationUpdateMask());
|
||||
@@ -572,9 +572,9 @@ void QWaylandWindow::damage(const QRect &rect)
|
||||
if (mSurface == nullptr)
|
||||
return;
|
||||
|
||||
- const int s = scale();
|
||||
+ const qreal s = scale();
|
||||
if (mDisplay->compositorVersion() >= 4)
|
||||
- mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height());
|
||||
+ mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height()));
|
||||
else
|
||||
mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
|
||||
}
|
||||
@@ -613,9 +613,9 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage)
|
||||
|
||||
attachOffset(buffer);
|
||||
if (mDisplay->compositorVersion() >= 4) {
|
||||
- const int s = scale();
|
||||
+ const qreal s = scale();
|
||||
for (const QRect &rect: damage)
|
||||
- mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height());
|
||||
+ mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height()));
|
||||
} else {
|
||||
for (const QRect &rect: damage)
|
||||
mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
|
||||
@@ -1103,14 +1103,14 @@ bool QWaylandWindow::isActive() const
|
||||
return mDisplay->isWindowActivated(this);
|
||||
}
|
||||
|
||||
-int QWaylandWindow::scale() const
|
||||
+qreal QWaylandWindow::scale() const
|
||||
{
|
||||
- return mScale;
|
||||
+ return devicePixelRatio();
|
||||
}
|
||||
|
||||
qreal QWaylandWindow::devicePixelRatio() const
|
||||
{
|
||||
- return mScale;
|
||||
+ return qreal(mScale);
|
||||
}
|
||||
|
||||
bool QWaylandWindow::setMouseGrabEnabled(bool grab)
|
||||
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||
index 2f219d8c..741f9e5c 100644
|
||||
--- a/src/client/qwaylandwindow_p.h
|
||||
+++ b/src/client/qwaylandwindow_p.h
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
|
||||
void setMask(const QRegion ®ion) override;
|
||||
|
||||
- int scale() const;
|
||||
+ qreal scale() const;
|
||||
qreal devicePixelRatio() const override;
|
||||
|
||||
void requestActivateWindow() override;
|
||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||
index c1f45fa6..bbc63444 100644
|
||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||
@@ -195,7 +195,7 @@ public:
|
||||
QOpenGLTextureCache *cache = QOpenGLTextureCache::cacheForContext(m_context->context());
|
||||
|
||||
QSize surfaceSize = window->surfaceSize();
|
||||
- int scale = window->scale() ;
|
||||
+ qreal scale = window->scale() ;
|
||||
glViewport(0, 0, surfaceSize.width() * scale, surfaceSize.height() * scale);
|
||||
|
||||
//Draw Decoration
|
||||
--
|
||||
2.41.0
|
||||
|
71
0053-Client-Fix-buffer-damage.patch
Normal file
71
0053-Client-Fix-buffer-damage.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From b42a0b7a97545859cc1a83556491f90a3d408790 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Thu, 3 Aug 2023 12:28:44 +0300
|
||||
Subject: [PATCH 53/59] Client: Fix buffer damage
|
||||
|
||||
If the specified damage rectangle has fractional coordinates in the buffer
|
||||
local coordinate space, the buffer damage needs to be expanded, i.e.
|
||||
|
||||
- bufferRect.left = floor(rect.left * scale)
|
||||
- bufferRect.right = ceil(rect.right * scale) = ceil((rect.x + rect.width) * scale)
|
||||
|
||||
Flooring the coordinates and ceiling the size is not enough. It can
|
||||
produce incorrect results.
|
||||
|
||||
For example, consider that a rectangle with logical coordinates of
|
||||
QRect(0, 23, 179, 46) has been damaged in a window with scale 1.5. When
|
||||
flooring the coordinates and ceiling the size, the following buffer
|
||||
damage rect will be produced: QRect(0, 34, 269, 69). Its height is off by
|
||||
1, the expected height is 70 (ceil((23 + 46) * 1.5) - floor(23 * 1.5) =
|
||||
ceil(103.5) - floor(34.5) = 104 - 34 = 70).
|
||||
|
||||
Pick-to: 5.15 6.5 6.6
|
||||
Change-Id: I927e75a2224bb58b4634125011d1305dbdfbb3aa
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit d79db699866b37bd3e3358ca18a210dfc5c0b4b9)
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 20 +++++++++++++++-----
|
||||
1 file changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index 92eeba53..e2e513af 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -573,10 +573,15 @@ void QWaylandWindow::damage(const QRect &rect)
|
||||
return;
|
||||
|
||||
const qreal s = scale();
|
||||
- if (mDisplay->compositorVersion() >= 4)
|
||||
- mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height()));
|
||||
- else
|
||||
+ if (mDisplay->compositorVersion() >= 4) {
|
||||
+ const QRect bufferRect =
|
||||
+ QRectF(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height())
|
||||
+ .toAlignedRect();
|
||||
+ mSurface->damage_buffer(bufferRect.x(), bufferRect.y(), bufferRect.width(),
|
||||
+ bufferRect.height());
|
||||
+ } else {
|
||||
mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
|
||||
+ }
|
||||
}
|
||||
|
||||
void QWaylandWindow::safeCommit(QWaylandBuffer *buffer, const QRegion &damage)
|
||||
@@ -614,8 +619,13 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage)
|
||||
attachOffset(buffer);
|
||||
if (mDisplay->compositorVersion() >= 4) {
|
||||
const qreal s = scale();
|
||||
- for (const QRect &rect: damage)
|
||||
- mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height()));
|
||||
+ for (const QRect &rect : damage) {
|
||||
+ const QRect bufferRect =
|
||||
+ QRectF(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height())
|
||||
+ .toAlignedRect();
|
||||
+ mSurface->damage_buffer(bufferRect.x(), bufferRect.y(), bufferRect.width(),
|
||||
+ bufferRect.height());
|
||||
+ }
|
||||
} else {
|
||||
for (const QRect &rect: damage)
|
||||
mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
|
||||
--
|
||||
2.41.0
|
||||
|
63
0054-client-Fix-infinite-recursion-with-text-input-v2.patch
Normal file
63
0054-client-Fix-infinite-recursion-with-text-input-v2.patch
Normal file
@ -0,0 +1,63 @@
|
||||
From 959738880c1c2ba6b496657d6bcd8b67d1e326ae Mon Sep 17 00:00:00 2001
|
||||
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
Date: Thu, 12 Jan 2023 14:56:18 +0100
|
||||
Subject: [PATCH 54/59] client: Fix infinite recursion with text-input-v2
|
||||
|
||||
It was possible to get into an infinite recursion when
|
||||
double-clicking an entry in an item view to edit it.
|
||||
|
||||
What would happen is that the editor takes focus, and we call
|
||||
commit on the input method commit in case the previous focused
|
||||
widget has pending input that needs to be committed. The
|
||||
subsequent method event then causes the QAbstractItemView to
|
||||
set focus, and since we have not yet updated the focus in the
|
||||
previous call, we end up in an infinite recursion, eventually
|
||||
crashing when the stack overflows.
|
||||
|
||||
As a guard for this, we only send an input method event when there
|
||||
is actually pre-edit text to commit, and we reset the pre-edit
|
||||
text immediately so that any subsequent call will just exit.
|
||||
|
||||
[ChangeLog][QtWaylandClient] Fixed a possible crash when editing
|
||||
a field in an item view.
|
||||
|
||||
Pick-to: 5.15 6.2 6.4 6.5
|
||||
Fixes: QTBUG-109302
|
||||
Change-Id: I45237c80e53b1386705279899e19319180d78fa1
|
||||
Reviewed-by: Liang Qi <liang.qi@qt.io>
|
||||
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
||||
Reviewed-by: Inho Lee <inho.lee@qt.io>
|
||||
(cherry picked from commit db4afd9caf037cfff7aca8b130d326c340b7fed0)
|
||||
|
||||
* asturmlechner 2023-08-14: Resolve conflict with dev branch commit
|
||||
af8f8c33ea885f472682f98e0699721f50b1f020 - change applied in
|
||||
qwaylandinputcontext.cpp instead.
|
||||
---
|
||||
src/client/qwaylandinputcontext.cpp | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp
|
||||
index 47696a6a..9435e961 100644
|
||||
--- a/src/client/qwaylandinputcontext.cpp
|
||||
+++ b/src/client/qwaylandinputcontext.cpp
|
||||
@@ -93,9 +93,14 @@ void QWaylandTextInput::reset()
|
||||
void QWaylandTextInput::commit()
|
||||
{
|
||||
if (QObject *o = QGuiApplication::focusObject()) {
|
||||
- QInputMethodEvent event;
|
||||
- event.setCommitString(m_preeditCommit);
|
||||
- QCoreApplication::sendEvent(o, &event);
|
||||
+ if (!m_preeditCommit.isEmpty()) {
|
||||
+
|
||||
+ QInputMethodEvent event;
|
||||
+ event.setCommitString(m_preeditCommit);
|
||||
+ m_preeditCommit = QString();
|
||||
+
|
||||
+ QCoreApplication::sendEvent(o, &event);
|
||||
+ }
|
||||
}
|
||||
|
||||
reset();
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,38 @@
|
||||
From b792de4b59ab80e14c21a953f4e026f6f342b609 Mon Sep 17 00:00:00 2001
|
||||
From: Ilya Fedin <fedin-ilja2010@ya.ru>
|
||||
Date: Sun, 19 Mar 2023 10:20:11 +0400
|
||||
Subject: [PATCH 55/59] Client: Fix the mouse being stuck in pressed state
|
||||
after DnD
|
||||
|
||||
I can still reproduce the problem using QtWidgets applications
|
||||
on KDE Plasma 5.27. Both Windows and macOS QPA have a similar quirk
|
||||
and they both send a MouseButtonRelease event rather than a MouseMove
|
||||
event.
|
||||
|
||||
Amends f7a386eeaec8e6314c1be7de5e14e9fe3847f9ba
|
||||
|
||||
Task-number: QTBUG-97037
|
||||
Pick-to: 6.5 6.2 5.15
|
||||
Change-Id: I864a1cb68b3660d858623f943b3958f7cafbf955
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit e3c74961b1c7415fd94678802ad7f8173d0be4c1)
|
||||
---
|
||||
src/client/qwaylandinputdevice.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||
index 132c5345..34c185a3 100644
|
||||
--- a/src/client/qwaylandinputdevice.cpp
|
||||
+++ b/src/client/qwaylandinputdevice.cpp
|
||||
@@ -845,7 +845,7 @@ void QWaylandInputDevice::Pointer::releaseButtons()
|
||||
mButtons = Qt::NoButton;
|
||||
|
||||
if (auto *window = focusWindow()) {
|
||||
- MotionEvent e(focusWindow(), mParent->mTime, mSurfacePos, mGlobalPos, mButtons, mParent->modifiers());
|
||||
+ ReleaseEvent e(focusWindow(), mParent->mTime, mSurfacePos, mGlobalPos, mButtons, Qt::NoButton, mParent->modifiers());
|
||||
window->handleMouse(mParent, e);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 63914e595d5de7bd64e221b2d63efbe27432fa40 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Fri, 25 Aug 2023 10:19:07 +0300
|
||||
Subject: [PATCH 56/59] Client: Commit the initial surface state explicitly
|
||||
|
||||
QWaylandWindow lacks an explicit step to finish initializing the shell
|
||||
surface by committing the surface. So far it used to work because of
|
||||
hidden surface commits in
|
||||
QWaylandWindow::handleContentOrientationChange(),
|
||||
QWaylandWindow::setMask() and so on.
|
||||
|
||||
This change adds an explicit step to commit the initial surface state to
|
||||
make the shell surface initialization robust.
|
||||
|
||||
Change-Id: Ibc38a4e0dbea689a727451c25a61af0270c7e548
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit 225432c2294bdfbf24856b2f155cd274b24543b2)
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index e2e513af..cf2a03fe 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -200,6 +200,8 @@ void QWaylandWindow::initWindow()
|
||||
mShellSurface->requestWindowStates(window()->windowStates());
|
||||
handleContentOrientationChange(window()->contentOrientation());
|
||||
mFlags = window()->flags();
|
||||
+
|
||||
+ mSurface->commit();
|
||||
}
|
||||
|
||||
void QWaylandWindow::initializeWlSurface()
|
||||
--
|
||||
2.41.0
|
||||
|
35
0057-tests-Fix-tst_xdgshell-minMaxSize.patch
Normal file
35
0057-tests-Fix-tst_xdgshell-minMaxSize.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 0091a19ae0d73ec6390d86823fd6a8c4fc9f7f3b Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Fri, 15 Sep 2023 10:06:32 +0300
|
||||
Subject: [PATCH 57/59] tests: Fix tst_xdgshell::minMaxSize()
|
||||
|
||||
Amends e8cff6fb39c0fd01548bce18542820a6612dbe49.
|
||||
|
||||
The new size hints will be committed when the surface is committed.
|
||||
|
||||
Change-Id: I94e944fee7dac63d5e9ac86fb348b5d24d54abfc
|
||||
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
(cherry picked from commit d8d3d6097afeac62f1b0285e3d5365c7cb580547)
|
||||
---
|
||||
tests/auto/client/xdgshell/tst_xdgshell.cpp | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||
index 747875b4..afbeef53 100644
|
||||
--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||
+++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||
@@ -604,9 +604,11 @@ void tst_xdgshell::minMaxSize()
|
||||
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000));
|
||||
|
||||
window.setMaximumSize(QSize(500, 400));
|
||||
+ window.update();
|
||||
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(500, 400));
|
||||
|
||||
window.setMinimumSize(QSize(50, 40));
|
||||
+ window.update();
|
||||
QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(50, 40));
|
||||
}
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
62
0058-Client-Remove-some-surface-commits.patch
Normal file
62
0058-Client-Remove-some-surface-commits.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From 035f5d4526d155b45f7d3efddc6505f9e186ae06 Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Fri, 25 Aug 2023 10:15:29 +0300
|
||||
Subject: [PATCH 58/59] Client: Remove some surface commits
|
||||
|
||||
The buffer transform, input and opaque regions are double buffered
|
||||
state. They will be applied on the next surface commit.
|
||||
|
||||
But the issue with them is that the relevant code makes surface commits
|
||||
too. It's undesired as it can lead to qtwayland committing partial
|
||||
state, for example it can break xdg surface window geometry.
|
||||
|
||||
This change removes hidden surface commits. The relevant properties will
|
||||
be applied on the next frame.
|
||||
|
||||
Change-Id: I1c40c9a5430fb6b91d7643b20d628f8a9a9d501a
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit e8cff6fb39c0fd01548bce18542820a6612dbe49)
|
||||
---
|
||||
src/client/qwaylandwindow.cpp | 4 ----
|
||||
src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 3 ---
|
||||
2 files changed, 7 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||
index cf2a03fe..d3958d46 100644
|
||||
--- a/src/client/qwaylandwindow.cpp
|
||||
+++ b/src/client/qwaylandwindow.cpp
|
||||
@@ -478,8 +478,6 @@ void QWaylandWindow::setMask(const QRegion &mask)
|
||||
if (isOpaque())
|
||||
setOpaqueArea(mMask);
|
||||
}
|
||||
-
|
||||
- mSurface->commit();
|
||||
}
|
||||
|
||||
void QWaylandWindow::applyConfigureWhenPossible()
|
||||
@@ -794,8 +792,6 @@ void QWaylandWindow::handleContentOrientationChange(Qt::ScreenOrientation orient
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
mSurface->set_buffer_transform(transform);
|
||||
- // set_buffer_transform is double buffered, we need to commit.
|
||||
- mSurface->commit();
|
||||
}
|
||||
|
||||
void QWaylandWindow::setOrientationMask(Qt::ScreenOrientations mask)
|
||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
index 2cc36510..535c3398 100644
|
||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||
@@ -367,9 +367,6 @@ bool QWaylandXdgSurface::wantsDecorations() const
|
||||
void QWaylandXdgSurface::propagateSizeHints()
|
||||
{
|
||||
setSizeHints();
|
||||
-
|
||||
- if (m_toplevel && m_window)
|
||||
- m_window->commit();
|
||||
}
|
||||
|
||||
void QWaylandXdgSurface::setWindowGeometry(const QRect &rect)
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,69 @@
|
||||
From 4de268cbaf6ff3b633429577f06d3d746a3b202a Mon Sep 17 00:00:00 2001
|
||||
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
||||
Date: Wed, 30 Aug 2023 09:49:41 +0300
|
||||
Subject: [PATCH 59/59] Client: Avoid locking resizing in
|
||||
QWaylandShmBackingStore
|
||||
|
||||
QWaylandWindow::setCanResize(false) will block applying configure
|
||||
events. QWaylandWindow::setCanResize(true) will unblock configure events
|
||||
and potentially apply a scheduled configure event if there's one.
|
||||
|
||||
QWaylandWindow::setCanResize(true) has to be called **after** committing
|
||||
the surface to ensure that the xdg window geometry matches the buffer.
|
||||
We don't want the xdg window geometry change when painting.
|
||||
|
||||
Unfortunately, setCanResize(true) can be called before the surface is
|
||||
committed when using a RasterSurface, for example
|
||||
|
||||
- QWaylandShmBackingStore::beginPaint(): calls setCanResize(false)
|
||||
- QWaylandShmBackingStore::endPaint(): calls setCanResize(true)
|
||||
- QWaylandWindow::setCanResize(true): applies pending configure event
|
||||
- QWaylandShmBackingStore::flush(): commits the surface, but the xdg
|
||||
window geometry is wrong now
|
||||
|
||||
As is, beginPaint() and endPaint() are not entirely correct functions
|
||||
where configure events can be blocked. We need functions that wrap both
|
||||
painting and flushing, which are not feasible with the current backing
|
||||
store design.
|
||||
|
||||
On the other hand, it's worth noting that blocking configure events in
|
||||
the backing store is not necessary because painting happens on the main
|
||||
thread unlike OpenGL or Vulkan code paths.
|
||||
|
||||
Given the lack of synchronization points and the fact that rendering
|
||||
happens on the main thread, this change removes blocking configure
|
||||
events in QWaylandShmBackingStore. It fixes dolphin and various other
|
||||
applications that use QtWidgets jumping while being interactively
|
||||
resized.
|
||||
|
||||
Change-Id: I156e4fd5e04a6bba7e8d48171510d5ab0ec89713
|
||||
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
||||
(cherry picked from commit 8828452bcf2ecf4e02a64380a1697d148c4366b0)
|
||||
---
|
||||
src/client/qwaylandshmbackingstore.cpp | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
|
||||
index 90e37e95..145f933b 100644
|
||||
--- a/src/client/qwaylandshmbackingstore.cpp
|
||||
+++ b/src/client/qwaylandshmbackingstore.cpp
|
||||
@@ -186,8 +186,6 @@ void QWaylandShmBackingStore::beginPaint(const QRegion ®ion)
|
||||
mPainting = true;
|
||||
ensureSize();
|
||||
|
||||
- waylandWindow()->setCanResize(false);
|
||||
-
|
||||
if (mBackBuffer->image()->hasAlphaChannel()) {
|
||||
QPainter p(paintDevice());
|
||||
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||
@@ -202,7 +200,6 @@ void QWaylandShmBackingStore::endPaint()
|
||||
mPainting = false;
|
||||
if (mPendingFlush)
|
||||
flush(window(), mPendingRegion, QPoint());
|
||||
- waylandWindow()->setCanResize(true);
|
||||
}
|
||||
|
||||
void QWaylandShmBackingStore::ensureSize()
|
||||
--
|
||||
2.41.0
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
Summary: Qt5 - Wayland platform support and QtCompositor module
|
||||
Name: qt5-%{qt_module}
|
||||
Version: 5.15.10
|
||||
Release: 4%{?dist}
|
||||
Version: 5.15.11
|
||||
Release: 1%{?dist}
|
||||
|
||||
License: LGPL-3.0-only OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
Url: http://www.qt.io
|
||||
@ -13,7 +13,7 @@ Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submod
|
||||
## Upstream patches
|
||||
## repo: https://invent.kde.org/qt/qt/qtwayland
|
||||
## branch: kde/5.15
|
||||
## git format-patch v5.15.8-lts-lgpl
|
||||
## git format-patch v5.15.11-lts-lgpl
|
||||
Patch1: 0001-Client-Announce-an-output-after-receiving-more-compl.patch
|
||||
Patch2: 0002-Fix-issue-with-repeated-window-size-changes.patch
|
||||
Patch3: 0003-Client-Connect-drags-being-accepted-to-updating-the-.patch
|
||||
@ -41,30 +41,38 @@ Patch24: 0024-Revert-Client-Remove-mWaitingForUpdateDelivery.patch
|
||||
Patch25: 0025-Fix-race-condition-on-mWaitingForUpdateDelivery.patch
|
||||
Patch26: 0026-use-poll-2-when-reading-from-clipboard.patch
|
||||
Patch27: 0027-Reduce-memory-leakage.patch
|
||||
Patch28: 0028-Fix-build-with-libcxx-missing-array-include.patch
|
||||
Patch29: 0029-Only-close-popup-in-the-the-hierchary.patch
|
||||
Patch30: 0030-Check-pointer-for-null-before-use-in-ASSERT.patch
|
||||
Patch31: 0031-Use-wl_surface.damage_buffer-on-the-client-side.patch
|
||||
Patch32: 0032-Client-clear-focus-on-touch-cancel.patch
|
||||
Patch33: 0033-Guard-mResizeDirty-by-the-correctMutex.patch
|
||||
Patch34: 0034-Fix-compile-tests.patch
|
||||
Patch35: 0035-Use-CRLF-line-delimiter-for-text-uri-list-data.patch
|
||||
Patch36: 0036-Avoid-calling-requestUpdate-from-wrong-thread.patch
|
||||
Patch37: 0037-Call-finishDrag-in-QWaylandDataDevice-dragSourceCanc.patch
|
||||
Patch38: 0038-Hold-surface-read-lock-throughout-QWaylandEglWindow-.patch
|
||||
Patch39: 0039-Keep-toplevel-windows-in-the-top-left-corner-of-the-.patch
|
||||
Patch40: 0040-Client-Add-F_SEAL_SHRINK-seal-to-shm-backing-file.patch
|
||||
Patch41: 0041-Client-Call-wl_output_release-upon-QWaylandScreen-de.patch
|
||||
Patch42: 0042-Client-Bump-wl_output-version.patch
|
||||
Patch43: 0043-Fix-frame-sync-related-to-unprotected-multithread-ac.patch
|
||||
Patch44: 0044-Client-Handle-zwp_primary_selection_device_manager_v.patch
|
||||
Patch45: 0045-Fixes-the-build-on-CentOS.patch
|
||||
Patch46: 0046-client-Avoid-protocol-error-with-invalid-min-max-siz.patch
|
||||
Patch47: 0047-Client-Fix-handling-of-Qt-BlankCursor.patch
|
||||
Patch48: 0048-client-Force-a-roundtrip-when-an-XdgOutput-is-not-re.patch
|
||||
Patch49: 0049-Client-Manage-QMimeData-lifecycle.patch
|
||||
Patch50: 0050-client-Do-not-cast-placeholder-screens-to-QWaylandSc.patch
|
||||
Patch51: 0051-Client-Remove-flip-popup-constraints.patch
|
||||
Patch28: 0028-Only-close-popup-in-the-the-hierchary.patch
|
||||
Patch29: 0029-Check-pointer-for-null-before-use-in-ASSERT.patch
|
||||
Patch30: 0030-Use-wl_surface.damage_buffer-on-the-client-side.patch
|
||||
Patch31: 0031-Client-clear-focus-on-touch-cancel.patch
|
||||
Patch32: 0032-Guard-mResizeDirty-by-the-correctMutex.patch
|
||||
Patch33: 0033-Fix-compile-tests.patch
|
||||
Patch34: 0034-Call-finishDrag-in-QWaylandDataDevice-dragSourceCanc.patch
|
||||
Patch35: 0035-Hold-surface-read-lock-throughout-QWaylandEglWindow-.patch
|
||||
Patch36: 0036-Keep-toplevel-windows-in-the-top-left-corner-of-the-.patch
|
||||
Patch37: 0037-Client-Add-F_SEAL_SHRINK-seal-to-shm-backing-file.patch
|
||||
Patch38: 0038-Client-Call-wl_output_release-upon-QWaylandScreen-de.patch
|
||||
Patch39: 0039-Client-Bump-wl_output-version.patch
|
||||
Patch40: 0040-Fix-frame-sync-related-to-unprotected-multithread-ac.patch
|
||||
Patch41: 0041-Client-Handle-zwp_primary_selection_device_manager_v.patch
|
||||
Patch42: 0042-Fixes-the-build-on-CentOS.patch
|
||||
Patch43: 0043-client-Avoid-protocol-error-with-invalid-min-max-siz.patch
|
||||
Patch44: 0044-Client-Fix-handling-of-Qt-BlankCursor.patch
|
||||
Patch45: 0045-client-Force-a-roundtrip-when-an-XdgOutput-is-not-re.patch
|
||||
Patch46: 0046-Client-Manage-QMimeData-lifecycle.patch
|
||||
Patch47: 0047-client-Do-not-cast-placeholder-screens-to-QWaylandSc.patch
|
||||
Patch48: 0048-Client-Remove-flip-popup-constraints.patch
|
||||
Patch49: 0049-Destroy-frame-queue-before-display.patch
|
||||
Patch50: 0050-client-Fix-crash-on-dnd-updates-after-client-facing-.patch
|
||||
Patch51: 0051-Convert-cursor-bitmap-to-supported-format.patch
|
||||
Patch52: 0052-Replace-scale-with-devicePixelRatio-for-non-integer-.patch
|
||||
Patch53: 0053-Client-Fix-buffer-damage.patch
|
||||
Patch54: 0054-client-Fix-infinite-recursion-with-text-input-v2.patch
|
||||
Patch55: 0055-Client-Fix-the-mouse-being-stuck-in-pressed-state-af.patch
|
||||
Patch56: 0056-Client-Commit-the-initial-surface-state-explicitly.patch
|
||||
Patch57: 0057-tests-Fix-tst_xdgshell-minMaxSize.patch
|
||||
Patch58: 0058-Client-Remove-some-surface-commits.patch
|
||||
Patch59: 0059-Client-Avoid-locking-resizing-in-QWaylandShmBackingS.patch
|
||||
|
||||
# Use QAdwaitaDecorations by default
|
||||
Patch100: qtwayland-use-adwaita-decorations-by-default.patch
|
||||
@ -178,6 +186,9 @@ popd
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Oct 06 2023 Jan Grulich <jgrulich@redhat.com> - 5.15.11-1
|
||||
- 5.15.11
|
||||
|
||||
* Tue Aug 22 2023 Jan Grulich <jgrulich@redhat.com> - 5.15.10-4
|
||||
- Rebuild (qtbase)
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (qtwayland-everywhere-opensource-src-5.15.10.tar.xz) = 214b1fec7dfd815d148a7485f7811e623b06d172e58e4ee3167264a4e4b8f4aeec11474e574f91652a0bd3a48476a6747cad468f1e5035c49a55a96fc1400899
|
||||
SHA512 (qtwayland-everywhere-opensource-src-5.15.11.tar.xz) = b47a3358bc37f52dde0839940431e8049abfaa827722e6d57362b07547c35fe9fb422d28fd28c69a13f5773c24efc3eeea1e584372737a0151ed94bf4c5b9980
|
||||
|
Loading…
Reference in New Issue
Block a user