diff options
Diffstat (limited to 'src/modules/SystemBackendPosix.cpp')
-rw-r--r-- | src/modules/SystemBackendPosix.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/modules/SystemBackendPosix.cpp b/src/modules/SystemBackendPosix.cpp index d34b2c8..c8135a3 100644 --- a/src/modules/SystemBackendPosix.cpp +++ b/src/modules/SystemBackendPosix.cpp @@ -20,6 +20,7 @@ #include "SystemBackendPosix.h" #include <Net/FdManager.h> +#include <Common/ActionManager.h> #include <cstdio> #include <cstdlib> @@ -113,13 +114,11 @@ void SystemBackendPosix::childHandler(int) { int status; pid_t pid; - // TODO Don't call callbacks directly - while((pid = waitpid(-1, &status, WNOHANG)) > 0) { std::map<pid_t, sigc::slot<void, int> >::iterator it = processes.find(pid); if(it != processes.end()) { - it->second(status); + Common::ActionManager::get()->add(sigc::bind(it->second, status)); processes.erase(it); } else { @@ -137,7 +136,7 @@ void SystemBackendPosix::childHandler(int) { Net::FdManager::get()->unregisterFd(handle); close(handle); - it2->second(status, output); + Common::ActionManager::get()->add(sigc::bind(it2->second, status, output)); processesWithOutput.erase(it2); processesWOHandles.erase(pid); processesWOOutput.erase(pid); |