VIDEO: Move beep and joystick/gamepad init & cleanup into SDL event thread

This commit is contained in:
Mark Pizzolato 2020-06-12 22:00:25 -07:00
parent f95ac7ddbd
commit be117a33bd

View file

@ -437,12 +437,8 @@ while (1) {
if (event.user.code == EVENT_SCREENSHOT) if (event.user.code == EVENT_SCREENSHOT)
vid_screenshot_event (); vid_screenshot_event ();
else { else {
if (event.user.code == EVENT_BEEP) sim_printf ("main(): Unexpected User event: %d\n", event.user.code);
vid_beep_event (); break;
else {
sim_printf ("main(): Unexpected User event: %d\n", event.user.code);
break;
}
} }
} }
} }
@ -508,7 +504,7 @@ SDL_Joystick *y;
SDL_version ver; SDL_version ver;
int i, n; int i, n;
if (vid_gamepad_inited) if (vid_gamepad_inited++)
return; return;
/* Chech that the SDL_GameControllerFromInstanceID function is /* Chech that the SDL_GameControllerFromInstanceID function is
@ -562,14 +558,11 @@ for (i = 0; i < n; i++) {
} }
} }
} }
vid_gamepad_inited = 1;
} }
static void vid_controllers_cleanup (void) static void vid_controllers_cleanup (void)
{ {
if (vid_gamepad_inited) { if (0 == (--vid_gamepad_inited)) {
vid_gamepad_inited = 0;
memset (motion_callback, 0, sizeof motion_callback); memset (motion_callback, 0, sizeof motion_callback);
memset (button_callback, 0, sizeof button_callback); memset (button_callback, 0, sizeof button_callback);
if (vid_gamepad_ok) if (vid_gamepad_ok)
@ -614,8 +607,6 @@ if (!vid_active) {
if (stat != SCPE_OK) if (stat != SCPE_OK)
return stat; return stat;
vid_controllers_setup ();
sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE, vid_dev, "vid_open() - Success\n"); sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE, vid_dev, "vid_open() - Success\n");
} }
return SCPE_OK; return SCPE_OK;
@ -654,7 +645,6 @@ if (vid_active) {
SDL_DestroySemaphore(vid_key_events.sem); SDL_DestroySemaphore(vid_key_events.sem);
vid_key_events.sem = NULL; vid_key_events.sem = NULL;
} }
vid_controllers_cleanup ();
} }
return SCPE_OK; return SCPE_OK;
} }
@ -1661,6 +1651,9 @@ if (vid_flags & SIM_VID_INPUTCAPTURED) {
else else
SDL_SetWindowTitle (vid_window, vid_title); SDL_SetWindowTitle (vid_window, vid_title);
vid_beep_setup (400, 660);
vid_controllers_setup ();
vid_ready = TRUE; vid_ready = TRUE;
sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE|SIM_VID_DBG_CURSOR, vid_dev, "vid_thread() - Started\n"); sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE|SIM_VID_DBG_CURSOR, vid_dev, "vid_thread() - Started\n");
@ -1802,6 +1795,8 @@ SDL_DestroyWindow(vid_window);
vid_window = NULL; vid_window = NULL;
SDL_DestroyMutex (vid_draw_mutex); SDL_DestroyMutex (vid_draw_mutex);
vid_draw_mutex = NULL; vid_draw_mutex = NULL;
vid_controllers_cleanup ();
vid_beep_cleanup ();
sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE|SIM_VID_DBG_CURSOR, vid_dev, "vid_thread() - Exiting\n"); sim_debug (SIM_VID_DBG_VIDEO|SIM_VID_DBG_KEY|SIM_VID_DBG_MOUSE|SIM_VID_DBG_CURSOR, vid_dev, "vid_thread() - Exiting\n");
return 0; return 0;
} }
@ -1818,9 +1813,7 @@ if (stat) {
sim_printf ("SDL Video subsystem can't initialize\n"); sim_printf ("SDL Video subsystem can't initialize\n");
return 0; return 0;
} }
vid_beep_setup (400, 660);
vid_video_events (); vid_video_events ();
vid_beep_cleanup ();
SDL_Quit (); SDL_Quit ();
return 0; return 0;
} }