(Wifi/Location/Camera) Get rid of 'own driver' mechanism

This commit is contained in:
twinaphex 2019-02-27 17:02:33 +01:00
parent e709fd1ac6
commit 712115ef9d
7 changed files with 20 additions and 54 deletions

View File

@ -46,7 +46,6 @@ static struct retro_camera_callback camera_cb;
static const camera_driver_t *camera_driver = NULL;
static void *camera_data = NULL;
static bool camera_driver_active = false;
static bool camera_driver_data_own = false;
/**
* camera_driver_find_handle:
@ -121,18 +120,9 @@ bool camera_driver_ctl(enum rarch_camera_ctl_state state, void *data)
{
case RARCH_CAMERA_CTL_DESTROY:
camera_driver_active = false;
camera_driver_data_own = false;
camera_driver = NULL;
camera_data = NULL;
break;
case RARCH_CAMERA_CTL_SET_OWN_DRIVER:
camera_driver_data_own = true;
break;
case RARCH_CAMERA_CTL_UNSET_OWN_DRIVER:
camera_driver_data_own = false;
break;
case RARCH_CAMERA_CTL_OWNS_DRIVER:
return camera_driver_data_own;
case RARCH_CAMERA_CTL_SET_ACTIVE:
camera_driver_active = true;
break;

View File

@ -30,9 +30,6 @@ enum rarch_camera_ctl_state
RARCH_CAMERA_CTL_NONE = 0,
RARCH_CAMERA_CTL_DESTROY,
RARCH_CAMERA_CTL_DEINIT,
RARCH_CAMERA_CTL_SET_OWN_DRIVER,
RARCH_CAMERA_CTL_UNSET_OWN_DRIVER,
RARCH_CAMERA_CTL_OWNS_DRIVER,
RARCH_CAMERA_CTL_SET_ACTIVE,
RARCH_CAMERA_CTL_UNSET_ACTIVE,
RARCH_CAMERA_CTL_IS_ACTIVE,

View File

@ -243,26 +243,16 @@ static void uninit_location(void)
bool location_driver_ctl(enum rarch_location_ctl_state state, void *data)
{
static bool location_driver_active = false;
static bool location_driver_data_own = false;
switch (state)
{
case RARCH_LOCATION_CTL_DESTROY:
location_driver_active = false;
location_driver_data_own = false;
location_driver = NULL;
break;
case RARCH_LOCATION_CTL_DEINIT:
uninit_location();
break;
case RARCH_LOCATION_CTL_SET_OWN_DRIVER:
location_driver_data_own = true;
break;
case RARCH_LOCATION_CTL_UNSET_OWN_DRIVER:
location_driver_data_own = false;
break;
case RARCH_LOCATION_CTL_OWNS_DRIVER:
return location_driver_data_own;
case RARCH_LOCATION_CTL_SET_ACTIVE:
location_driver_active = true;
break;

View File

@ -30,9 +30,6 @@ enum rarch_location_ctl_state
RARCH_LOCATION_CTL_NONE = 0,
RARCH_LOCATION_CTL_DESTROY,
RARCH_LOCATION_CTL_DEINIT,
RARCH_LOCATION_CTL_SET_OWN_DRIVER,
RARCH_LOCATION_CTL_UNSET_OWN_DRIVER,
RARCH_LOCATION_CTL_OWNS_DRIVER,
RARCH_LOCATION_CTL_SET_ACTIVE,
RARCH_LOCATION_CTL_UNSET_ACTIVE,
RARCH_LOCATION_CTL_IS_ACTIVE

View File

@ -575,12 +575,6 @@ void drivers_init(int flags)
audio_driver_unset_own_driver();
if (flags & DRIVER_INPUT_MASK)
input_driver_unset_own_driver();
if (flags & DRIVER_CAMERA_MASK)
camera_driver_ctl(RARCH_CAMERA_CTL_UNSET_OWN_DRIVER, NULL);
if (flags & DRIVER_LOCATION_MASK)
location_driver_ctl(RARCH_LOCATION_CTL_UNSET_OWN_DRIVER, NULL);
if (flags & DRIVER_WIFI_MASK)
wifi_driver_ctl(RARCH_WIFI_CTL_UNSET_OWN_DRIVER, NULL);
#ifdef HAVE_MENU
/* By default, we want the menu to persist through driver reinits. */
@ -590,6 +584,7 @@ void drivers_init(int flags)
if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK))
driver_adjust_system_rates();
/* Initialize video driver */
if (flags & DRIVER_VIDEO_MASK)
{
struct retro_hw_render_callback *hwr =
@ -606,19 +601,26 @@ void drivers_init(int flags)
runloop_frame_time_last = 0;
}
/* Initialize audio driver */
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_MASK) && camera_driver_ctl(RARCH_CAMERA_CTL_IS_ACTIVE, NULL))
camera_driver_ctl(RARCH_CAMERA_CTL_INIT, NULL);
if (flags & DRIVER_CAMERA_MASK)
{
/* Only initialize camera driver if we're ever going to use it. */
if (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_MASK) && location_driver_ctl(RARCH_LOCATION_CTL_IS_ACTIVE, NULL))
init_location();
if (flags & DRIVER_LOCATION_MASK)
{
/* Only initialize location driver if we're ever going to use it. */
if (location_driver_ctl(RARCH_LOCATION_CTL_IS_ACTIVE, NULL))
init_location();
}
core_info_init_current_core();
@ -633,6 +635,7 @@ void drivers_init(int flags)
if (flags & DRIVER_VIDEO_MASK)
{
/* Initialize menu driver */
if (flags & DRIVER_MENU_MASK)
menu_driver_init(video_is_threaded);
}
@ -649,9 +652,11 @@ void drivers_init(int flags)
driver_set_nonblock_state();
}
/* Initialize LED driver */
if (flags & DRIVER_LED_MASK)
led_driver_init();
/* Initialize MIDI driver */
if (flags & DRIVER_MIDI_MASK)
midi_driver_init();
}
@ -693,13 +698,13 @@ void driver_uninit(int flags)
}
#endif
if ((flags & DRIVER_LOCATION_MASK) && !location_driver_ctl(RARCH_LOCATION_CTL_OWNS_DRIVER, NULL))
if ((flags & DRIVER_LOCATION_MASK))
location_driver_ctl(RARCH_LOCATION_CTL_DEINIT, NULL);
if ((flags & DRIVER_CAMERA_MASK) && !camera_driver_ctl(RARCH_CAMERA_CTL_OWNS_DRIVER, NULL))
if ((flags & DRIVER_CAMERA_MASK))
camera_driver_ctl(RARCH_CAMERA_CTL_DEINIT, NULL);
if ((flags & DRIVER_WIFI_MASK) && !wifi_driver_ctl(RARCH_WIFI_CTL_OWNS_DRIVER, NULL))
if ((flags & DRIVER_WIFI_MASK))
wifi_driver_ctl(RARCH_WIFI_CTL_DEINIT, NULL);
if (flags & DRIVER_LED)

View File

@ -32,7 +32,6 @@
static const wifi_driver_t *wifi_driver = NULL;
static void *wifi_data = NULL;
static bool wifi_driver_active = false;
static bool wifi_driver_data_own = false;
static const wifi_driver_t *wifi_drivers[] = {
#ifdef HAVE_LAKKA
@ -124,18 +123,9 @@ bool wifi_driver_ctl(enum rarch_wifi_ctl_state state, void *data)
{
case RARCH_WIFI_CTL_DESTROY:
wifi_driver_active = false;
wifi_driver_data_own = false;
wifi_driver = NULL;
wifi_data = NULL;
break;
case RARCH_WIFI_CTL_SET_OWN_DRIVER:
wifi_driver_data_own = true;
break;
case RARCH_WIFI_CTL_UNSET_OWN_DRIVER:
wifi_driver_data_own = false;
break;
case RARCH_WIFI_CTL_OWNS_DRIVER:
return wifi_driver_data_own;
case RARCH_WIFI_CTL_SET_ACTIVE:
wifi_driver_active = true;
break;

View File

@ -31,9 +31,6 @@ enum rarch_wifi_ctl_state
RARCH_WIFI_CTL_NONE = 0,
RARCH_WIFI_CTL_DESTROY,
RARCH_WIFI_CTL_DEINIT,
RARCH_WIFI_CTL_SET_OWN_DRIVER,
RARCH_WIFI_CTL_UNSET_OWN_DRIVER,
RARCH_WIFI_CTL_OWNS_DRIVER,
RARCH_WIFI_CTL_SET_ACTIVE,
RARCH_WIFI_CTL_UNSET_ACTIVE,
RARCH_WIFI_CTL_IS_ACTIVE,