Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-wayland for openSUSE:Factory checked in at 2025-04-18 16:14:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-wayland (Old) and /work/SRC/openSUSE:Factory/.qt6-wayland.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-wayland" Fri Apr 18 16:14:36 2025 rev:47 rq:1270197 version:6.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-wayland/qt6-wayland.changes 2025-04-07 17:35:47.010731455 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-wayland.new.30101/qt6-wayland.changes 2025-04-20 20:08:44.251050010 +0200 @@ -1,0 +2,6 @@ +Thu Apr 17 07:31:29 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Add upstream change: + * 0001-Client-Reset-mFrameCallbackTimedOut-when-showing-a-w.patch + +------------------------------------------------------------------- New: ---- 0001-Client-Reset-mFrameCallbackTimedOut-when-showing-a-w.patch BETA DEBUG BEGIN: New:- Add upstream change: * 0001-Client-Reset-mFrameCallbackTimedOut-when-showing-a-w.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-wayland.spec ++++++ --- /var/tmp/diff_new_pack.DR4FR6/_old 2025-04-20 20:08:44.935078760 +0200 +++ /var/tmp/diff_new_pack.DR4FR6/_new 2025-04-20 20:08:44.935078760 +0200 @@ -41,6 +41,8 @@ URL: https://www.qt.io Source0: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz Source99: qt6-wayland-rpmlintrc +# PATCH-FIX-UPSTREAM +Patch0: 0001-Client-Reset-mFrameCallbackTimedOut-when-showing-a-w.patch BuildRequires: pkgconfig BuildRequires: qt6-platformsupport-private-devel BuildRequires: cmake(Qt6Core) = %{real_version} ++++++ 0001-Client-Reset-mFrameCallbackTimedOut-when-showing-a-w.patch ++++++ >From e4556c59f0c8250da7c16759432b2ac0a5ac9d9f Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii <vlad.zahorod...@kde.org> Date: Mon, 31 Mar 2025 11:40:12 +0300 Subject: [PATCH] Client: Reset mFrameCallbackTimedOut when showing a window When a window is hidden, the corresponding expose event is sent asynchronously. So, a buffer (and a frame callback) can be attached after the window is hidden. QWaylandWindow::initWindow() handles that case by attaching a nil buffer to the surface, but it skips resetting the frame callback things. If mFrameCallbackTimedOut is not reset, then the window can get stuck in the unexposed state and not show up after the second setVisible(true). This change makes the initWindow() function also reset frame callback data. It fixes some windows not showing up after remapping them. Change-Id: I8952ffed24844c73721c4f689786146c317e014d Reviewed-by: David Edmundson <davidedmund...@kde.org> (cherry picked from commit 3a48c2b92565cde21a9330f125e61487391921c4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_...@qt-project.org> --- src/client/qwaylandwindow.cpp | 13 ++++++++++--- src/client/qwaylandwindow_p.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index 7a3bf6dd..578a84e9 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -106,6 +106,7 @@ void QWaylandWindow::initWindow() */ mSurface->attach(nullptr, 0, 0); mSurface->commit(); + resetFrameCallback(); if (window()->type() == Qt::Desktop) return; @@ -325,6 +326,15 @@ void QWaylandWindow::resetSurfaceRole() delete std::exchange(mShellSurface, nullptr); delete std::exchange(mSubSurfaceWindow, nullptr); emit surfaceRoleDestroyed(); + + resetFrameCallback(); + mInFrameRender = false; + mWaitingToApplyConfigure = false; + mExposed = false; +} + +void QWaylandWindow::resetFrameCallback() +{ { QMutexLocker lock(&mFrameSyncMutex); if (mFrameCallback) { @@ -338,10 +348,7 @@ void QWaylandWindow::resetSurfaceRole() killTimer(mFrameCallbackCheckIntervalTimerId); mFrameCallbackCheckIntervalTimerId = -1; } - mInFrameRender = false; mFrameCallbackTimedOut = false; - mWaitingToApplyConfigure = false; - mExposed = false; } QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface) diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h index 1a99efb8..ac08f1f0 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -351,6 +351,7 @@ private: bool shouldCreateShellSurface() const; bool shouldCreateSubSurface() const; void resetSurfaceRole(); + void resetFrameCallback(); QPlatformScreen *calculateScreenFromSurfaceEvents() const; void setOpaqueArea(const QRegion &opaqueArea); bool isOpaque() const; -- 2.49.0