diff --git a/command.c b/command.c index c660640118..5b4ab9103e 100644 --- a/command.c +++ b/command.c @@ -2195,7 +2195,7 @@ bool command_event(enum event_command cmd, void *data) break; case CMD_EVENT_AUDIO_REINIT: { - int flags = DRIVER_AUDIO; + int flags = DRIVER_AUDIO_MASK; driver_ctl(RARCH_DRIVER_CTL_UNINIT, &flags); driver_ctl(RARCH_DRIVER_CTL_INIT, &flags); } diff --git a/driver.c b/driver.c index 7be175e550..6c754fe7f8 100644 --- a/driver.c +++ b/driver.c @@ -293,17 +293,17 @@ static bool driver_update_system_av_info(const struct retro_system_av_info *info **/ static void init_drivers(int flags) { - if (flags & DRIVER_VIDEO) + if (flags & DRIVER_VIDEO_MASK) video_driver_unset_own_driver(); - if (flags & DRIVER_AUDIO) + if (flags & DRIVER_AUDIO_MASK) audio_driver_unset_own_driver(); - if (flags & DRIVER_INPUT) + if (flags & DRIVER_INPUT_MASK) input_driver_unset_own_driver(); - if (flags & DRIVER_CAMERA) + if (flags & DRIVER_CAMERA_MASK) camera_driver_ctl(RARCH_CAMERA_CTL_UNSET_OWN_DRIVER, NULL); - if (flags & DRIVER_LOCATION) + if (flags & DRIVER_LOCATION_MASK) location_driver_ctl(RARCH_LOCATION_CTL_UNSET_OWN_DRIVER, NULL); - if (flags & DRIVER_WIFI) + if (flags & DRIVER_WIFI_MASK) wifi_driver_ctl(RARCH_WIFI_CTL_UNSET_OWN_DRIVER, NULL); #ifdef HAVE_MENU @@ -311,10 +311,10 @@ static void init_drivers(int flags) menu_driver_ctl(RARCH_MENU_CTL_SET_OWN_DRIVER, NULL); #endif - if (flags & (DRIVER_VIDEO | DRIVER_AUDIO)) + if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK)) driver_adjust_system_rates(); - if (flags & DRIVER_VIDEO) + if (flags & DRIVER_VIDEO_MASK) { struct retro_hw_render_callback *hwr = video_driver_get_hw_context(); @@ -330,29 +330,29 @@ static void init_drivers(int flags) runloop_ctl(RUNLOOP_CTL_SET_FRAME_TIME_LAST, NULL); } - if (flags & DRIVER_AUDIO) + if (flags & DRIVER_AUDIO_MASK) { audio_driver_init(); audio_driver_new_devices_list(); } /* Only initialize camera driver if we're ever going to use it. */ - if ((flags & DRIVER_CAMERA) && camera_driver_ctl(RARCH_CAMERA_CTL_IS_ACTIVE, NULL)) + if ((flags & DRIVER_CAMERA_MASK) && camera_driver_ctl(RARCH_CAMERA_CTL_IS_ACTIVE, NULL)) camera_driver_ctl(RARCH_CAMERA_CTL_INIT, NULL); /* Only initialize location driver if we're ever going to use it. */ - if ((flags & DRIVER_LOCATION) && location_driver_ctl(RARCH_LOCATION_CTL_IS_ACTIVE, NULL)) + if ((flags & DRIVER_LOCATION_MASK) && location_driver_ctl(RARCH_LOCATION_CTL_IS_ACTIVE, NULL)) init_location(); #ifdef HAVE_MENU - if (flags & DRIVER_MENU) + if (flags & DRIVER_MENU_MASK) { menu_driver_ctl(RARCH_MENU_CTL_INIT, NULL); menu_driver_ctl(RARCH_MENU_CTL_CONTEXT_RESET, NULL); } #endif - if (flags & (DRIVER_VIDEO | DRIVER_AUDIO)) + if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK)) { /* Keep non-throttled state as good as possible. */ if (input_driver_is_nonblock_state()) @@ -388,32 +388,32 @@ static void init_drivers(int flags) static void uninit_drivers(int flags) { #ifdef HAVE_MENU - if (flags & DRIVER_MENU) + if (flags & DRIVER_MENU_MASK) menu_driver_ctl(RARCH_MENU_CTL_DEINIT, NULL); #endif - if ((flags & DRIVER_LOCATION) && !location_driver_ctl(RARCH_LOCATION_CTL_OWNS_DRIVER, NULL)) + if ((flags & DRIVER_LOCATION_MASK) && !location_driver_ctl(RARCH_LOCATION_CTL_OWNS_DRIVER, NULL)) location_driver_ctl(RARCH_LOCATION_CTL_DEINIT, NULL); - if ((flags & DRIVER_CAMERA) && !camera_driver_ctl(RARCH_CAMERA_CTL_OWNS_DRIVER, NULL)) + if ((flags & DRIVER_CAMERA_MASK) && !camera_driver_ctl(RARCH_CAMERA_CTL_OWNS_DRIVER, NULL)) camera_driver_ctl(RARCH_CAMERA_CTL_DEINIT, NULL); - if (flags & DRIVER_AUDIO) + if (flags & DRIVER_AUDIO_MASK) audio_driver_deinit(); - if ((flags & DRIVER_WIFI) && !wifi_driver_ctl(RARCH_WIFI_CTL_OWNS_DRIVER, NULL)) + if ((flags & DRIVER_WIFI_MASK) && !wifi_driver_ctl(RARCH_WIFI_CTL_OWNS_DRIVER, NULL)) wifi_driver_ctl(RARCH_WIFI_CTL_DEINIT, NULL); if (flags & DRIVERS_VIDEO_INPUT) video_driver_deinit(); - if ((flags & DRIVER_VIDEO) && !video_driver_owns_driver()) + if ((flags & DRIVER_VIDEO_MASK) && !video_driver_owns_driver()) video_driver_destroy_data(); - if ((flags & DRIVER_INPUT) && !input_driver_owns_driver()) + if ((flags & DRIVER_INPUT_MASK) && !input_driver_owns_driver()) input_driver_destroy_data(); - if ((flags & DRIVER_AUDIO) && !audio_driver_owns_driver()) + if ((flags & DRIVER_AUDIO_MASK) && !audio_driver_owns_driver()) audio_driver_destroy_data(); } diff --git a/driver.h b/driver.h index 1451df9cc5..475564058b 100644 --- a/driver.h +++ b/driver.h @@ -27,25 +27,37 @@ RETRO_BEGIN_DECLS #define DRIVERS_CMD_ALL \ - ( DRIVER_AUDIO \ - | DRIVER_VIDEO \ - | DRIVER_INPUT \ - | DRIVER_CAMERA \ - | DRIVER_LOCATION \ - | DRIVER_MENU \ - | DRIVERS_VIDEO_INPUT \ - | DRIVER_WIFI ) + ( DRIVER_AUDIO_MASK \ + | DRIVER_VIDEO_MASK \ + | DRIVER_INPUT_MASK \ + | DRIVER_CAMERA_MASK \ + | DRIVER_LOCATION_MASK \ + | DRIVER_MENU_MASK \ + | DRIVERS_VIDEO_INPUT_MASK \ + | DRIVER_WIFI_MASK ) enum { - DRIVER_AUDIO = 1 << 0, - DRIVER_VIDEO = 1 << 1, - DRIVER_INPUT = 1 << 2, - DRIVER_CAMERA = 1 << 3, - DRIVER_LOCATION = 1 << 4, - DRIVER_MENU = 1 << 5, - DRIVERS_VIDEO_INPUT = 1 << 6, - DRIVER_WIFI = 1 << 7 + DRIVER_AUDIO = 0, + DRIVER_VIDEO, + DRIVER_INPUT, + DRIVER_CAMERA, + DRIVER_LOCATION, + DRIVER_MENU, + DRIVERS_VIDEO_INPUT, + DRIVER_WIFI +}; + +enum +{ + DRIVER_AUDIO_MASK = 1 << DRIVER_AUDIO, + DRIVER_VIDEO_MASK = 1 << DRIVER_VIDEO, + DRIVER_INPUT_MASK = 1 << DRIVER_INPUT, + DRIVER_CAMERA_MASK = 1 << DRIVER_CAMERA, + DRIVER_LOCATION_MASK = 1 << DRIVER_LOCATION, + DRIVER_MENU_MASK = 1 << DRIVER_MENU, + DRIVERS_VIDEO_INPUT_MASK = 1 << DRIVERS_VIDEO_INPUT, + DRIVER_WIFI_MASK = 1 << DRIVER_WIFI }; enum driver_ctl_state