diff --git a/src/Utils/Process.cpp b/src/Utils/Process.cpp index 9e3f7584c8..12085abcaa 100644 --- a/src/Utils/Process.cpp +++ b/src/Utils/Process.cpp @@ -100,18 +100,21 @@ namespace gamescope::Process void KillProcessTree( std::vector nPids, int nSignal ) { - for ( pid_t nPid : nPids ) + pid_t nPid = 0; + int sz = nPids.size() - 1; + while (sz >= 0) { - auto nChildPids = GetChildPids( nPid ); + nPid = nPids[sz--]; KillProcess( nPid, nSignal ); - KillProcessTree( nChildPids, nSignal ); + WaitForChild( nPid ); } } + void KillAllChildren( pid_t nParentPid, int nSignal ) { std::vector nChildPids = GetChildPids( nParentPid ); - return KillProcessTree( nChildPids, nSignal ); + KillProcessTree( nChildPids, nSignal ); } void KillProcess( pid_t nPid, int nSignal )