99 |
int InstrumentManagerThread::Main() { |
int InstrumentManagerThread::Main() { |
100 |
while (true) { |
while (true) { |
101 |
|
|
102 |
#if CONFIG_PTHREAD_TESTCANCEL |
#if CONFIG_PTHREAD_TESTCANCEL |
103 |
TestCancel(); |
TestCancel(); |
104 |
#endif |
#endif |
105 |
|
|
106 |
while (!queue.empty()) { |
while (!queue.empty()) { |
107 |
command_t cmd; |
command_t cmd; |
167 |
} |
} |
168 |
pThread->mutex.Unlock(); |
pThread->mutex.Unlock(); |
169 |
} |
} |
170 |
|
|
171 |
|
int InstrumentManagerThread::StopThread() { |
172 |
|
// This is a fix for Mac OS X, where SignalStopThread doesn't |
173 |
|
// wake up a thread waiting for a condition variable. |
174 |
|
SignalStopThread(); // send stop signal, but don't wait |
175 |
|
conditionJobsLeft.Set(true); // wake thread |
176 |
|
return Thread::StopThread(); // then wait for it to cancel |
177 |
|
} |
178 |
|
|
179 |
} // namespace LinuxSampler |
} // namespace LinuxSampler |