1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-05-28 20:12:11 +02:00
Files
guix/gnu/packages/patches/qtwayland-5.15.18-0054-client-avoid-locking-resizing-in-qwaylandshmbackings.patch
T
Danny Milosavljevic 9d24fa2837 gnu: qtwayland@5: Add patches from KDE Qt5 Patch Collection.
The KDE Qt5 Patch Collection (kde/5.15 branch) maintains backported fixes
for Qt 5.15 that were not backported by Qt upstream.  This includes a fix
for QTBUG-103391: a fatal Wayland protocol error when a QDialog's
maximumWidth is less than the minimum width required by its contents.
Qt's Wayland backend sent set_min_size and set_max_size without ensuring
max >= min, violating the xdg-shell protocol.

* gnu/packages/patches/qtwayland-5.15.18-0001-client-announce-an-output-after-receiving-more-compl.patch,
gnu/packages/patches/qtwayland-5.15.18-0002-fix-issue-with-repeated-window-size-changes.patch,
gnu/packages/patches/qtwayland-5.15.18-0003-client-connect-drags-being-accepted-to-updating-the-.patch,
gnu/packages/patches/qtwayland-5.15.18-0004-client-disconnect-registry-listener-on-destruction.patch,
gnu/packages/patches/qtwayland-5.15.18-0005-client-set-xdgshell-size-hints-before-the-first-comm.patch,
gnu/packages/patches/qtwayland-5.15.18-0006-fix-build.patch,
gnu/packages/patches/qtwayland-5.15.18-0007-fix-remove-listener.patch,
gnu/packages/patches/qtwayland-5.15.18-0008-hook-up-querykeyboardmodifers.patch,
gnu/packages/patches/qtwayland-5.15.18-0009-correctly-detect-if-image-format-is-supported-by-qim.patch,
gnu/packages/patches/qtwayland-5.15.18-0010-client-don-t-always-recreate-frame-callbacks.patch,
gnu/packages/patches/qtwayland-5.15.18-0011-client-always-destroy-frame-callback-in-the-actual-c.patch,
gnu/packages/patches/qtwayland-5.15.18-0012-wayland-client-use-wl_keyboard-to-determine-active-s.patch,
gnu/packages/patches/qtwayland-5.15.18-0013-client-do-not-empty-clipboard-when-a-new-popup-windo.patch,
gnu/packages/patches/qtwayland-5.15.18-0014-client-implement-datadevicev3.patch,
gnu/packages/patches/qtwayland-5.15.18-0015-client-delay-deletion-of-qdrag-object-until-after-we.patch,
gnu/packages/patches/qtwayland-5.15.18-0016-client-avoid-processing-of-events-when-showing-windo.patch,
gnu/packages/patches/qtwayland-5.15.18-0017-handle-registry_global-out-of-constructor.patch,
gnu/packages/patches/qtwayland-5.15.18-0018-connect-flushrequest-after-forceroundtrip.patch,
gnu/packages/patches/qtwayland-5.15.18-0019-move-the-wayland-socket-polling-to-a-separate-event-.patch,
gnu/packages/patches/qtwayland-5.15.18-0020-client-remove-mwaitingforupdatedelivery.patch,
gnu/packages/patches/qtwayland-5.15.18-0021-client-simplify-round-trip-behavior.patch,
gnu/packages/patches/qtwayland-5.15.18-0022-client-fix-opaque-region-setter.patch,
gnu/packages/patches/qtwayland-5.15.18-0023-use-proper-dependencies-in-compile-tests.patch,
gnu/packages/patches/qtwayland-5.15.18-0024-revert-client-remove-mwaitingforupdatedelivery.patch,
gnu/packages/patches/qtwayland-5.15.18-0025-fix-race-condition-on-mwaitingforupdatedelivery.patch,
gnu/packages/patches/qtwayland-5.15.18-0026-use-poll-2-when-reading-from-clipboard.patch,
gnu/packages/patches/qtwayland-5.15.18-0027-reduce-memory-leakage.patch,
gnu/packages/patches/qtwayland-5.15.18-0028-only-close-popup-in-the-the-hierchary.patch,
gnu/packages/patches/qtwayland-5.15.18-0029-check-pointer-for-null-before-use-in-assert.patch,
gnu/packages/patches/qtwayland-5.15.18-0030-use-wl_surface.damage_buffer-on-the-client-side.patch,
gnu/packages/patches/qtwayland-5.15.18-0031-client-clear-focus-on-touch-cancel.patch,
gnu/packages/patches/qtwayland-5.15.18-0032-guard-mresizedirty-by-the-correctmutex.patch,
gnu/packages/patches/qtwayland-5.15.18-0033-fix-compile-tests.patch,
gnu/packages/patches/qtwayland-5.15.18-0034-call-finishdrag-in-qwaylanddatadevice-dragsourcecanc.patch,
gnu/packages/patches/qtwayland-5.15.18-0035-hold-surface-read-lock-throughout-qwaylandeglwindow-.patch,
gnu/packages/patches/qtwayland-5.15.18-0036-keep-toplevel-windows-in-the-top-left-corner-of-the-.patch,
gnu/packages/patches/qtwayland-5.15.18-0037-client-add-f_seal_shrink-seal-to-shm-backing-file.patch,
gnu/packages/patches/qtwayland-5.15.18-0038-client-call-wl_output_release-upon-qwaylandscreen-de.patch,
gnu/packages/patches/qtwayland-5.15.18-0039-client-bump-wl_output-version.patch,
gnu/packages/patches/qtwayland-5.15.18-0040-fix-frame-sync-related-to-unprotected-multithread-ac.patch,
gnu/packages/patches/qtwayland-5.15.18-0041-client-handle-zwp_primary_selection_device_manager_v.patch,
gnu/packages/patches/qtwayland-5.15.18-0042-fixes-the-build-on-centos.patch,
gnu/packages/patches/qtwayland-5.15.18-0043-client-avoid-protocol-error-with-invalid-min-max-siz.patch,
gnu/packages/patches/qtwayland-5.15.18-0044-client-fix-handling-of-qt-blankcursor.patch,
gnu/packages/patches/qtwayland-5.15.18-0045-client-force-a-roundtrip-when-an-xdgoutput-is-not-re.patch,
gnu/packages/patches/qtwayland-5.15.18-0046-destroy-frame-queue-before-display.patch,
gnu/packages/patches/qtwayland-5.15.18-0047-client-fix-crash-on-dnd-updates-after-client-facing-.patch,
gnu/packages/patches/qtwayland-5.15.18-0048-convert-cursor-bitmap-to-supported-format.patch,
gnu/packages/patches/qtwayland-5.15.18-0049-replace-scale-with-devicepixelratio-for-non-integer-.patch,
gnu/packages/patches/qtwayland-5.15.18-0050-client-fix-buffer-damage.patch,
gnu/packages/patches/qtwayland-5.15.18-0051-client-commit-the-initial-surface-state-explicitly.patch,
gnu/packages/patches/qtwayland-5.15.18-0052-tests-fix-tst_xdgshell-minmaxsize.patch,
gnu/packages/patches/qtwayland-5.15.18-0053-client-remove-some-surface-commits.patch,
gnu/packages/patches/qtwayland-5.15.18-0054-client-avoid-locking-resizing-in-qwaylandshmbackings.patch,
gnu/packages/patches/qtwayland-5.15.18-0055-bradient-use-qwaylandwindow-actual-window-title.patch: New files.
* gnu/packages/patches/qtwayland-dont-recreate-callbacks.patch,
gnu/packages/patches/qtwayland-cleanup-callbacks.patch: Delete files,
superseded by KDE patches 0010 and 0011.
* gnu/local.mk (dist_patch_DATA): Register new patches, remove old ones.
* gnu/packages/qt.scm (qtwayland-5)[source]: Replace old patches with KDE
Qt5 Patch Collection.
[arguments]<:phases>{disable-failing-tests}: Skip tst_xdgshell::minMaxSize()
test; patch 0053 removed the synchronous surface commit from
propagateSizeHints(), so the test's immediate check of the committed value
no longer works.

Fixes: guix/guix#6397
Change-Id: Ia9e890c2943c47287f73654d1654e06ba775b6f6
2026-02-16 11:40:38 +01:00

70 lines
2.8 KiB
Diff

From 65d602246c65d6d77abf0d7902a764ae947ab872 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 54/55] 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 &region)
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.52.0