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
break;
case EVENT_CMD_DRIVERS_DEINIT:
uninit_drivers(DRIVERS_CMD_ALL);
{
int flags = DRIVERS_CMD_ALL;
uninit_drivers(flags);
}
break;
case EVENT_CMD_DRIVERS_INIT:
init_drivers(DRIVERS_CMD_ALL);
{
int flags = DRIVERS_CMD_ALL;
driver_ctl(RARCH_DRIVER_CTL_INIT, &flags);
}
break;
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;
case EVENT_CMD_RESET_CONTEXT:
event_command(EVENT_CMD_DRIVERS_DEINIT);

View File

@ -307,7 +307,7 @@ static void menu_update_libretro_info(void)
* Initializes drivers.
* @flags determines which drivers get initialized.
**/
void init_drivers(int flags)
static void init_drivers(int flags)
{
if (flags & DRIVER_VIDEO)
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);
retro_uninit_libretro_cbs();
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:
audio_driver_ctl(RARCH_AUDIO_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
};
/* Flags for init_drivers/uninit_drivers */
enum
{
DRIVER_AUDIO = 1 << 0,
@ -176,6 +175,10 @@ enum driver_ctl_state
{
RARCH_DRIVER_CTL_NONE = 0,
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
* all driver types.
*
@ -213,15 +216,6 @@ enum driver_ctl_state
* Typically, if a driver intends to make use of this, it should
* 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:
* @flags : Bitmask of drivers to deinitialize.