From cdbdead5a31248a4b482405f20c1045afdbf22cc Mon Sep 17 00:00:00 2001 From: =?utf-8?q?J=C3=B6rg=20H=C3=B6hle?= Date: Sun, 6 Mar 2011 22:13:18 +0100 Subject: [PATCH 1/4] winealsa: CreateEvent and CreateThread return NULL on error, not INVALID_HANDLE_VALUE. --- dlls/winealsa.drv/alsa.c | 6 +++--- dlls/winealsa.drv/wavein.c | 4 ++-- dlls/winealsa.drv/waveout.c | 10 ++++------ 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/dlls/winealsa.drv/alsa.c b/dlls/winealsa.drv/alsa.c index b242cfa..ef2d221 100644 --- a/dlls/winealsa.drv/alsa.c +++ b/dlls/winealsa.drv/alsa.c @@ -127,7 +127,7 @@ void ALSA_WaitRingMessage(ALSA_MSG_RING* omr, DWORD sleep) */ int ALSA_AddRingMessage(ALSA_MSG_RING* omr, enum win_wm_message msg, DWORD_PTR param, BOOL wait) { - HANDLE hEvent = INVALID_HANDLE_VALUE; + HANDLE hEvent = NULL; EnterCriticalSection(&omr->msg_crst); if ((omr->msg_toget == ((omr->msg_tosave + 1) % omr->ring_buffer_size))) @@ -151,7 +151,7 @@ int ALSA_AddRingMessage(ALSA_MSG_RING* omr, enum win_wm_message msg, DWORD_PTR p if (wait) { hEvent = CreateEventW(NULL, FALSE, FALSE, NULL); - if (hEvent == INVALID_HANDLE_VALUE) + if (!hEvent) { ERR("can't create event !?\n"); LeaveCriticalSection(&omr->msg_crst); @@ -173,7 +173,7 @@ int ALSA_AddRingMessage(ALSA_MSG_RING* omr, enum win_wm_message msg, DWORD_PTR p { omr->messages[omr->msg_tosave].msg = msg; omr->messages[omr->msg_tosave].param = param; - omr->messages[omr->msg_tosave].hEvent = INVALID_HANDLE_VALUE; + omr->messages[omr->msg_tosave].hEvent = NULL; omr->msg_tosave = (omr->msg_tosave + 1) % omr->ring_buffer_size; } LeaveCriticalSection(&omr->msg_crst); diff --git a/dlls/winealsa.drv/wavein.c b/dlls/winealsa.drv/wavein.c index 2b0630b..daf73be 100644 --- a/dlls/winealsa.drv/wavein.c +++ b/dlls/winealsa.drv/wavein.c @@ -515,7 +515,7 @@ static DWORD widOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags) SetThreadPriority(wwi->hThread, THREAD_PRIORITY_TIME_CRITICAL); WaitForSingleObject(wwi->hStartUpEvent, INFINITE); CloseHandle(wwi->hStartUpEvent); - wwi->hStartUpEvent = INVALID_HANDLE_VALUE; + wwi->hStartUpEvent = NULL; HeapFree( GetProcessHeap(), 0, hw_params ); HeapFree( GetProcessHeap(), 0, sw_params ); @@ -554,7 +554,7 @@ static DWORD widClose(WORD wDevID) WARN("buffers still playing !\n"); ret = WAVERR_STILLPLAYING; } else { - if (wwi->hThread != INVALID_HANDLE_VALUE) { + if (wwi->hThread) { ALSA_AddRingMessage(&wwi->msgRing, WINE_WM_CLOSING, 0, TRUE); } ALSA_DestroyRingMessage(&wwi->msgRing); diff --git a/dlls/winealsa.drv/waveout.c b/dlls/winealsa.drv/waveout.c index 6ab1515..6dcd80f 100644 --- a/dlls/winealsa.drv/waveout.c +++ b/dlls/winealsa.drv/waveout.c @@ -782,18 +782,16 @@ static DWORD wodOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags) wwo->hStartUpEvent = CreateEventW(NULL, FALSE, FALSE, NULL); wwo->hThread = CreateThread(NULL, 0, wodPlayer, (LPVOID)(DWORD_PTR)wDevID, 0, &(wwo->dwThreadID)); - if (wwo->hThread) - SetThreadPriority(wwo->hThread, THREAD_PRIORITY_TIME_CRITICAL); - else - { + if (!wwo->hThread) { ERR("Thread creation for the wodPlayer failed!\n"); CloseHandle(wwo->hStartUpEvent); retcode = MMSYSERR_NOMEM; goto errexit; } + SetThreadPriority(wwo->hThread, THREAD_PRIORITY_TIME_CRITICAL); WaitForSingleObject(wwo->hStartUpEvent, INFINITE); CloseHandle(wwo->hStartUpEvent); - wwo->hStartUpEvent = INVALID_HANDLE_VALUE; + wwo->hStartUpEvent = NULL; TRACE("handle=%p\n", pcm); TRACE("wBitsPerSample=%u, nAvgBytesPerSec=%u, nSamplesPerSec=%u, nChannels=%u nBlockAlign=%u!\n", @@ -856,7 +854,7 @@ static DWORD wodClose(WORD wDevID) WARN("buffers still playing !\n"); ret = WAVERR_STILLPLAYING; } else { - if (wwo->hThread != INVALID_HANDLE_VALUE) { + if (wwo->hThread) { ALSA_AddRingMessage(&wwo->msgRing, WINE_WM_CLOSING, 0, TRUE); } ALSA_DestroyRingMessage(&wwo->msgRing); -- 1.5.6.3