diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-08-28 11:19:08 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-08-28 11:19:08 +0200 |
| commit | d413388761c85c1bd153a4bbf8b6f96189cd416a (patch) | |
| tree | 2d073c24292f5ecd94c0b441864bf8b1306fc4e5 /src/Compositor.cpp | |
| parent | 4203a61b69f5ee31d142920b5ef0b652d7bbb143 (diff) | |
Multiple improvements to the shutdown procedure
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 55d8afe7..5259ed37 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -16,6 +16,8 @@ int handleCritSignal(int signo, void* data) { CCompositor::CCompositor() { wlr_log_init(WLR_INFO, NULL); + m_iHyprlandPID = getpid(); + m_szInstanceSignature = GIT_COMMIT_HASH + std::string("_") + std::to_string(time(NULL)); setenv("HYPRLAND_INSTANCE_SIGNATURE", m_szInstanceSignature.c_str(), true); @@ -27,6 +29,8 @@ CCompositor::CCompositor() { Debug::log(LOG, "Instance Signature: %s", m_szInstanceSignature.c_str()); + Debug::log(LOG, "Hyprland PID: %i", m_iHyprlandPID); + Debug::log(LOG, "===== SYSTEM INFO: ====="); logSystemInfo(); @@ -236,6 +240,17 @@ void CCompositor::cleanup() { m_pLastFocus = nullptr; m_pLastWindow = nullptr; + // accumulate all PIDs for killing, also request closing. + for (auto& w : m_vWindows) { + m_dProcessPIDsOnShutdown.push_back(w->getPID()); + + closeWindow(w.get()); + } + + // end threads + g_pEventManager->m_tThread = std::thread(); + HyprCtl::tThread = std::thread(); + m_vWorkspaces.clear(); m_vWindows.clear(); @@ -254,6 +269,9 @@ void CCompositor::cleanup() { wl_display_terminate(m_sWLDisplay); m_bIsShuttingDown = true; + + g_pKeybindManager->spawn("sleep 5 && kill -9 " + std::to_string(m_iHyprlandPID)); // this is to prevent that random "freezing" + // the PID should not be reused. } void CCompositor::startCompositor() { |
