- Pull in latest kde/5.15 branch fixes

This commit is contained in:
kenneth topp 2022-04-16 01:30:41 -04:00
parent c0d2e05300
commit f5e11f7f70
45 changed files with 264 additions and 41 deletions

View File

@ -1,7 +1,7 @@
From 610af8f0ba9de42cb22228e4e4b3fd77275e3e17 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Tue, 9 Mar 2021 10:43:59 -0800
Subject: [PATCH 01/40] Use qWarning and _exit() instead of qFatal for wayland
Subject: [PATCH 01/44] Use qWarning and _exit() instead of qFatal for wayland
error
This type of error is likely to happen upon system logout. qFatal would

View File

@ -1,7 +1,7 @@
From d353938c1a07a803656489cada8683e31f8f1c62 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Wed, 10 Feb 2021 17:11:27 +0100
Subject: [PATCH 02/40] Translate opaque area with frame margins
Subject: [PATCH 02/44] Translate opaque area with frame margins
The opaque area doesn't take window decorations into account, which may
result into possible graphical artefacts.

View File

@ -1,7 +1,7 @@
From 11e9bd41951ec9f229e20566f821aa39ca011352 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 14 Sep 2020 17:08:39 +0100
Subject: [PATCH 03/40] Client: Send exposeEvent to parent on subsurface
Subject: [PATCH 03/44] Client: Send exposeEvent to parent on subsurface
position changes
When a subsurface is moved, we need the parent window to commit to apply

View File

@ -1,7 +1,7 @@
From 50a9256db8cd43665cf74cf94a293d1c05375d33 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Thu, 11 Feb 2021 15:12:32 +0100
Subject: [PATCH 04/40] Get correct decoration margins region
Subject: [PATCH 04/44] Get correct decoration margins region
Size we use to calculate margins region already contains size including
margins. This resulted into bigger region and not properly damaging

View File

@ -1,7 +1,7 @@
From f408482e4364293e5ab9889854a759796436971d Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Mon, 23 Nov 2020 20:07:02 +0100
Subject: [PATCH 05/40] xdgshell: Tell the compositor the screen we're
Subject: [PATCH 05/44] xdgshell: Tell the compositor the screen we're
expecting to fill
The xdgshell protocol allows us to tell the output to fill. This makes

View File

@ -1,7 +1,7 @@
From d6dd815014564f235fb972eb72d28ccca6cf3549 Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Wed, 10 Mar 2021 01:09:13 +0100
Subject: [PATCH 06/40] client: Allow QWaylandInputContext to accept composed
Subject: [PATCH 06/44] client: Allow QWaylandInputContext to accept composed
key combinations
At the moment, we are forcing user to choose to either compose or use

View File

@ -1,7 +1,7 @@
From a6fb2a976ecd778e450afe89c180c8c748beb568 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 07/40] Client: Announce an output after receiving more
Subject: [PATCH 07/44] Client: Announce an output after receiving more
complete state
Output initialization is not atomic, meaning that the compositor may

View File

@ -1,7 +1,7 @@
From bb9288c913dc49aefc3fad03ec243809b6b21a88 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 08/40] Fix issue with repeated window size changes
Subject: [PATCH 08/44] 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

View File

@ -1,7 +1,7 @@
From 82720c9d7e0a706793f9716144347171820ddf4d Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <albert.astals.cid@kdab.com>
Date: Mon, 10 May 2021 14:38:49 +0200
Subject: [PATCH 09/40] Include locale.h for setlocale/LC_CTYPE
Subject: [PATCH 09/44] Include locale.h for setlocale/LC_CTYPE
Pick-to: 5.15
Change-Id: Iced32a31a63cec71008549c1e0961d59ffc45a37

View File

@ -1,7 +1,7 @@
From 6b2084a4c9f87d3575fc6aec3f7454304bcc6188 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Tue, 9 Feb 2021 16:09:21 +0000
Subject: [PATCH 10/40] Client: Connect drags being accepted to updating the
Subject: [PATCH 10/44] Client: Connect drags being accepted to updating the
source drag icon
Currently in a multi-process drag and drop when the other client accepts

View File

@ -1,7 +1,7 @@
From a1d6aa2078b8a840469f13ae720669cb4f99291d Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Fri, 14 May 2021 13:23:24 +0100
Subject: [PATCH 11/40] Client: Disconnect registry listener on destruction
Subject: [PATCH 11/44] 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

View File

@ -1,7 +1,7 @@
From d9d7c73f908db351921cf016c5e079f3d13e84aa Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 3 May 2021 23:01:53 +0100
Subject: [PATCH 12/40] Client: Set XdgShell size hints before the first commit
Subject: [PATCH 12/44] 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

View File

@ -1,7 +1,7 @@
From 2e8e8b87d800f1ef2e0fb0a6f0818de0a8fa0951 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 14 Jun 2021 12:45:37 +0100
Subject: [PATCH 13/40] Fix build
Subject: [PATCH 13/44] Fix build
1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't
backport.

View File

@ -1,7 +1,7 @@
From 88b2e6c9728d01a9aa334026629fbb1ce85fe197 Mon Sep 17 00:00:00 2001
From: Zhang Liang <zhanglianga@uniontech.com>
Date: Mon, 1 Feb 2021 19:29:43 +0800
Subject: [PATCH 14/40] Fix: remove listener
Subject: [PATCH 14/44] Fix: remove listener
Add the operation for removing the listener form listener list

View File

@ -1,7 +1,7 @@
From 75693b47dcac101f74f98e5902c4c6b39d407e4f 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 15/40] Hook up queryKeyboardModifers
Subject: [PATCH 15/44] Hook up queryKeyboardModifers
Can be useful when upon enter a modifiers event is received but no key
event so no QKeyEvent is generated.

View File

@ -1,7 +1,7 @@
From 537c5d43941d26d89ebf00f6abf7f12f9bac1caf Mon Sep 17 00:00:00 2001
From: Aleix Pol <aleixpol@kde.org>
Date: Tue, 13 Jul 2021 13:32:15 +0200
Subject: [PATCH 16/40] Do not update the mask if we do not have a surface
Subject: [PATCH 16/44] Do not update the mask if we do not have a surface
mMask serves as a cache to remember what we've sent, the source of truth
for the value is window()->mask().

View File

@ -1,7 +1,7 @@
From ae3ea8875b9475532e5779154e3992affe2b9a32 Mon Sep 17 00:00:00 2001
From: Jan Blackquill <uhhadd@gmail.com>
Date: Tue, 24 Aug 2021 14:36:34 -0400
Subject: [PATCH 17/40] Correctly detect if image format is supported by
Subject: [PATCH 17/44] Correctly detect if image format is supported by
QImageWriter
The code queries potential image formats by stripping a mimetype of its

View File

@ -1,7 +1,7 @@
From 8d673fe2edebe2c5bf338a779ef22ae212dc244a Mon Sep 17 00:00:00 2001
From: Paul Olav Tvete <paul.tvete@qt.io>
Date: Tue, 14 Sep 2021 11:56:23 +0200
Subject: [PATCH 18/40] Wayland client: Fix crash when windows are shown/hidden
Subject: [PATCH 18/44] Wayland client: Fix crash when windows are shown/hidden
during drag
Fixes: QTBUG-87624

View File

@ -1,7 +1,7 @@
From bdd2dacf2d8668b3a1f59db3c6cc859f95868eb2 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 19/40] Client: Don't always recreate frame callbacks
Subject: [PATCH 19/44] 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

View File

@ -1,7 +1,7 @@
From fb0a5265ec9d83b56563769cc1b756aeca42ce65 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 20/40] Client: Always destroy frame callback in the actual
Subject: [PATCH 20/44] Client: Always destroy frame callback in the actual
callback
It's good hygiene to destroy all frame callbacks. Destroy the

View File

@ -1,7 +1,7 @@
From 1e0519c6465335dd380ad8d8209969c71eb78d48 Mon Sep 17 00:00:00 2001
From: Rodney Dawes <dobey.pwns@gmail.com>
Date: Fri, 15 Oct 2021 12:55:33 -0400
Subject: [PATCH 21/40] Fix the logic for decoding modifiers map in Wayland
Subject: [PATCH 21/44] Fix the logic for decoding modifiers map in Wayland
text input protocol
Correctly check for the flags in the modifiers map when we get it from

View File

@ -1,7 +1,7 @@
From 64e133f830ce48b6732397325b768ed9193c2cb4 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 22/40] Wayland client: use wl_keyboard to determine active
Subject: [PATCH 22/44] Wayland client: use wl_keyboard to determine active
state
Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay

View File

@ -1,7 +1,7 @@
From 167a89d23d4db6f62ef8336002fe306829604a77 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Fri, 16 Jul 2021 13:00:03 +0200
Subject: [PATCH 23/40] Client: do not empty clipboard when a new popup/window
Subject: [PATCH 23/44] 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

View File

@ -1,7 +1,7 @@
From 5ea11ccde21448f5c61978bf52e2f3db79a7143c Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Sat, 18 Dec 2021 23:42:49 -0800
Subject: [PATCH 24/40] Set preedit cursor when cursor equals to 0
Subject: [PATCH 24/44] Set preedit cursor when cursor equals to 0
Pick-to: 6.3 6.2 5.15
Change-Id: I832fbb22d973b36ac4ab51570fc53bc2e4c3ed58

View File

@ -1,7 +1,7 @@
From 95783492ae8df7f84c3c13351df5dc114288e96e Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Tue, 16 Feb 2021 09:51:47 +0000
Subject: [PATCH 25/40] Client: Implement DataDeviceV3
Subject: [PATCH 25/44] Client: Implement DataDeviceV3
DataDeviceV2 fixes a leak of DataDevice resources.

View File

@ -1,7 +1,7 @@
From 8c9e148bb0aa25cbc831e2bd931d3bd54bc0fb46 Mon Sep 17 00:00:00 2001
From: Arjen Hiemstra <ahiemstra@heimr.nl>
Date: Thu, 18 Nov 2021 13:05:30 +0100
Subject: [PATCH 26/40] Client: Delay deletion of QDrag object until after
Subject: [PATCH 26/44] Client: Delay deletion of QDrag object until after
we're done with it
In certain cases, most notably when performing drag and drop operations

View File

@ -1,7 +1,7 @@
From b736b4488dcaa1a3c6b0c6059e5b85881f74c52b Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Sun, 14 Nov 2021 13:54:19 +0000
Subject: [PATCH 27/40] Client: Avoid processing of events when showing windows
Subject: [PATCH 27/44] 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

View File

@ -1,7 +1,7 @@
From 771705eee02b4d752beee22ef5408ccbd72078cc 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 28/40] Handle registry_global out of constructor
Subject: [PATCH 28/44] 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

View File

@ -1,7 +1,7 @@
From 725c5de6bdd528d1fa03f1de5ec91585eb110d83 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 29/40] Connect flushRequest after forceRoundTrip
Subject: [PATCH 29/44] Connect flushRequest after forceRoundTrip
If flushRequest is connected with aboutToBlock, the flushRequest
may consumes all events so that processEvents might be blocked in forceRoundTrip.

View File

@ -1,7 +1,7 @@
From 91d36a2497f3289996d788c8974583bccac3c842 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 30/40] Move the wayland socket polling to a separate event
Subject: [PATCH 30/44] Move the wayland socket polling to a separate event
thread
New event threads is introduced which calls poll() on the wayland fd,

View File

@ -1,7 +1,7 @@
From ca1d9023b6d40a128faad652f02881b5805e36ba 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 31/40] Check pointer for null before use in ASSERT
Subject: [PATCH 31/44] Check pointer for null before use in ASSERT
Task-number: QTBUG-85195
Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414

View File

@ -1,7 +1,7 @@
From e6b30f42f8eec2ecc10395593dbfff354acd5425 Mon Sep 17 00:00:00 2001
From: Inho Lee <inho.lee@qt.io>
Date: Mon, 1 Nov 2021 14:23:58 +0100
Subject: [PATCH 32/40] Do not create decorations when the shellSurface is not
Subject: [PATCH 32/44] Do not create decorations when the shellSurface is not
ready
A cases reported that client windows try to make decorations

View File

@ -1,7 +1,7 @@
From 3027c9659866101c06252829d99e7597cef19a40 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 33/40] Use wl_surface.damage_buffer on the client side
Subject: [PATCH 33/44] Use wl_surface.damage_buffer on the client side
Prefer the newer, recommended damage_buffer when the compositor
supports it.

View File

@ -1,7 +1,7 @@
From 297c4e075068bffe4a396b2553afc4798c97fb4c Mon Sep 17 00:00:00 2001
From: Joni Poikelin <joni.poikelin@qt.io>
Date: Thu, 3 Feb 2022 14:01:50 +0200
Subject: [PATCH 34/40] Fix crash if no input method module could be loaded
Subject: [PATCH 34/44] Fix crash if no input method module could be loaded
Pick-to: 6.2 6.3 5.15
Change-Id: I8f346def616606a6c5540856bd08a84ee7ed5ca2

View File

@ -1,7 +1,7 @@
From a97759d032a40045551546ca17300891d4067ee4 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 35/40] Client: Remove mWaitingForUpdateDelivery
Subject: [PATCH 35/44] Client: Remove mWaitingForUpdateDelivery
Currently, mWaitingForUpdateDelivery is shared between the main thread
(doHandleFrameCallback()) and the frame callback event thread

View File

@ -1,7 +1,7 @@
From d3b794920d643fc5d722f63ad52b91e8143c0de0 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Tue, 8 Feb 2022 07:11:25 -0800
Subject: [PATCH 36/40] Cursor position == 0 should still show the cursor
Subject: [PATCH 36/44] Cursor position == 0 should still show the cursor
Otherwise the cursor would be hidden even if preedit is empty.
Amends 719a55be13bdadfa659a732755f280e276a894bd

View File

@ -1,7 +1,7 @@
From 3ddd4dcb1790920ce2598ebdbe14c95bdba55005 Mon Sep 17 00:00:00 2001
From: Weng Xuetian <wengxt@gmail.com>
Date: Wed, 22 Dec 2021 10:42:38 -0800
Subject: [PATCH 37/40] Update the preedit styling mapping
Subject: [PATCH 37/44] Update the preedit styling mapping
- None mapping to no style.
- Default/Underline mapping to underline.

View File

@ -1,7 +1,7 @@
From 971dbf2d5be743ddeb998f7461ff3e06ccb892c4 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Wed, 9 Feb 2022 17:20:48 +0000
Subject: [PATCH 38/40] client: Simplify round trip behavior
Subject: [PATCH 38/44] client: Simplify round trip behavior
The custom event queue was removed in
302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not

View File

@ -1,7 +1,7 @@
From 9930ed9942d2d26211195571673bea35261ad26b 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 39/40] Client: Fix opaque region setter
Subject: [PATCH 39/44] 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.

View File

@ -1,7 +1,7 @@
From 118674630cdb5933e66a8b4415afe7c716ad4662 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 40/40] Use proper dependencies in compile tests
Subject: [PATCH 40/44] 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").

View File

@ -0,0 +1,50 @@
From a06fde8dae162166435833fca7844e2695e8480b Mon Sep 17 00:00:00 2001
From: Liang Qi <liang.qi@qt.io>
Date: Wed, 9 Mar 2022 10:47:42 +0100
Subject: [PATCH 41/44] client: update button state and etc in pointer_leave()
The cleanup work needs to be done even the surface is null, for
example, a window was closed in mouse press handler, then will not
get a mouse release.
Fixes: QTBUG-100942
Pick-to: 5.15 6.2 6.3
Change-Id: I637a6744909ddbe62bdeba6b21494e5a6ae7fa9f
Reviewed-by: Tang Haixiang <tanghaixiang@uniontech.com>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 409d1080f25b653b3ff3f57c9776c5c390912206)
---
src/client/qwaylandinputdevice.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
index 514457e9..aca42cdc 100644
--- a/src/client/qwaylandinputdevice.cpp
+++ b/src/client/qwaylandinputdevice.cpp
@@ -685,6 +685,11 @@ public:
void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surface *surface)
{
+ invalidateFocus();
+ mButtons = Qt::NoButton;
+
+ mParent->mTime = time;
+
// The event may arrive after destroying the window, indicated by
// a null surface.
if (!surface)
@@ -696,11 +701,6 @@ void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surfac
if (!QWaylandWindow::mouseGrab())
setFrameEvent(new LeaveEvent(window, mSurfacePos, mGlobalPos));
-
- invalidateFocus();
- mButtons = Qt::NoButton;
-
- mParent->mTime = time;
}
class MotionEvent : public QWaylandPointerEvent
--
2.35.1

View File

@ -0,0 +1,59 @@
From 1acd85e8b71610141bbe5bfc804e92ddafb56505 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 42/44] Revert "Client: Remove mWaitingForUpdateDelivery"
The reverted commit introduces a severe performance regression
when a client window is resized while a QtQuick renderthread
animation is running.
This reverts commit feb1a5c207c13d0bf87c0d8ad039279dbf8cee9e.
Fixes: QTBUG-101726
Change-Id: Ib5b52ce06efec8c86fada1623c2af82099e57fc6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
---
src/client/qwaylandwindow.cpp | 12 +++++++++---
src/client/qwaylandwindow_p.h | 1 +
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index fee2ecdd..bf41cc5b 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -655,11 +655,17 @@ void QWaylandWindow::handleFrameCallback()
sendExposeEvent(QRect(QPoint(), geometry().size()));
if (wasExposed && hasPendingUpdateRequest())
deliverUpdateRequest();
+
+ mWaitingForUpdateDelivery = false;
};
- // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
- // in the single-threaded case.
- QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+ if (!mWaitingForUpdateDelivery) {
+ // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
+ // in the single-threaded case.
+ mWaitingForUpdateDelivery = true;
+ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+ }
+
mFrameSyncWait.notify_all();
}
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index 3ff68ccb..d45980a8 100644
--- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h
@@ -228,6 +228,7 @@ protected:
WId mWindowId;
bool mWaitingForFrameCallback = false;
bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
+ bool mWaitingForUpdateDelivery = false;
int mFrameCallbackCheckIntervalTimerId = -1;
QElapsedTimer mFrameCallbackElapsedTimer;
struct ::wl_callback *mFrameCallback = nullptr;
--
2.35.1

View File

@ -0,0 +1,59 @@
From 3c9619bded58f09a85df01a4ef46474bf147b2a0 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 43/44] Fix race condition on mWaitingForUpdateDelivery
Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da
Reviewed-by: David Edmundson <davidedmundson@kde.org>
---
src/client/qwaylandwindow.cpp | 7 ++-----
src/client/qwaylandwindow_p.h | 2 +-
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index bf41cc5b..ceaa4c73 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -649,24 +649,21 @@ void QWaylandWindow::handleFrameCallback()
// The rest can wait until we can run it on the correct thread
auto doHandleExpose = [this]() {
+ mWaitingForUpdateDelivery.storeRelease(false);
bool wasExposed = isExposed();
mFrameCallbackTimedOut = false;
if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
sendExposeEvent(QRect(QPoint(), geometry().size()));
if (wasExposed && hasPendingUpdateRequest())
deliverUpdateRequest();
-
- mWaitingForUpdateDelivery = false;
};
- if (!mWaitingForUpdateDelivery) {
+ if (mWaitingForUpdateDelivery.testAndSetAcquire(false, true)) {
// Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
// in the single-threaded case.
- mWaitingForUpdateDelivery = true;
QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
}
-
mFrameSyncWait.notify_all();
}
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index d45980a8..cb9135f6 100644
--- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h
@@ -228,7 +228,7 @@ protected:
WId mWindowId;
bool mWaitingForFrameCallback = false;
bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
- bool mWaitingForUpdateDelivery = false;
+ QAtomicInt mWaitingForUpdateDelivery = false;
int mFrameCallbackCheckIntervalTimerId = -1;
QElapsedTimer mFrameCallbackElapsedTimer;
struct ::wl_callback *mFrameCallback = nullptr;
--
2.35.1

View File

@ -0,0 +1,48 @@
From 398040301e439cc20bcd537bad7095d7eb6f285a Mon Sep 17 00:00:00 2001
From: Kenneth Topp <ken@bllue.org>
Date: Mon, 4 Apr 2022 09:36:21 -0400
Subject: [PATCH 44/44] 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
Change-Id: I6d98c6bb11cdd5b6171b01cfeb0044dd41cf9fb5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 829a9f62a96721c142f53e12a8812e8231b20317)
---
src/client/qwaylanddataoffer.cpp | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp
index c9e158cc..fe0ea8c9 100644
--- a/src/client/qwaylanddataoffer.cpp
+++ b/src/client/qwaylanddataoffer.cpp
@@ -188,17 +188,18 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
int QWaylandMimeData::readData(int fd, QByteArray &data) const
{
- fd_set readset;
- FD_ZERO(&readset);
- FD_SET(fd, &readset);
- struct timeval timeout;
+ struct pollfd readset;
+ readset.fd = fd;
+ readset.events = POLLIN;
+ struct timespec timeout;
timeout.tv_sec = 1;
- timeout.tv_usec = 0;
+ timeout.tv_nsec = 0;
+
Q_FOREVER {
- int ready = select(FD_SETSIZE, &readset, nullptr, nullptr, &timeout);
+ int ready = qt_safe_poll(&readset, 1, &timeout);
if (ready < 0) {
- qWarning() << "QWaylandDataOffer: select() failed";
+ qWarning() << "QWaylandDataOffer: qt_safe_poll() failed";
return -1;
} else if (ready == 0) {
qWarning("QWaylandDataOffer: timeout reading from pipe");
--
2.35.1

View File

@ -3,7 +3,7 @@
Summary: Qt5 - Wayland platform support and QtCompositor module
Name: qt5-%{qt_module}
Version: 5.15.3
Release: 1%{?dist}
Release: 2%{?dist}
License: LGPLv3
Url: http://www.qt.io
@ -54,6 +54,10 @@ Patch37: 0037-Update-the-preedit-styling-mapping.patch
Patch38: 0038-client-Simplify-round-trip-behavior.patch
Patch39: 0039-Client-Fix-opaque-region-setter.patch
Patch40: 0040-Use-proper-dependencies-in-compile-tests.patch
Patch41: 0041-client-update-button-state-and-etc-in-pointer_leave.patch
Patch42: 0042-Revert-Client-Remove-mWaitingForUpdateDelivery.patch
Patch43: 0043-Fix-race-condition-on-mWaitingForUpdateDelivery.patch
Patch44: 0044-use-poll-2-when-reading-from-clipboard.patch
# Disable for now, there is a Qt bug making this broken
# Patch102: qtwayland-decoration-support-backports-from-qt6.patch
@ -166,6 +170,9 @@ popd
%changelog
* Fri Apr 15 2022 Kenneth Topp <toppk@bllue.org> - 5.15.3-2
- Pull in latest kde/5.15 branch fixes
* Fri Mar 04 2022 Jan Grulich <jgrulich@redhat.com> - 5.15.3-1
- 5.15.3