From 38206d3c528e75f90aa40ccc9162a9905cd38778 Mon Sep 17 00:00:00 2001 From: Reion Wong Date: Thu, 3 Sep 2026 22:12:42 -0400 Subject: [PATCH] refactor(session): separate core and autostart processes --- session/processmanager.cpp | 24 +++++++++++++----------- session/processmanager.h | 4 ++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/session/processmanager.cpp b/session/processmanager.cpp index 6f7e14f..27e1e7e 100644 --- a/session/processmanager.cpp +++ b/session/processmanager.cpp @@ -39,12 +39,14 @@ ProcessManager::ProcessManager(Application *app, QObject *parent) ProcessManager::~ProcessManager() { - QMapIterator i(m_systemProcess); - while (i.hasNext()) { - i.next(); - QProcess *p = i.value(); - delete p; - m_systemProcess[i.key()] = nullptr; + for (QMap *processes : {&m_coreProcesses, &m_autostartProcesses}) { + QMapIterator i(*processes); + while (i.hasNext()) { + i.next(); + QProcess *p = i.value(); + delete p; + (*processes)[i.key()] = nullptr; + } } } @@ -114,8 +116,8 @@ void ProcessManager::logout() { // Close what we started ourselves, the window manager last since // everything else is drawn on top of it. - stopProcesses(m_autoStartProcess); - stopProcesses(m_systemProcess); + stopProcesses(m_autostartProcesses); + stopProcesses(m_coreProcesses); // KWin is started with --exit-with-session, so returning from this // process also ends the compositor session and returns to the greeter. @@ -185,7 +187,7 @@ void ProcessManager::startDesktopProcess() // Add to map if (process->state() != QProcess::NotRunning) { - m_autoStartProcess.insert(pair.first, process); + m_coreProcesses.insert(pair.first, process); } else { qWarning() << "Failed to start desktop process:" << pair.first << process->errorString(); @@ -216,7 +218,7 @@ void ProcessManager::startDaemonProcess() // running. The old check discarded long-lived daemons immediately // after starting them. if (process->state() != QProcess::NotRunning) { - m_autoStartProcess.insert(pair.first, process); + m_coreProcesses.insert(pair.first, process); } else { qWarning() << "Failed to start daemon:" << pair.first << process->errorString(); @@ -262,7 +264,7 @@ void ProcessManager::loadAutoStartProcess() process->waitForStarted(); if (process->exitCode() == 0) { - m_autoStartProcess.insert(exec, process); + m_autostartProcesses.insert(exec, process); } else { process->deleteLater(); } diff --git a/session/processmanager.h b/session/processmanager.h index b002c07..d06868f 100644 --- a/session/processmanager.h +++ b/session/processmanager.h @@ -52,8 +52,8 @@ private: QDBusServiceWatcher *m_servicesWatcher = nullptr; bool m_kwinReady = false; bool m_desktopStarted = false; - QMap m_systemProcess; - QMap m_autoStartProcess; + QMap m_coreProcesses; + QMap m_autostartProcesses; };