diff options
| author | vaxerski <vaxry@vaxry.net> | 2024-01-19 16:20:22 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2024-01-19 16:20:30 +0100 |
| commit | 5eeec8860e2dc8ff80dda26243778b5ecc923ca2 (patch) | |
| tree | e8dd7245da969dfdf2ae1acd07ad9cca0816b7b4 /src/Compositor.cpp | |
| parent | 9f20a15955697b0f52740c1e0180acdafa071f79 (diff) | |
core: improve cleanup logic
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 96 |
1 files changed, 76 insertions, 20 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 8d16f22d..c6ac224a 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -81,26 +81,6 @@ CCompositor::CCompositor() { CCompositor::~CCompositor() { cleanup(); - g_pDecorationPositioner.reset(); - g_pPluginSystem.reset(); - g_pHyprNotificationOverlay.reset(); - g_pDebugOverlay.reset(); - g_pEventManager.reset(); - g_pSessionLockManager.reset(); - g_pProtocolManager.reset(); - g_pXWaylandManager.reset(); - g_pHyprRenderer.reset(); - g_pHyprOpenGL.reset(); - g_pInputManager.reset(); - g_pThreadManager.reset(); - g_pConfigManager.reset(); - g_pLayoutManager.reset(); - g_pHyprError.reset(); - g_pConfigManager.reset(); - g_pAnimationManager.reset(); - g_pKeybindManager.reset(); - g_pHookSystem.reset(); - g_pWatchdog.reset(); } void CCompositor::setRandomSplash() { @@ -332,6 +312,59 @@ void CCompositor::initAllSignals() { addWLSignal(&m_sWLRSession->events.active, &Events::listen_sessionActive, m_sWLRSession, "Session"); } +void CCompositor::removeAllSignals() { + removeWLSignal(&Events::listen_newOutput); + removeWLSignal(&Events::listen_newXDGToplevel); + removeWLSignal(&Events::listen_mouseMove); + removeWLSignal(&Events::listen_mouseMoveAbsolute); + removeWLSignal(&Events::listen_mouseButton); + removeWLSignal(&Events::listen_mouseAxis); + removeWLSignal(&Events::listen_mouseFrame); + removeWLSignal(&Events::listen_swipeBegin); + removeWLSignal(&Events::listen_swipeUpdate); + removeWLSignal(&Events::listen_swipeEnd); + removeWLSignal(&Events::listen_pinchBegin); + removeWLSignal(&Events::listen_pinchUpdate); + removeWLSignal(&Events::listen_pinchEnd); + removeWLSignal(&Events::listen_touchBegin); + removeWLSignal(&Events::listen_touchEnd); + removeWLSignal(&Events::listen_touchUpdate); + removeWLSignal(&Events::listen_touchFrame); + removeWLSignal(&Events::listen_holdBegin); + removeWLSignal(&Events::listen_holdEnd); + removeWLSignal(&Events::listen_newInput); + removeWLSignal(&Events::listen_requestMouse); + removeWLSignal(&Events::listen_requestSetSel); + removeWLSignal(&Events::listen_requestDrag); + removeWLSignal(&Events::listen_startDrag); + removeWLSignal(&Events::listen_requestSetSel); + removeWLSignal(&Events::listen_requestSetPrimarySel); + removeWLSignal(&Events::listen_newLayerSurface); + removeWLSignal(&Events::listen_change); + removeWLSignal(&Events::listen_outputMgrApply); + removeWLSignal(&Events::listen_outputMgrTest); + removeWLSignal(&Events::listen_newConstraint); + removeWLSignal(&Events::listen_NewXDGDeco); + removeWLSignal(&Events::listen_newVirtPtr); + removeWLSignal(&Events::listen_newVirtualKeyboard); + removeWLSignal(&Events::listen_RendererDestroy); + removeWLSignal(&Events::listen_newIdleInhibitor); + removeWLSignal(&Events::listen_powerMgrSetMode); + removeWLSignal(&Events::listen_newIME); + removeWLSignal(&Events::listen_newTextInput); + removeWLSignal(&Events::listen_activateXDG); + removeWLSignal(&Events::listen_newSessionLock); + removeWLSignal(&Events::listen_setGamma); + removeWLSignal(&Events::listen_setCursorShape); + removeWLSignal(&Events::listen_newTearingHint); + + if (m_sWRLDRMLeaseMgr) + removeWLSignal(&Events::listen_leaseRequest); + + if (m_sWLRSession) + removeWLSignal(&Events::listen_sessionActive); +} + void CCompositor::cleanup() { if (!m_sWLDisplay || m_bIsShuttingDown) return; @@ -373,8 +406,31 @@ void CCompositor::cleanup() { g_pXWaylandManager->m_sWLRXWayland = nullptr; } + removeAllSignals(); + wl_display_destroy_clients(g_pCompositor->m_sWLDisplay); + g_pDecorationPositioner.reset(); + g_pPluginSystem.reset(); + g_pHyprNotificationOverlay.reset(); + g_pDebugOverlay.reset(); + g_pEventManager.reset(); + g_pSessionLockManager.reset(); + g_pProtocolManager.reset(); + g_pHyprRenderer.reset(); + g_pHyprOpenGL.reset(); + g_pInputManager.reset(); + g_pThreadManager.reset(); + g_pConfigManager.reset(); + g_pLayoutManager.reset(); + g_pHyprError.reset(); + g_pConfigManager.reset(); + g_pAnimationManager.reset(); + g_pKeybindManager.reset(); + g_pHookSystem.reset(); + g_pWatchdog.reset(); + g_pXWaylandManager.reset(); + wl_display_terminate(m_sWLDisplay); m_sWLDisplay = nullptr; |
