winmm: Fix fd leak on restarting timer.
This commit is contained in:
parent
201c26530d
commit
6910b0f143
|
@ -243,16 +243,19 @@ static DWORD CALLBACK TIME_MMSysTimeThread(LPVOID arg)
|
||||||
static void TIME_MMTimeStart(void)
|
static void TIME_MMTimeStart(void)
|
||||||
{
|
{
|
||||||
TIME_TimeToDie = 0;
|
TIME_TimeToDie = 0;
|
||||||
if (!TIME_hMMTimer) {
|
|
||||||
HMODULE mod;
|
if (TIME_fdWake[0] < 0) {
|
||||||
if (pipe(TIME_fdWake) < 0)
|
if (pipe(TIME_fdWake) < 0) {
|
||||||
{
|
|
||||||
TIME_fdWake[0] = TIME_fdWake[1] = -1;
|
TIME_fdWake[0] = TIME_fdWake[1] = -1;
|
||||||
ERR("Cannot create pipe: %s\n", strerror(errno));
|
ERR("Cannot create pipe: %s\n", strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
fcntl(TIME_fdWake[0], F_SETFL, O_NONBLOCK);
|
fcntl(TIME_fdWake[0], F_SETFL, O_NONBLOCK);
|
||||||
fcntl(TIME_fdWake[1], F_SETFL, O_NONBLOCK);
|
fcntl(TIME_fdWake[1], F_SETFL, O_NONBLOCK);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!TIME_hMMTimer) {
|
||||||
|
HMODULE mod;
|
||||||
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)TIME_MMSysTimeThread, &mod);
|
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)TIME_MMSysTimeThread, &mod);
|
||||||
TIME_hMMTimer = CreateThread(NULL, 0, TIME_MMSysTimeThread, mod, 0, NULL);
|
TIME_hMMTimer = CreateThread(NULL, 0, TIME_MMSysTimeThread, mod, 0, NULL);
|
||||||
SetThreadPriority(TIME_hMMTimer, THREAD_PRIORITY_TIME_CRITICAL);
|
SetThreadPriority(TIME_hMMTimer, THREAD_PRIORITY_TIME_CRITICAL);
|
||||||
|
|
Loading…
Reference in New Issue