X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fwin32%2FTicker.c;h=5b41494d47e589c5e7d01fe5f38038b728cb1734;hb=c6eadadbefe2ec5709e9d31893f79c4ff78754b4;hp=9fa40ebe52abf6c42db82a5e96367ccf85d56f05;hpb=610de7d17e09318272b7516bd9b97e8b2cbd170c;p=ghc-hetmet.git diff --git a/rts/win32/Ticker.c b/rts/win32/Ticker.c index 9fa40eb..5b41494 100644 --- a/rts/win32/Ticker.c +++ b/rts/win32/Ticker.c @@ -54,6 +54,7 @@ TimerProc(PVOID param) /* event has become signalled */ tickProc = NULL; CloseHandle(hStopEvent); + hStopEvent = INVALID_HANDLE_VALUE; return 0; case WAIT_TIMEOUT: /* tick */ @@ -73,7 +74,7 @@ TimerProc(PVOID param) } -int +void startTicker(nat ms, TickProc handle_tick) { unsigned threadId; @@ -94,10 +95,14 @@ startTicker(nat ms, TickProc handle_tick) (LPVOID)ms, 0, &threadId); - return (tickThread != 0); + + if (tickThread == 0) { + sysErrorBelch("_beginthreadex"); + stg_exit(EXIT_FAILURE); + } } -int +void stopTicker(void) { // We must wait for the ticker thread to terminate, since if we @@ -115,11 +120,13 @@ stopTicker(void) } if (exitCode != STILL_ACTIVE) { tickThread = INVALID_HANDLE_VALUE; - CloseHandle(hStopEvent); + if ( hStopEvent != INVALID_HANDLE_VALUE ) { + CloseHandle(hStopEvent); + hStopEvent = INVALID_HANDLE_VALUE; + } return 0; } TerminateThread(tickThread, 0); } } - return 0; }