summaryrefslogtreecommitdiffstats
path: root/src/window-lib/waylandcompositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/window-lib/waylandcompositor.cpp')
-rw-r--r--src/window-lib/waylandcompositor.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/window-lib/waylandcompositor.cpp b/src/window-lib/waylandcompositor.cpp
index 24a487fa..540fd048 100644
--- a/src/window-lib/waylandcompositor.cpp
+++ b/src/window-lib/waylandcompositor.cpp
@@ -154,6 +154,11 @@ WaylandCompositor::WaylandCompositor(QQuickWindow *window, const QString &waylan
, m_amExtension(new WaylandQtAMServerExtension(this))
, m_textInputManager(new QWaylandTextInputManager(this))
{
+ m_wlShell->setParent(this);
+ m_xdgShell->setParent(this);
+ m_amExtension->setParent(this);
+ m_textInputManager->setParent(this);
+
setSocketName(waylandSocketName.toUtf8());
registerOutputWindow(window);
@@ -178,6 +183,13 @@ WaylandCompositor::WaylandCompositor(QQuickWindow *window, const QString &waylan
defaultSeat()->keymap()->setLayout(QLocale::system().name().section(qL1C('_'), 1, 1).toLower());
}
+WaylandCompositor::~WaylandCompositor()
+{
+ // QWayland leaks like sieve everywhere, but we need this explicit delete to be able
+ // to suppress the rest via LSAN leak suppression files
+ delete defaultSeat();
+}
+
void WaylandCompositor::xdgPing(WindowSurface* surface)
{
uint serial = m_xdgShell->ping(surface->client());