diff options
Diffstat (limited to 'wayland/democompositor/processlauncher.cpp')
-rw-r--r-- | wayland/democompositor/processlauncher.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/wayland/democompositor/processlauncher.cpp b/wayland/democompositor/processlauncher.cpp index 6147f05..29e4d64 100644 --- a/wayland/democompositor/processlauncher.cpp +++ b/wayland/democompositor/processlauncher.cpp @@ -52,6 +52,7 @@ #include "apps/appentry.h" #include <QProcess> +#include <QTimer> Q_LOGGING_CATEGORY(procs, "launcher.procs") @@ -118,6 +119,24 @@ void WaylandProcessLauncher::kill(const AppEntry& entry) } } +void WaylandProcessLauncher::stop(const AppEntry& entry, int ms) +{ + for (auto state : m_appStates) { + if (state.appEntry.sourceFileName != entry.sourceFileName) + continue; + + auto timer = new QTimer(state.process); + connect(timer, &QTimer::timeout, [entry, state, timer] { + qCDebug(procs) << "Sending SIGKILL " << state.process->pid() << " for " << entry.sourceFileName; + timer->deleteLater(); + state.process->kill(); + }); + timer->start(ms); + qCDebug(procs) << "Sending SIGTERM " << state.process->pid() << " for " << entry.sourceFileName; + state.process->terminate(); + } +} + void WaylandProcessLauncher::launch(const AppEntry &entry) { qCDebug(procs) << "Launching" << entry.executableName; |