diff options
Diffstat (limited to 'src/windowmanager.cpp')
-rw-r--r-- | src/windowmanager.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
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"; |