X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fwin32%2FThrIOManager.c;fp=rts%2Fwin32%2FThrIOManager.c;h=a74aac12d7094d70d5c19bf3965e47489aac5b9e;hb=eacbef6dc436008473b333df551937224d901092;hp=76747c2376dc44b2caa8e980741f6ca3b92a90bf;hpb=1d47f08d196252b4ee5f4d5b5af2fb4945720762;p=ghc-hetmet.git diff --git a/rts/win32/ThrIOManager.c b/rts/win32/ThrIOManager.c index 76747c2..a74aac1 100644 --- a/rts/win32/ThrIOManager.c +++ b/rts/win32/ThrIOManager.c @@ -67,8 +67,8 @@ readIOManagerEvent (void) #if defined(THREADED_RTS) HsWord32 res; - ACQUIRE_LOCK(&event_buf_mutex); if (io_manager_event != INVALID_HANDLE_VALUE) { + ACQUIRE_LOCK(&event_buf_mutex); if (next_event == 0) { res = 0; // no event to return } else { @@ -80,10 +80,10 @@ readIOManagerEvent (void) } } } + RELEASE_LOCK(&event_buf_mutex); } else { res = 0; } - RELEASE_LOCK(&event_buf_mutex); // debugBelch("readIOManagerEvent: %d\n", res); return res; #else @@ -96,8 +96,8 @@ sendIOManagerEvent (HsWord32 event) { #if defined(THREADED_RTS) // debugBelch("sendIOManagerEvent: %d\n", event); - ACQUIRE_LOCK(&event_buf_mutex); if (io_manager_event != INVALID_HANDLE_VALUE) { + ACQUIRE_LOCK(&event_buf_mutex); if (next_event == EVENT_BUFSIZ) { errorBelch("event buffer overflowed; event dropped"); } else { @@ -107,8 +107,8 @@ sendIOManagerEvent (HsWord32 event) } event_buf[next_event++] = (StgWord32)event; } + RELEASE_LOCK(&event_buf_mutex); } - RELEASE_LOCK(&event_buf_mutex); #endif }