VIDEO: Move beep and joystick/gamepad init & cleanup into SDL event thread
This commit is contained in:
parent
f95ac7ddbd
commit
be117a33bd
1 changed files with 9 additions and 16 deletions
25
sim_video.c
25
sim_video.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue