Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kf6-kwindowsystem for
openSUSE:Factory checked in at 2026-02-16 13:04:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kwindowsystem (Old)
and /work/SRC/openSUSE:Factory/.kf6-kwindowsystem.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kwindowsystem"
Mon Feb 16 13:04:28 2026 rev:24 rq:1332960 version:6.23.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kwindowsystem/kf6-kwindowsystem.changes
2026-01-12 10:17:18.619597830 +0100
+++
/work/SRC/openSUSE:Factory/.kf6-kwindowsystem.new.1977/kf6-kwindowsystem.changes
2026-02-16 13:07:18.197008015 +0100
@@ -1,0 +2,14 @@
+Fri Feb 6 14:26:01 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.23.0
+ * New feature release
+ * For more details please see:
+ * https://kde.org/announcements/frameworks/6/6.23.0
+- Changes since 6.22.0:
+ * Update dependency version to 6.23.0
+ * Enable LSAN in CI
+ * platforms/wayland: Avoid destroying proxy objects when QPA is gone
(kde#487660)
+ * Fix KWindowSystem::updateStartupId on wayland
+ * Update version to 6.23.0
+
+-------------------------------------------------------------------
Old:
----
kwindowsystem-6.22.0.tar.xz
kwindowsystem-6.22.0.tar.xz.sig
New:
----
kwindowsystem-6.23.0.tar.xz
kwindowsystem-6.23.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kf6-kwindowsystem.spec ++++++
--- /var/tmp/diff_new_pack.LMX2tQ/_old 2026-02-16 13:07:19.637067706 +0100
+++ /var/tmp/diff_new_pack.LMX2tQ/_new 2026-02-16 13:07:19.641067872 +0100
@@ -19,11 +19,11 @@
%define qt6_version 6.8.0
%define rname kwindowsystem
-# Full KF6 version (e.g. 6.22.0)
+# Full KF6 version (e.g. 6.23.0)
%{!?_kf6_version: %global _kf6_version %{version}}
%bcond_without released
Name: kf6-kwindowsystem
-Version: 6.22.0
+Version: 6.23.0
Release: 0
Summary: KDE Access to window manager
License: LGPL-2.1-or-later
++++++ kwindowsystem-6.22.0.tar.xz -> kwindowsystem-6.23.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwindowsystem-6.22.0/.kde-ci.yml
new/kwindowsystem-6.23.0/.kde-ci.yml
--- old/kwindowsystem-6.22.0/.kde-ci.yml 2026-01-02 18:44:54.000000000
+0100
+++ new/kwindowsystem-6.23.0/.kde-ci.yml 2026-02-06 13:17:59.000000000
+0100
@@ -11,3 +11,4 @@
Options:
test-before-installing: True
require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows']
+ enable-lsan: True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwindowsystem-6.22.0/CMakeLists.txt
new/kwindowsystem-6.23.0/CMakeLists.txt
--- old/kwindowsystem-6.22.0/CMakeLists.txt 2026-01-02 18:44:54.000000000
+0100
+++ new/kwindowsystem-6.23.0/CMakeLists.txt 2026-02-06 13:17:59.000000000
+0100
@@ -1,11 +1,11 @@
-cmake_minimum_required(VERSION 3.16)
+cmake_minimum_required(VERSION 3.27)
-set(KF_VERSION "6.22.0") # handled by release scripts
+set(KF_VERSION "6.23.0") # handled by release scripts
project(KWindowSystem VERSION ${KF_VERSION})
# ECM setup
include(FeatureSummary)
-find_package(ECM 6.22.0 NO_MODULE)
+find_package(ECM 6.23.0 NO_MODULE)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake
Modules." URL "https://commits.kde.org/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND
FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwindowsystem-6.22.0/src/kwindowsystem.cpp
new/kwindowsystem-6.23.0/src/kwindowsystem.cpp
--- old/kwindowsystem-6.22.0/src/kwindowsystem.cpp 2026-01-02
18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/kwindowsystem.cpp 2026-02-06
13:17:59.000000000 +0100
@@ -173,17 +173,10 @@
if (!startupId.isEmpty()) {
KStartupInfo::setNewStartupId(window, startupId);
}
- } else
+ }
#else
Q_UNUSED(window);
#endif
- if (isPlatformWayland()) {
- const QString token = qEnvironmentVariable("XDG_ACTIVATION_TOKEN");
- if (!token.isEmpty()) {
- setCurrentXdgActivationToken(token);
- qunsetenv("XDG_ACTIVATION_TOKEN");
- }
- }
// clang-format on
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwindowsystem-6.22.0/src/platforms/wayland/helpers.h
new/kwindowsystem-6.23.0/src/platforms/wayland/helpers.h
--- old/kwindowsystem-6.22.0/src/platforms/wayland/helpers.h 1970-01-01
01:00:00.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/helpers.h 2026-02-06
13:17:59.000000000 +0100
@@ -0,0 +1,72 @@
+/*
+ SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <[email protected]>
+
+ SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#pragma once
+
+#include <QWindow>
+
+#include <QGuiApplication>
+#include <QVersionNumber>
+
+#include <qpa/qplatformnativeinterface.h>
+
+struct wl_surface;
+struct xdg_toplevel;
+
+inline wl_surface *surfaceForWindow(QWindow *window)
+{
+ if (!window) {
+ return nullptr;
+ }
+
+ QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
+ if (!native) {
+ return nullptr;
+ }
+
+ // NotificationWindow incorrectly relied on a side effect of an older
version of this class
+ // In order to remain bug-compatiable, with that older usage, this is
+ // it can be dropped when we no longer support 6.3.0 or 6.3.1
+ static bool isBuggyPlasma =
+ qApp->applicationName() == QLatin1String("plasmashell") &&
QVersionNumber::fromString(qApp->applicationVersion()) < QVersionNumber(6, 3,
4);
+
+ if (isBuggyPlasma) {
+ window->create();
+ }
+
+ return reinterpret_cast<wl_surface
*>(native->nativeResourceForWindow(QByteArrayLiteral("surface"), window));
+}
+
+inline xdg_toplevel *xdgToplevelForWindow(QWindow *window)
+{
+ if (!window) {
+ return nullptr;
+ }
+
+ QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
+ if (!native) {
+ return nullptr;
+ }
+
+ return reinterpret_cast<xdg_toplevel
*>(native->nativeResourceForWindow(QByteArrayLiteral("xdg_toplevel"), window));
+}
+
+/*!
+ * \internal
+ *
+ * Some objects are children of the application object and therefore they are
deleted after the QPA.
+ *
+ * The problem is that the wl_display object will be gone after the QPA is
shut down. This can make the
+ * app crash when it attempts to clean up its proxy objects. The wl_proxy
memory won't be released by
+ * wl_display_disconnect(), but wl_proxy objects will contain dangling display
pointers.
+ *
+ * We need something better, but as of now, there is not a lot to work with.
If you know that an object
+ * will live as long as the app, you may need to use this function before
calling the destructor request.
+ */
+inline bool isQpaAlive()
+{
+ return qGuiApp;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kwindowsystem-6.22.0/src/platforms/wayland/shm.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/shm.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/shm.cpp 2026-01-02
18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/shm.cpp 2026-02-06
13:17:59.000000000 +0100
@@ -6,6 +6,7 @@
*/
#include "shm.h"
+#include "helpers.h"
#include <QGuiApplication>
#include <QImage>
@@ -25,7 +26,9 @@
ShmBuffer::~ShmBuffer()
{
- destroy();
+ if (isQpaAlive()) {
+ destroy();
+ }
}
Shm::Shm(QObject *parent)
@@ -48,7 +51,7 @@
Shm::~Shm() noexcept
{
- if (isActive()) {
+ if (isQpaAlive() && isActive()) {
wl_shm_destroy(object());
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/surfacehelper.h
new/kwindowsystem-6.23.0/src/platforms/wayland/surfacehelper.h
--- old/kwindowsystem-6.22.0/src/platforms/wayland/surfacehelper.h
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/surfacehelper.h
1970-01-01 01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
-/*
- SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <[email protected]>
-
- SPDX-License-Identifier: LGPL-2.0-or-later
-*/
-
-#pragma once
-
-#include <QWindow>
-
-#include <QGuiApplication>
-#include <QVersionNumber>
-
-#include <qpa/qplatformnativeinterface.h>
-
-struct wl_surface;
-struct xdg_toplevel;
-
-inline wl_surface *surfaceForWindow(QWindow *window)
-{
- if (!window) {
- return nullptr;
- }
-
- QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
- if (!native) {
- return nullptr;
- }
-
- // NotificationWindow incorrectly relied on a side effect of an older
version of this class
- // In order to remain bug-compatiable, with that older usage, this is
- // it can be dropped when we no longer support 6.3.0 or 6.3.1
- static bool isBuggyPlasma =
- qApp->applicationName() == QLatin1String("plasmashell") &&
QVersionNumber::fromString(qApp->applicationVersion()) < QVersionNumber(6, 3,
4);
-
- if (isBuggyPlasma) {
- window->create();
- }
-
- return reinterpret_cast<wl_surface
*>(native->nativeResourceForWindow(QByteArrayLiteral("surface"), window));
-}
-
-inline xdg_toplevel *xdgToplevelForWindow(QWindow *window)
-{
- if (!window) {
- return nullptr;
- }
-
- QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
- if (!native) {
- return nullptr;
- }
-
- return reinterpret_cast<xdg_toplevel
*>(native->nativeResourceForWindow(QByteArrayLiteral("xdg_toplevel"), window));
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgactivationv1.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgactivationv1.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgactivationv1.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgactivationv1.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -4,8 +4,8 @@
SPDX-License-Identifier: LGPL-2.0-or-later
*/
+#include "helpers.h"
#include "waylandxdgactivationv1_p.h"
-#include <QGuiApplication>
WaylandXdgActivationV1::WaylandXdgActivationV1()
: QWaylandClientExtensionTemplate<WaylandXdgActivationV1>(1)
@@ -15,7 +15,7 @@
WaylandXdgActivationV1::~WaylandXdgActivationV1()
{
- if (qGuiApp && isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgdialogv1.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgdialogv1.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgdialogv1.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgdialogv1.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -4,10 +4,9 @@
SPDX-License-Identifier: LGPL-2.0-or-later
*/
+#include "helpers.h"
#include "waylandxdgdialogv1_p.h"
-#include <QGuiApplication>
-
WaylandXdgDialogV1::WaylandXdgDialogV1(::xdg_dialog_v1 *object)
: QObject()
, QtWayland::xdg_dialog_v1(object)
@@ -16,7 +15,7 @@
WaylandXdgDialogV1::~WaylandXdgDialogV1()
{
- if (qGuiApp) {
+ if (isQpaAlive()) {
destroy();
}
}
@@ -29,7 +28,7 @@
WaylandXdgDialogWmV1::~WaylandXdgDialogWmV1()
{
- if (qGuiApp && isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgforeignv2.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgforeignv2.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgforeignv2.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgforeignv2.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -4,10 +4,9 @@
SPDX-License-Identifier: LGPL-2.0-or-later
*/
+#include "helpers.h"
#include "waylandxdgforeignv2_p.h"
-#include <QGuiApplication>
-
WaylandXdgForeignExportedV2::WaylandXdgForeignExportedV2(::zxdg_exported_v2
*object)
: QObject()
, QtWayland::zxdg_exported_v2(object)
@@ -16,7 +15,7 @@
WaylandXdgForeignExportedV2::~WaylandXdgForeignExportedV2()
{
- if (qGuiApp) {
+ if (isQpaAlive()) {
destroy();
}
}
@@ -40,7 +39,7 @@
WaylandXdgForeignExporterV2::~WaylandXdgForeignExporterV2()
{
- if (qGuiApp && isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
@@ -65,7 +64,7 @@
WaylandXdgForeignImportedV2::~WaylandXdgForeignImportedV2()
{
- if (qGuiApp) {
+ if (isQpaAlive()) {
destroy();
}
}
@@ -88,7 +87,7 @@
WaylandXdgForeignImporterV2::~WaylandXdgForeignImporterV2()
{
- if (qGuiApp && isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgtopleveltagv1.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgtopleveltagv1.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/waylandxdgtopleveltagv1.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/waylandxdgtopleveltagv1.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -4,10 +4,9 @@
SPDX-License-Identifier: LGPL-2.0-or-later
*/
+#include "helpers.h"
#include "waylandxdgtopleveltagv1_p.h"
-#include <QGuiApplication>
-
WaylandXdgToplevelTagManagerV1::WaylandXdgToplevelTagManagerV1()
: QWaylandClientExtensionTemplate<WaylandXdgToplevelTagManagerV1>(1)
{
@@ -16,7 +15,7 @@
WaylandXdgToplevelTagManagerV1::~WaylandXdgToplevelTagManagerV1()
{
- if (qGuiApp && isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/windoweffects.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/windoweffects.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/windoweffects.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/windoweffects.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -20,7 +20,7 @@
#include "qwayland-contrast.h"
#include "qwayland-slide.h"
-#include "surfacehelper.h"
+#include "helpers.h"
#include <wayland-client-protocol.h>
@@ -61,7 +61,9 @@
~Blur() override
{
- release();
+ if (isQpaAlive()) {
+ release();
+ }
}
};
@@ -85,7 +87,9 @@
~Contrast() override
{
- release();
+ if (isQpaAlive()) {
+ release();
+ }
}
};
@@ -109,7 +113,9 @@
~Slide() override
{
- release();
+ if (isQpaAlive()) {
+ release();
+ }
}
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/windowshadow.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/windowshadow.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/windowshadow.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/windowshadow.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -6,9 +6,9 @@
*/
#include "windowshadow.h"
+#include "helpers.h"
#include "logging.h"
#include "shm.h"
-#include "surfacehelper.h"
#include <qwayland-shadow.h>
@@ -38,7 +38,7 @@
public:
~ShadowManager()
{
- if (isActive()) {
+ if (isQpaAlive() && isActive()) {
destroy();
}
}
@@ -53,9 +53,12 @@
{
public:
using QtWayland::org_kde_kwin_shadow::org_kde_kwin_shadow;
+
~Shadow()
{
- destroy();
+ if (isQpaAlive()) {
+ destroy();
+ }
}
};
@@ -188,6 +191,10 @@
return;
}
+ if (!isQpaAlive()) {
+ return;
+ }
+
// Only call surfaceForWindow and unset the surface if the native window
is alive.
// Otherwise window->create() might be called when the window is being
destroyed, leading to a crash.
if (window &&
window->nativeInterface<QNativeInterface::Private::QWaylandWindow>() &&
ShadowManager::instance()->isActive()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kwindowsystem-6.22.0/src/platforms/wayland/windowsystem.cpp
new/kwindowsystem-6.23.0/src/platforms/wayland/windowsystem.cpp
--- old/kwindowsystem-6.22.0/src/platforms/wayland/windowsystem.cpp
2026-01-02 18:44:54.000000000 +0100
+++ new/kwindowsystem-6.23.0/src/platforms/wayland/windowsystem.cpp
2026-02-06 13:17:59.000000000 +0100
@@ -5,8 +5,8 @@
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR
LicenseRef-KDE-Accepted-LGPL
*/
#include "windowsystem.h"
+#include "helpers.h"
#include "logging.h"
-#include "surfacehelper.h"
#include "waylandxdgactivationv1_p.h"
#include "waylandxdgdialogv1_p.h"
#include "waylandxdgforeignv2_p.h"