Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package plasma6-workspace for 
openSUSE:Factory checked in at 2025-09-26 22:24:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma6-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.plasma6-workspace.new.11973 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "plasma6-workspace"

Fri Sep 26 22:24:11 2025 rev:39 rq:1307065 version:6.4.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma6-workspace/plasma6-workspace.changes      
2025-09-15 19:54:16.390549531 +0200
+++ 
/work/SRC/openSUSE:Factory/.plasma6-workspace.new.11973/plasma6-workspace.changes
   2025-09-26 22:24:48.674740890 +0200
@@ -1,0 +2,7 @@
+Thu Sep 25 08:13:52 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Add patch to fix crash caused by a qtdeclarative change
+  (kde#509192, QTBUG-140018):
+  * 0001-applets-mediacontroller-Workaround-for-common-crash-.patch
+
+-------------------------------------------------------------------

New:
----
  0001-applets-mediacontroller-Workaround-for-common-crash-.patch

----------(New B)----------
  New:  (kde#509192, QTBUG-140018):
  * 0001-applets-mediacontroller-Workaround-for-common-crash-.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ plasma6-workspace.spec ++++++
--- /var/tmp/diff_new_pack.pbcv10/_old  2025-09-26 22:24:49.594779619 +0200
+++ /var/tmp/diff_new_pack.pbcv10/_new  2025-09-26 22:24:49.598779787 +0200
@@ -43,6 +43,7 @@
 Source3:        sddm.conf
 Source4:        waitforkded.conf
 # PATCH-FIX-UPSTREAM
+Patch1:         0001-applets-mediacontroller-Workaround-for-common-crash-.patch
 # PATCHES 501-??? are PATCH-FIX-OPENSUSE
 Patch501:       0001-Use-qdbus6.patch
 Patch502:       0001-Ignore-default-sddm-face-icons.patch

++++++ 0001-applets-mediacontroller-Workaround-for-common-crash-.patch ++++++
>From 4d7b4be9722d6a1c1d84d817066b424117dadde4 Mon Sep 17 00:00:00 2001
From: Oliver Beard <[email protected]>
Date: Wed, 24 Sep 2025 22:31:36 +0100
Subject: [PATCH] applets/mediacontroller: Workaround for common crash in
 QQuickStackView

This commit adds a workaround for QTBUG-140018 where a regression in Qt 6.9.2 
causes a segfault as qmlEngine(view) returns null in 
QQuickStackElement::initialize, because a parent loader set the engine to null 
when unloading, but we still run.

We avoid this by not pushing a new Image to the StackView when it isn't 
visible, which is coincident with the above and the cause of the crash.

This does not regress any behaviour, functionality or animation.

BUG: 509192

Co-authored-by: David Edmundson <[email protected]>


(cherry picked from commit 30273fb2afcc6e304951c8895bb17d38255fed39)

Co-authored-by: Oliver Beard <[email protected]>
---
 applets/mediacontroller/AlbumArtStackView.qml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/applets/mediacontroller/AlbumArtStackView.qml 
b/applets/mediacontroller/AlbumArtStackView.qml
index 08159215cd..69dbd5a101 100644
--- a/applets/mediacontroller/AlbumArtStackView.qml
+++ b/applets/mediacontroller/AlbumArtStackView.qml
@@ -58,6 +58,16 @@ Item {
         });
 
         function replaceWhenLoaded() {
+            // HACK: Workaround for QTBUG-140018 (see also: BUG 509192)
+            // When a parent loader is inactive, it'll drop the engine from 
the context, but this can still run
+            // afterwards which causes a crash in 
QQuickStackElement::initialize which asserts the engine is not null.
+            // This visiblity heuristic is always the case when we're in this 
state, returning without pushing
+            // anything to the StackView and avoiding the above. Since the 
artwork is always updated when expanding,
+            // we don't have to worry about not being visible due to other 
reasons.
+            if (!albumArt.visible) {
+                return;
+            }
+
             // There can be a potential race: when the previous player is gone 
but the pending image is just ready in time,
             // pendingImage.destroy() -> QQuickImage::deleteLater(), so in the 
event queue statusChanged may be emitted
             // before pendingImage is deleted, but pendingImage is already set 
to null when the previous player is gone.
-- 
2.51.0

Reply via email to