summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
diff options
context:
space:
mode:
authorDavid Redondo <qt@david-redondo.de>2023-06-13 14:02:59 +0200
committerDavid Redondo <qt@david-redondo.de>2024-01-17 09:06:19 +0100
commitc15b219108835b63aabee0f2868ca62dc5a1c063 (patch)
treec59ca89b66b413864569492a509eaeb9e95e1743 /src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
parent2d4b07753407af18e05f53e7e39431a67dfc9fe9 (diff)
Make sure wayland object destructors are called
Always at least call the generated "interface"_destroy method which does destroy the proxy. For not already wrapped classes a small template is introduced to pass a function that is called in the destructor. Fixes: QTBUG-111576 Change-Id: I373463710764958ddea42ef0f7dc010c427b2ce8 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/plugins/platforms/wayland/qwaylandnativeinterface.cpp')
-rw-r--r--src/plugins/platforms/wayland/qwaylandnativeinterface.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp b/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
index 65272f3c228..601f833aacc 100644
--- a/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
+++ b/src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
@@ -35,8 +35,10 @@ void *QWaylandNativeInterface::nativeResourceForIntegration(const QByteArray &re
if (lowerCaseResource == "display" || lowerCaseResource == "wl_display" || lowerCaseResource == "nativedisplay")
return m_integration->display()->wl_display();
- if (lowerCaseResource == "compositor")
- return const_cast<wl_compositor *>(m_integration->display()->wl_compositor());
+ if (lowerCaseResource == "compositor") {
+ if (auto compositor = m_integration->display()->compositor())
+ return compositor->object();
+ }
if (lowerCaseResource == "server_buffer_integration")
return m_integration->serverBufferIntegration();
@@ -76,7 +78,9 @@ wl_display *QtWaylandClient::QWaylandNativeInterface::display() const
wl_compositor *QtWaylandClient::QWaylandNativeInterface::compositor() const
{
- return const_cast<wl_compositor *>(m_integration->display()->wl_compositor());
+ if (auto compositor = m_integration->display()->compositor())
+ return compositor->object();
+ return nullptr;
}
wl_seat *QtWaylandClient::QWaylandNativeInterface::seat() const
@@ -129,8 +133,10 @@ void *QWaylandNativeInterface::nativeResourceForWindow(const QByteArray &resourc
if (lowerCaseResource == "display")
return m_integration->display()->wl_display();
- if (lowerCaseResource == "compositor")
- return const_cast<wl_compositor *>(m_integration->display()->wl_compositor());
+ if (lowerCaseResource == "compositor") {
+ if (auto compositor = m_integration->display()->compositor())
+ return compositor->object();
+ }
if (lowerCaseResource == "surface") {
QWaylandWindow *w = static_cast<QWaylandWindow*>(window->handle());
return w ? w->wlSurface() : nullptr;