diff options
Diffstat (limited to 'graphics/qt6-wayland')
3 files changed, 39 insertions, 3 deletions
diff --git a/graphics/qt6-wayland/distinfo b/graphics/qt6-wayland/distinfo index 80bc8f5217e5..d6f7ec8b5572 100644 --- a/graphics/qt6-wayland/distinfo +++ b/graphics/qt6-wayland/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1749159376 -SHA256 (KDE/Qt/6.9.1/qtwayland-everywhere-src-6.9.1.tar.xz) = 7d21ea0e687180ebb19b9a1f86ae9cfa7a25b4f02d5db05ec834164409932e3e -SIZE (KDE/Qt/6.9.1/qtwayland-everywhere-src-6.9.1.tar.xz) = 1152868 +TIMESTAMP = 1756196760 +SHA256 (KDE/Qt/6.9.2/qtwayland-everywhere-src-6.9.2.tar.xz) = cad79806565568f12f9983fed69219416abcee9d5deef4abdfcf94aa2eef7781 +SIZE (KDE/Qt/6.9.2/qtwayland-everywhere-src-6.9.2.tar.xz) = 1138152 diff --git a/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h b/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h new file mode 100644 index 000000000000..9380ad7616d6 --- /dev/null +++ b/graphics/qt6-wayland/files/patch-src_client_qwaylandshellsurface__p.h @@ -0,0 +1,23 @@ +Add QWaylandShellSurface::nativeResource() to allow using it instead of +surfaceRole(). The problem with latter is that it relies on RTTI, which is not +stable across shared modules loaded with RTLD_LOCAL. + +x11/plasma6-layer-shell-qt calls into this private API and crashes. Linux/GCC +users are not seeing this because libstdc++ use different algorithm for comparing +RTTI. Our libc++ can be switched to this algorithm too by building with +-DLIBCXX_TYPEINFO_COMPARISON_IMPLEMENTATION=2, but this is too drastic approach. + +Related URLs: +* https://bugs.kde.org/show_bug.cgi?id=479679 +* https://github.com/llvm/llvm-project/issues/36746 + +--- src/client/qwaylandshellsurface_p.h.orig 2025-05-29 00:19:49 UTC ++++ src/client/qwaylandshellsurface_p.h +@@ -85,6 +85,7 @@ class Q_WAYLANDCLIENT_EXPORT QWaylandShellSurface : pu + QPlatformWindow *platformWindow(); + struct wl_surface *wlSurface(); + ++ virtual void* nativeResource(const QByteArray&) { return nullptr; } + virtual std::any surfaceRole() const { return std::any(); }; + + virtual void attachPopup(QWaylandShellSurface *popup) { Q_UNUSED(popup); } diff --git a/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h b/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h new file mode 100644 index 000000000000..205ecb55e559 --- /dev/null +++ b/graphics/qt6-wayland/files/patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h @@ -0,0 +1,13 @@ +Companion change to patch-src_plugins_shellintegration_xdg-shell_qwaylandxdgshell__p.h + +--- src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h.orig 2025-05-29 00:19:49 UTC ++++ src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h +@@ -75,7 +75,7 @@ class Q_WAYLANDCLIENT_EXPORT QWaylandXdgSurface : publ + + void setSizeHints(); + +- void *nativeResource(const QByteArray &resource); ++ void *nativeResource(const QByteArray &resource) override; + + std::any surfaceRole() const override; + |