20 #include "JackWinProcessSync.h"    21 #include "JackError.h"    26 void JackWinProcessSync::Signal()
    28     if (!SetEvent(fEvent)) {
    29         jack_error(
"JackWinProcessSync::Signal SetEvent err = %d", GetLastError());
    33 void JackWinProcessSync::LockedSignal()
    35     DWORD res = WaitForSingleObject(fMutex, INFINITE);
    36     if (res != WAIT_OBJECT_0) {
    37         jack_error(
"JackWinProcessSync::LockedSignal WaitForSingleObject err = %d", GetLastError());
    39     if (!SetEvent(fEvent)) {
    40         jack_error(
"JackWinProcessSync::LockedSignal SetEvent err = %d", GetLastError());
    42     if (!ReleaseMutex(fMutex)) {
    43         jack_error(
"JackWinProcessSync::LockedSignal ReleaseMutex err = %d", GetLastError());
    47 void JackWinProcessSync::SignalAll()
    52 void JackWinProcessSync::LockedSignalAll()
    70 void JackWinProcessSync::LockedWait()
    91 bool JackWinProcessSync::LockedTimedWait(
long usec)
    94     return TimedWait(usec);
    97 void JackWinProcessSync::Wait()
   100     if (ReleaseMutex(fMutex)) {
   101         HANDLE handles[] = { fMutex, fEvent };
   102         DWORD res = WaitForMultipleObjects(2, handles, 
true, INFINITE);
   103         if (res != WAIT_OBJECT_0) {
   104             jack_error(
"JackWinProcessSync::Wait WaitForMultipleObjects err = %d", GetLastError());
   108         jack_error(
"JackWinProcessSync::Wait ReleaseMutex err = %d", GetLastError());
   109         DWORD res = WaitForSingleObject(fEvent, INFINITE);
   110         if (res != WAIT_OBJECT_0) {
   111             jack_error(
"JackWinProcessSync::Wait WaitForSingleObject err = %d", GetLastError());
   115     if (!ResetEvent(fEvent)) {
   116         jack_error(
"JackWinProcessSync::Wait ResetEvent err = %d", GetLastError());
   120 bool JackWinProcessSync::TimedWait(
long usec)
   125         if (ReleaseMutex(fMutex)) {
   126         HANDLE handles[] = { fMutex, fEvent };
   127         res = WaitForMultipleObjects(2, handles, 
true, usec / 1000);
   128         if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) {
   129             jack_error(
"JackWinProcessSync::TimedWait WaitForMultipleObjects err = %d", GetLastError());
   133         jack_error(
"JackWinProcessSync::TimedWait ReleaseMutex err = %d", GetLastError());
   134         res = WaitForSingleObject(fEvent, usec / 1000);
   135         if (res != WAIT_OBJECT_0) {
   136             jack_error(
"JackWinProcessSync::TimedWait WaitForSingleObject err = %d", GetLastError());
   140         if (!ResetEvent(fEvent)) {
   141         jack_error(
"JackWinProcessSync::TimedWait ResetEvent err = %d", GetLastError());
   144         return (res == WAIT_OBJECT_0);
 
SERVER_EXPORT void jack_error(const char *fmt,...)