forked from qt-creator/qt-creator
Refactor the process lifetime inside ExecuteFilter. Before there was only one process instance during ExecuteFilter lifetime. However, the drawback was that when the old task was still running and we wanted to start a new one, we had to kill the old one and wait for it to be finished (so we had to wait unnecessarily). Now we are using Core::Reaper for removing old running processes. We also recreate a process for every task and delete it on task finished. Fix a possible crash when starting a process times out. Before we just removed the task from the queue, but it could happen that we still receive the finished() signal from the process - and the assumption that task queue isn't empty inside finished() method didn't hold. Now we behave the same as in case of ExecuteFilter::accept(). If the process timed out we put it into the reaper. Fix the ProcessReapers destructor. In case we have put there a process it won't change its state until we enable event delivery. So, in order to help it we process events after sleeping. Task-number: QTCREATORBUG-26084 Change-Id: I8a16b4d64f9c6a07aef45767458e69dff1dd83bc Reviewed-by: Eike Ziller <eike.ziller@qt.io>