summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2017-11-05 13:47:00 -0600
committerJeremy Rimpo <jeremy.rimpo@servermonkey.com>2017-11-05 13:47:00 -0600
commita92fc98246f351ed6657788b9b12aca7cce4771a (patch)
treec18cc1fb7d171f549e939f1c3e0e7ad478f6b99e /src
parent853c42081d9c7f14bea2ffe8ee076724fd5e3946 (diff)
Remove cruft and reapply input event listening on subprocess delay
Diffstat (limited to 'src')
-rw-r--r--src/organizercore.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index deb47d74..d12b77b9 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1253,13 +1253,11 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode)
LPDWORD processes = new DWORD[maxCount];
std::map<DWORD, HANDLE> handles;
- DWORD currentProcess = 0UL;
bool tryAgain = true;
DWORD moProcess = -1;
DWORD res;
// Wait for a an event on the handle, a key press, mouse click or timeout
- //TODO: Remove MOBase::isOneOf from this query as it was always returning true.
while (
res = ::MsgWaitForMultipleObjects(1, &handle, false, 500,
QS_KEY | QS_MOUSE),
@@ -1304,20 +1302,22 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode)
}
}
+ // Update the lock process name with the name of the lowest active PID - though this may not actually be the main process
if (handles.size() > 0)
m_UserInterface->setProcessName(QString::fromStdWString(getProcessName(handles.begin()->second)));
+ // If the main wait process dies, we need a backup wait process until the subprocesses close
if ((res == WAIT_FAILED) || (res == WAIT_OBJECT_0)) {
if (handles.size() > 0) {
- QThread::msleep(500);
+ // By the time we get here, the main wait function should always immediately continue
+ // Passing in a handle doesn't seem to work for subprocesses
+ ::MsgWaitForMultipleObjects(0, NULL, FALSE, 500, QS_KEY | QS_MOUSE);
}
}
- // If process handle is still closed, let's give it one more try...
+ // Give the process list a short time to populate
+ // Required for initial USVFS boot and process switching
if (handles.size() == 0 && !found) {
- // it's possible the previous process has deregistered before
- // the new one has registered, so we should try one more time
- // with a little delay
if (tryAgain) {
tryAgain = false;
QThread::msleep(500);