From 31777a980e0f4b1b258713158524c0cd9a1dc30f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 18 Oct 2019 19:33:20 +0200 Subject: Use execv() to start selected session Prevent vmchooser from lingering in the background, like a zombie, haunting you with invisible windows. Also seems to be notably faster when launching the openbox session. --- src/windowmanager.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/windowmanager.cpp') diff --git a/src/windowmanager.cpp b/src/windowmanager.cpp index 2505c89..c05e234 100644 --- a/src/windowmanager.cpp +++ b/src/windowmanager.cpp @@ -38,12 +38,16 @@ void ensureRunning() }); } -void stopOwnInstance() +void stopOwnInstance(bool waitSync) { if (wm.state() == QProcess::Running) { qDebug() << "- Politely terminating spawned WM"; - wm.terminate(); - QTimer::singleShot(500, killInstance); + if (waitSync) { + killInstance(); + } else { + wm.terminate(); + QTimer::singleShot(500, killInstance); + } } } @@ -51,7 +55,9 @@ void killInstance() { if (wm.state() == QProcess::Running) { wm.terminate(); - QThread::msleep(50); + } + for (int i = 0; i < 50 && wm.state() == QProcess::Running; ++i) { + QThread::msleep(10); } if (wm.state() == QProcess::Running) { qDebug() << "- Forcefully killing spawned WM"; -- cgit v1.2.3-55-g7522