mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-23 04:09:49 +01:00
modify exit behaviour a bit
This commit is contained in:
parent
e327b0a835
commit
0d1a9e4ba9
3 changed files with 10 additions and 4 deletions
|
@ -216,7 +216,7 @@ void CCompositor::initAllSignals() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCompositor::cleanup() {
|
void CCompositor::cleanup() {
|
||||||
if (!m_sWLDisplay)
|
if (!m_sWLDisplay || m_bIsShuttingDown)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_pLastFocus = nullptr;
|
m_pLastFocus = nullptr;
|
||||||
|
@ -225,9 +225,13 @@ void CCompositor::cleanup() {
|
||||||
m_vWorkspaces.clear();
|
m_vWorkspaces.clear();
|
||||||
m_vWindows.clear();
|
m_vWindows.clear();
|
||||||
|
|
||||||
for (auto& m : m_vMonitors)
|
for (auto& m : m_vMonitors) {
|
||||||
g_pHyprOpenGL->destroyMonitorResources(m.get());
|
g_pHyprOpenGL->destroyMonitorResources(m.get());
|
||||||
|
|
||||||
|
wlr_output_enable(m->output, false);
|
||||||
|
wlr_output_commit(m->output);
|
||||||
|
}
|
||||||
|
|
||||||
if (g_pXWaylandManager->m_sWLRXWayland) {
|
if (g_pXWaylandManager->m_sWLRXWayland) {
|
||||||
wlr_xwayland_destroy(g_pXWaylandManager->m_sWLRXWayland);
|
wlr_xwayland_destroy(g_pXWaylandManager->m_sWLRXWayland);
|
||||||
g_pXWaylandManager->m_sWLRXWayland = nullptr;
|
g_pXWaylandManager->m_sWLRXWayland = nullptr;
|
||||||
|
@ -235,7 +239,7 @@ void CCompositor::cleanup() {
|
||||||
|
|
||||||
wl_display_terminate(m_sWLDisplay);
|
wl_display_terminate(m_sWLDisplay);
|
||||||
|
|
||||||
m_sWLDisplay = nullptr;
|
m_bIsShuttingDown = true;
|
||||||
|
|
||||||
// kill the PID with a sigkill after 2 seconds
|
// kill the PID with a sigkill after 2 seconds
|
||||||
const auto PID = getpid();
|
const auto PID = getpid();
|
||||||
|
|
|
@ -98,6 +98,7 @@ public:
|
||||||
bool m_bSessionActive = true;
|
bool m_bSessionActive = true;
|
||||||
bool m_bDPMSStateON = true;
|
bool m_bDPMSStateON = true;
|
||||||
bool m_bUnsafeState = false; // unsafe state is when there is no monitors.
|
bool m_bUnsafeState = false; // unsafe state is when there is no monitors.
|
||||||
|
bool m_bIsShuttingDown = false;
|
||||||
|
|
||||||
// ------------------------------------------------- //
|
// ------------------------------------------------- //
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,8 @@ int main(int argc, char** argv) {
|
||||||
// If we are here it means we got yote.
|
// If we are here it means we got yote.
|
||||||
Debug::log(LOG, "Hyprland reached the end.");
|
Debug::log(LOG, "Hyprland reached the end.");
|
||||||
|
|
||||||
g_pCompositor->cleanup();
|
wl_display_destroy_clients(g_pCompositor->m_sWLDisplay);
|
||||||
|
wl_display_destroy(g_pCompositor->m_sWLDisplay);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue