diff --git a/src/backends/wayland/wayland_backend.cpp b/src/backends/wayland/wayland_backend.cpp index 36394e40f8..ed4bc60f89 100644 --- a/src/backends/wayland/wayland_backend.cpp +++ b/src/backends/wayland/wayland_backend.cpp @@ -485,6 +485,7 @@ WaylandSeat::~WaylandSeat() destroyPointerDevice(); destroyKeyboardDevice(); destroyTouchDevice(); + m_seat->release(); } void WaylandSeat::createPointerDevice() @@ -578,6 +579,13 @@ WaylandBackend::~WaylandBackend() eglTerminate(sceneEglDisplay()); } + if (m_relativePointerManager) { + m_relativePointerManager->release(); + } + if (m_ssdManager) { + m_ssdManager->release(); + } + if (m_pointerGestures) { m_pointerGestures->release(); } @@ -768,7 +776,7 @@ WaylandOutput *WaylandBackend::createOutput(const QString &name, const QSize &si } if (ssdManager()) { - auto decoration = ssdManager()->create(surface.get(), this); + auto decoration = ssdManager()->create(surface.get(), surface.get()); connect(decoration, &ServerSideDecoration::modeChanged, this, [decoration] { if (decoration->mode() != ServerSideDecoration::Mode::Server) { decoration->requestMode(ServerSideDecoration::Mode::Server);