projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix generic GUI for AU.
[ardour.git]
/
libs
/
pbd
/
system_exec.cc
diff --git
a/libs/pbd/system_exec.cc
b/libs/pbd/system_exec.cc
index 01c46aa9eb62b603922aca904a1a3a3e0ceb34cf..60e73badfcf19eb567ebe72f91a2a63253608819 100644
(file)
--- a/
libs/pbd/system_exec.cc
+++ b/
libs/pbd/system_exec.cc
@@
-55,7
+55,10
@@
using namespace std;
using namespace PBD;
static void * interposer_thread (void *arg);
using namespace PBD;
static void * interposer_thread (void *arg);
+
+#ifndef PLATFORM_WINDOWS /* POSIX Process only */
static void close_fd (int& fd) { if (fd >= 0) ::close (fd); fd = -1; }
static void close_fd (int& fd) { if (fd >= 0) ::close (fd); fd = -1; }
+#endif
#if (!defined PLATFORM_WINDOWS && defined NO_VFORK)
/*
#if (!defined PLATFORM_WINDOWS && defined NO_VFORK)
/*
@@
-413,8
+416,7
@@
int
SystemExec::wait (int options)
{
while (is_running()) {
SystemExec::wait (int options)
{
while (is_running()) {
- WaitForSingleObject(pid->hProcess, INFINITE);
- Sleep(20);
+ WaitForSingleObject(pid->hProcess, 40);
}
return 0;
}
}
return 0;
}
@@
-422,7
+424,12
@@
SystemExec::wait (int options)
bool
SystemExec::is_running ()
{
bool
SystemExec::is_running ()
{
- return pid?true:false;
+ if (!pid) return false;
+ DWORD exit_code;
+ if (GetExitCodeProcess(pid->hProcess, &exit_code)) {
+ if (exit_code == STILL_ACTIVE) return true;
+ }
+ return false;
}
int
}
int