windowsrawinput: Fix incorrect INVALID_HANDLE_VALUE checks.

CreateEvent/CreateThread return NULL on failure.
This commit is contained in:
William Horvath
2026-03-20 06:19:48 -07:00
committed by Sam Lantinga
parent 00f9a25879
commit 706e7f9043

View File

@@ -46,13 +46,7 @@ typedef struct
HANDLE thread; HANDLE thread;
} RawInputThreadData; } RawInputThreadData;
static RawInputThreadData thread_data = { static RawInputThreadData thread_data = { 0 };
false,
0,
INVALID_HANDLE_VALUE,
INVALID_HANDLE_VALUE,
INVALID_HANDLE_VALUE
};
static DWORD WINAPI WIN_RawInputThread(LPVOID param) static DWORD WINAPI WIN_RawInputThread(LPVOID param)
{ {
@@ -140,22 +134,22 @@ static DWORD WINAPI WIN_RawInputThread(LPVOID param)
static void CleanupRawInputThreadData(RawInputThreadData *data) static void CleanupRawInputThreadData(RawInputThreadData *data)
{ {
if (data->thread != INVALID_HANDLE_VALUE) { if (data->thread) {
data->done = true; data->done = true;
SetEvent(data->signal_event); SetEvent(data->signal_event);
WaitForSingleObject(data->thread, 3000); WaitForSingleObject(data->thread, 3000);
CloseHandle(data->thread); CloseHandle(data->thread);
data->thread = INVALID_HANDLE_VALUE; data->thread = NULL;
} }
if (data->ready_event != INVALID_HANDLE_VALUE) { if (data->ready_event) {
CloseHandle(data->ready_event); CloseHandle(data->ready_event);
data->ready_event = INVALID_HANDLE_VALUE; data->ready_event = NULL;
} }
if (data->signal_event != INVALID_HANDLE_VALUE) { if (data->signal_event) {
CloseHandle(data->signal_event); CloseHandle(data->signal_event);
data->signal_event = INVALID_HANDLE_VALUE; data->signal_event = NULL;
} }
} }
@@ -170,20 +164,20 @@ bool WIN_SetRawInputEnabled(SDL_VideoDevice *_this, Uint32 flags)
thread_data.flags = flags; thread_data.flags = flags;
thread_data.ready_event = CreateEvent(NULL, FALSE, FALSE, NULL); thread_data.ready_event = CreateEvent(NULL, FALSE, FALSE, NULL);
if (thread_data.ready_event == INVALID_HANDLE_VALUE) { if (!thread_data.ready_event) {
WIN_SetError("CreateEvent"); WIN_SetError("CreateEvent");
goto done; goto done;
} }
thread_data.done = false; thread_data.done = false;
thread_data.signal_event = CreateEvent(NULL, FALSE, FALSE, NULL); thread_data.signal_event = CreateEvent(NULL, FALSE, FALSE, NULL);
if (thread_data.signal_event == INVALID_HANDLE_VALUE) { if (!thread_data.signal_event) {
WIN_SetError("CreateEvent"); WIN_SetError("CreateEvent");
goto done; goto done;
} }
thread_data.thread = CreateThread(NULL, 0, WIN_RawInputThread, &thread_data, 0, NULL); thread_data.thread = CreateThread(NULL, 0, WIN_RawInputThread, &thread_data, 0, NULL);
if (thread_data.thread == INVALID_HANDLE_VALUE) { if (!thread_data.thread) {
WIN_SetError("CreateThread"); WIN_SetError("CreateThread");
goto done; goto done;
} }