projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve runghc's argument handling
[ghc-hetmet.git]
/
rts
/
win32
/
Ticker.c
diff --git
a/rts/win32/Ticker.c
b/rts/win32/Ticker.c
index
ab791d8
..
5b41494
100644
(file)
--- 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);
/* event has become signalled */
tickProc = NULL;
CloseHandle(hStopEvent);
+ hStopEvent = INVALID_HANDLE_VALUE;
return 0;
case WAIT_TIMEOUT:
/* tick */
return 0;
case WAIT_TIMEOUT:
/* tick */
@@
-73,7
+74,7
@@
TimerProc(PVOID param)
}
}
-int
+void
startTicker(nat ms, TickProc handle_tick)
{
unsigned threadId;
startTicker(nat ms, TickProc handle_tick)
{
unsigned threadId;
@@
-94,10
+95,14
@@
startTicker(nat ms, TickProc handle_tick)
(LPVOID)ms,
0,
&threadId);
(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
stopTicker(void)
{
// We must wait for the ticker thread to terminate, since if we
@@
-115,10
+120,13
@@
stopTicker(void)
}
if (exitCode != STILL_ACTIVE) {
tickThread = INVALID_HANDLE_VALUE;
}
if (exitCode != STILL_ACTIVE) {
tickThread = INVALID_HANDLE_VALUE;
+ if ( hStopEvent != INVALID_HANDLE_VALUE ) {
+ CloseHandle(hStopEvent);
+ hStopEvent = INVALID_HANDLE_VALUE;
+ }
return 0;
}
TerminateThread(tickThread, 0);
}
}
return 0;
}
TerminateThread(tickThread, 0);
}
}
- return 0;
}
}