rawinput: Only access SDL_RAWINPUT_mutex if initialized

We can also ditch the lock in RAWINPUT_JoystickQuit() now that the joystick
subsystem quits drivers in reverse order. There's no chance of a racing call
to RAWINPUT_WindowProc() anymore.
This commit is contained in:
Cameron Gutman 2021-11-18 19:58:04 -06:00
parent 1237142be3
commit 881a674926
1 changed files with 4 additions and 7 deletions

View File

@ -1857,9 +1857,9 @@ RAWINPUT_WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
LRESULT result = -1; LRESULT result = -1;
if (SDL_RAWINPUT_inited) {
SDL_LockMutex(SDL_RAWINPUT_mutex); SDL_LockMutex(SDL_RAWINPUT_mutex);
if (SDL_RAWINPUT_inited) {
switch (msg) { switch (msg) {
case WM_INPUT_DEVICE_CHANGE: case WM_INPUT_DEVICE_CHANGE:
{ {
@ -1903,9 +1903,9 @@ RAWINPUT_WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
result = 0; result = 0;
break; break;
} }
}
SDL_UnlockMutex(SDL_RAWINPUT_mutex); SDL_UnlockMutex(SDL_RAWINPUT_mutex);
}
if (result >= 0) { if (result >= 0) {
return result; return result;
@ -1920,8 +1920,6 @@ RAWINPUT_JoystickQuit(void)
return; return;
} }
SDL_LockMutex(SDL_RAWINPUT_mutex);
while (SDL_RAWINPUT_devices) { while (SDL_RAWINPUT_devices) {
RAWINPUT_DelDevice(SDL_RAWINPUT_devices, SDL_FALSE); RAWINPUT_DelDevice(SDL_RAWINPUT_devices, SDL_FALSE);
} }
@ -1932,7 +1930,6 @@ RAWINPUT_JoystickQuit(void)
SDL_RAWINPUT_inited = SDL_FALSE; SDL_RAWINPUT_inited = SDL_FALSE;
SDL_UnlockMutex(SDL_RAWINPUT_mutex);
SDL_DestroyMutex(SDL_RAWINPUT_mutex); SDL_DestroyMutex(SDL_RAWINPUT_mutex);
SDL_RAWINPUT_mutex = NULL; SDL_RAWINPUT_mutex = NULL;
} }