Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package qt6-declarative for openSUSE:Factory
checked in at 2026-10-29 18:18:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-declarative (Old)
and /work/SRC/openSUSE:Factory/.qt6-declarative.new.1255 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-declarative"
Thu Oct 29 18:18:07 2026 rev:66 rq:1393388 version:6.12.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-declarative/qt6-declarative.changes
2026-10-18 19:21:24.073976673 +0200
+++
/work/SRC/openSUSE:Factory/.qt6-declarative.new.1255/qt6-declarative.changes
2026-10-29 18:18:11.764283351 +0100
@@ -1,0 +2,6 @@
+Wed Oct 28 10:02:15 UTC 2026 - Christophe Marin <[email protected]>
+
+- Add upstream change (kde#527720)
+ * 0001-Fix-teardown-hang-with-QuickPixmapReader.patch
+
+-------------------------------------------------------------------
New:
----
0001-Fix-teardown-hang-with-QuickPixmapReader.patch
----------(New B)----------
New:- Add upstream change (kde#527720)
* 0001-Fix-teardown-hang-with-QuickPixmapReader.patch
----------(New E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qt6-declarative.spec ++++++
--- /var/tmp/diff_new_pack.6W0XMO/_old 2026-10-29 18:18:13.093339048 +0100
+++ /var/tmp/diff_new_pack.6W0XMO/_new 2026-10-29 18:18:13.097339215 +0100
@@ -41,6 +41,8 @@
Source99: qt6-declarative-rpmlintrc
# PATCH-FIX-OPENSUSE
Patch0: 0001-qmlimportscanner-Include-module-versions-again.patch
+# PATCH-FIX-UPSTREAM
+Patch1: 0001-Fix-teardown-hang-with-QuickPixmapReader.patch
BuildRequires: memory-constraints
BuildRequires: pkgconfig
BuildRequires: python3-base
++++++ 0001-Fix-teardown-hang-with-QuickPixmapReader.patch ++++++
>From bbcaf3f39143b9add9722f4e31b51fc1dd102892 Mon Sep 17 00:00:00 2001
From: David Edmundson <[email protected]>
Date: Thu, 1 Oct 2026 13:35:58 +0100
Subject: [PATCH] Fix teardown hang with QuickPixmapReader
QQuickPixmapReader is a QThread subclass that encapsulates the thread
usage in the constructor/destructor.
The current code is broken if the QQmlEngine (and thus
QuickPixmapReader) are deleted as children of the QCoreApplication. At
this point no new events are posted and the deleteLater doesn't reach
the relevant thread. We then hang forever waiting on a thread that will
never quit.
The eventloop_hack was added in 2010
(ff983ee8257b79143911ca58ebedc49b1660a0c4 before Qt split) with the
comment that QThread::quit was not thread safe. Current docs say it is.
Change-Id: I0ae1f6c5cf269dfe5cb7b96c682f50692b210da1
Reviewed-by: Marco Martin <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Shawn Rutledge <[email protected]>
(cherry picked from commit 7214a32024be080099ad05c596ee778623ed66d8)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
---
src/quick/util/qquickpixmapcache.cpp | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/src/quick/util/qquickpixmapcache.cpp
b/src/quick/util/qquickpixmapcache.cpp
index 288d7afbce..c91fa7b62c 100644
--- a/src/quick/util/qquickpixmapcache.cpp
+++ b/src/quick/util/qquickpixmapcache.cpp
@@ -261,7 +261,6 @@ private:
{
return runLoopReaderThreadExecutionEnforcer;
}
- QObject *eventLoopQuitHack;
QMutex mutex;
ReaderThreadExecutionEnforcer *runLoopReaderThreadExecutionEnforcer =
nullptr;
#else
@@ -606,9 +605,6 @@ QQuickPixmapReader::QQuickPixmapReader(QQmlEngine *eng)
Q_DETACH_THREAD_AFFINITY_MARKER(m_readerThreadAffinityMarker);
#if QT_CONFIG(quick_pixmap_cache_threaded_download)
- eventLoopQuitHack = new QObject;
- eventLoopQuitHack->moveToThread(this);
- QObject::connect(eventLoopQuitHack, &QObject::destroyed, this,
&QThread::quit, Qt::DirectConnection);
start(QThread::LowestPriority);
#else
run(); // Call nonblocking run for ourselves.
@@ -656,11 +652,7 @@ QQuickPixmapReader::~QQuickPixmapReader()
}
#if QT_CONFIG(quick_pixmap_cache_threaded_download)
- // ... schedule stopping of this thread via the eventLoopQuitHack
(processJobs scheduled above
- // will run first) ...
- eventLoopQuitHack->deleteLater();
- // ... and wait() for it all to finish, as the thread will only quit after
eventLoopQuitHack
- // has been deleted.
+ quit();
wait();
#endif
--
2.56.0