refactor(session): separate core and autostart processes

main
Reion Wong 3 weeks ago
parent 1da7c89496
commit 38206d3c52

@ -39,12 +39,14 @@ ProcessManager::ProcessManager(Application *app, QObject *parent)
ProcessManager::~ProcessManager() ProcessManager::~ProcessManager()
{ {
QMapIterator<QString, QProcess *> i(m_systemProcess); for (QMap<QString, QProcess *> *processes : {&m_coreProcesses, &m_autostartProcesses}) {
while (i.hasNext()) { QMapIterator<QString, QProcess *> i(*processes);
i.next(); while (i.hasNext()) {
QProcess *p = i.value(); i.next();
delete p; QProcess *p = i.value();
m_systemProcess[i.key()] = nullptr; delete p;
(*processes)[i.key()] = nullptr;
}
} }
} }
@ -114,8 +116,8 @@ void ProcessManager::logout()
{ {
// Close what we started ourselves, the window manager last since // Close what we started ourselves, the window manager last since
// everything else is drawn on top of it. // everything else is drawn on top of it.
stopProcesses(m_autoStartProcess); stopProcesses(m_autostartProcesses);
stopProcesses(m_systemProcess); stopProcesses(m_coreProcesses);
// KWin is started with --exit-with-session, so returning from this // KWin is started with --exit-with-session, so returning from this
// process also ends the compositor session and returns to the greeter. // process also ends the compositor session and returns to the greeter.
@ -185,7 +187,7 @@ void ProcessManager::startDesktopProcess()
// Add to map // Add to map
if (process->state() != QProcess::NotRunning) { if (process->state() != QProcess::NotRunning) {
m_autoStartProcess.insert(pair.first, process); m_coreProcesses.insert(pair.first, process);
} else { } else {
qWarning() << "Failed to start desktop process:" << pair.first qWarning() << "Failed to start desktop process:" << pair.first
<< process->errorString(); << process->errorString();
@ -216,7 +218,7 @@ void ProcessManager::startDaemonProcess()
// running. The old check discarded long-lived daemons immediately // running. The old check discarded long-lived daemons immediately
// after starting them. // after starting them.
if (process->state() != QProcess::NotRunning) { if (process->state() != QProcess::NotRunning) {
m_autoStartProcess.insert(pair.first, process); m_coreProcesses.insert(pair.first, process);
} else { } else {
qWarning() << "Failed to start daemon:" << pair.first qWarning() << "Failed to start daemon:" << pair.first
<< process->errorString(); << process->errorString();
@ -262,7 +264,7 @@ void ProcessManager::loadAutoStartProcess()
process->waitForStarted(); process->waitForStarted();
if (process->exitCode() == 0) { if (process->exitCode() == 0) {
m_autoStartProcess.insert(exec, process); m_autostartProcesses.insert(exec, process);
} else { } else {
process->deleteLater(); process->deleteLater();
} }

@ -52,8 +52,8 @@ private:
QDBusServiceWatcher *m_servicesWatcher = nullptr; QDBusServiceWatcher *m_servicesWatcher = nullptr;
bool m_kwinReady = false; bool m_kwinReady = false;
bool m_desktopStarted = false; bool m_desktopStarted = false;
QMap<QString, QProcess *> m_systemProcess; QMap<QString, QProcess *> m_coreProcesses;
QMap<QString, QProcess *> m_autoStartProcess; QMap<QString, QProcess *> m_autostartProcesses;
}; };

Loading…
Cancel
Save