Create RARCH_DRIVER_CTL_INIT

This commit is contained in:
twinaphex 2015-12-11 11:21:17 +01:00
parent 60f606fc65
commit ab36e92595
3 changed files with 26 additions and 15 deletions

View File

@ -1264,14 +1264,23 @@ bool event_command(enum event_command cmd)
#endif #endif
break; break;
case EVENT_CMD_DRIVERS_DEINIT: case EVENT_CMD_DRIVERS_DEINIT:
uninit_drivers(DRIVERS_CMD_ALL); {
int flags = DRIVERS_CMD_ALL;
uninit_drivers(flags);
}
break; break;
case EVENT_CMD_DRIVERS_INIT: case EVENT_CMD_DRIVERS_INIT:
init_drivers(DRIVERS_CMD_ALL); {
int flags = DRIVERS_CMD_ALL;
driver_ctl(RARCH_DRIVER_CTL_INIT, &flags);
}
break; break;
case EVENT_CMD_AUDIO_REINIT: case EVENT_CMD_AUDIO_REINIT:
uninit_drivers(DRIVER_AUDIO); {
init_drivers(DRIVER_AUDIO); int flags = DRIVER_AUDIO;
uninit_drivers(flags);
driver_ctl(RARCH_DRIVER_CTL_INIT, &flags);
}
break; break;
case EVENT_CMD_RESET_CONTEXT: case EVENT_CMD_RESET_CONTEXT:
event_command(EVENT_CMD_DRIVERS_DEINIT); event_command(EVENT_CMD_DRIVERS_DEINIT);

View File

@ -307,7 +307,7 @@ static void menu_update_libretro_info(void)
* Initializes drivers. * Initializes drivers.
* @flags determines which drivers get initialized. * @flags determines which drivers get initialized.
**/ **/
void init_drivers(int flags) static void init_drivers(int flags)
{ {
if (flags & DRIVER_VIDEO) if (flags & DRIVER_VIDEO)
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER, NULL); video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER, NULL);
@ -439,6 +439,14 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
camera_driver_ctl(RARCH_CAMERA_CTL_DESTROY, NULL); camera_driver_ctl(RARCH_CAMERA_CTL_DESTROY, NULL);
retro_uninit_libretro_cbs(); retro_uninit_libretro_cbs();
break; break;
case RARCH_DRIVER_CTL_INIT:
{
int *flags = (int*)data;
if (!flags)
return false;
init_drivers(*flags);
}
return true;
case RARCH_DRIVER_CTL_INIT_PRE: case RARCH_DRIVER_CTL_INIT_PRE:
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL); audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL);
video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL); video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL);

View File

@ -160,7 +160,6 @@ enum analog_dpad_mode
ANALOG_DPAD_LAST ANALOG_DPAD_LAST
}; };
/* Flags for init_drivers/uninit_drivers */
enum enum
{ {
DRIVER_AUDIO = 1 << 0, DRIVER_AUDIO = 1 << 0,
@ -176,6 +175,10 @@ enum driver_ctl_state
{ {
RARCH_DRIVER_CTL_NONE = 0, RARCH_DRIVER_CTL_NONE = 0,
RARCH_DRIVER_CTL_DEINIT, RARCH_DRIVER_CTL_DEINIT,
/* Initializes drivers.
* @data is a bitmask which determines
* which drivers get initialized. */
RARCH_DRIVER_CTL_INIT,
/* Attempts to find a default driver for /* Attempts to find a default driver for
* all driver types. * all driver types.
* *
@ -213,15 +216,6 @@ enum driver_ctl_state
* Typically, if a driver intends to make use of this, it should * Typically, if a driver intends to make use of this, it should
* set this to true at the end of its 'init' function. */ * set this to true at the end of its 'init' function. */
/**
* init_drivers:
* @flags : Bitmask of drivers to initialize.
*
* Initializes drivers.
* @flags determines which drivers get initialized.
**/
void init_drivers(int flags);
/** /**
* uninit_drivers: * uninit_drivers:
* @flags : Bitmask of drivers to deinitialize. * @flags : Bitmask of drivers to deinitialize.