Refactor find_prev_* / find_next_* functions

This commit is contained in:
twinaphex 2014-08-26 22:26:23 +02:00
parent 5668e1b89c
commit db396976ee

193
driver.c
View File

@ -252,33 +252,40 @@ static const void *find_driver_nonempty(unsigned cmd, int i,
{
case RARCH_DRIVER_LOCATION:
driver = location_drivers[i];
strlcpy(str, location_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, location_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_CAMERA:
driver = camera_drivers[i];
strlcpy(str, camera_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, camera_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_OSK:
driver = osk_drivers[i];
strlcpy(str, osk_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, osk_drivers[i]->ident, sizeof_str);
break;
#ifdef HAVE_MENU
case RARCH_DRIVER_MENU:
driver = menu_ctx_drivers[i];
strlcpy(str, menu_ctx_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, menu_ctx_drivers[i]->ident, sizeof_str);
break;
#endif
case RARCH_DRIVER_INPUT:
driver = input_drivers[i];
strlcpy(str, input_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, input_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_VIDEO:
driver = video_drivers[i];
strlcpy(str, video_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, video_drivers[i]->ident, sizeof_str);
break;
case RARCH_DRIVER_AUDIO:
driver = audio_drivers[i];
strlcpy(str, audio_drivers[i]->ident, sizeof_str);
if (driver)
strlcpy(str, audio_drivers[i]->ident, sizeof_str);
break;
}
@ -310,6 +317,24 @@ static int find_driver_index(unsigned cmd, const char *driver)
return -1;
}
static void find_prev_driver(unsigned cmd, char *str, size_t sizeof_str)
{
int i = find_driver_index(cmd, str);
if (i > 0)
find_driver_nonempty(cmd, i - 1, str, sizeof_str);
else
RARCH_WARN("Couldn't find any previous driver (current one: \"%s\").\n", str);
}
static void find_next_driver(unsigned cmd, char *str, size_t sizeof_str)
{
int i = find_driver_index(cmd, str);
if (i >= 0)
find_driver_nonempty(cmd, i + 1, str, sizeof_str);
else
RARCH_WARN("Couldn't find any next driver (current one: \"%s\").\n", str);
}
static void find_osk_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_OSK, g_settings.osk.driver);
@ -332,22 +357,65 @@ static void find_osk_driver(void)
}
}
void find_prev_osk_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_OSK, g_settings.osk.driver);
if (i > 0)
strlcpy(g_settings.osk.driver, osk_drivers[i - 1]->ident, sizeof(g_settings.osk.driver));
else
RARCH_WARN("Couldn't find any previous osk driver (current one: \"%s\").\n", g_settings.osk.driver);
find_prev_driver(RARCH_DRIVER_OSK, g_settings.osk.driver, sizeof(g_settings.osk.driver));
}
void find_next_osk_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_OSK, g_settings.osk.driver);
if (i >= 0 && osk_drivers[i + 1])
strlcpy(g_settings.osk.driver, osk_drivers[i + 1]->ident, sizeof(g_settings.osk.driver));
else
RARCH_WARN("Couldn't find any next osk driver (current one: \"%s\").\n", g_settings.osk.driver);
find_next_driver(RARCH_DRIVER_OSK, g_settings.osk.driver, sizeof(g_settings.osk.driver));
}
void find_prev_camera_driver(void)
{
find_prev_driver(RARCH_DRIVER_CAMERA, g_settings.camera.driver, sizeof(g_settings.camera.driver));
}
void find_next_camera_driver(void)
{
find_next_driver(RARCH_DRIVER_CAMERA, g_settings.camera.driver, sizeof(g_settings.camera.driver));
}
void find_prev_video_driver(void)
{
find_prev_driver(RARCH_DRIVER_VIDEO, g_settings.video.driver, sizeof(g_settings.video.driver));
}
void find_next_video_driver(void)
{
find_next_driver(RARCH_DRIVER_VIDEO, g_settings.video.driver, sizeof(g_settings.video.driver));
}
void find_prev_location_driver(void)
{
find_prev_driver(RARCH_DRIVER_LOCATION, g_settings.location.driver, sizeof(g_settings.location.driver));
}
void find_next_location_driver(void)
{
find_next_driver(RARCH_DRIVER_LOCATION, g_settings.location.driver, sizeof(g_settings.location.driver));
}
void find_prev_audio_driver(void)
{
find_prev_driver(RARCH_DRIVER_AUDIO, g_settings.audio.driver, sizeof(g_settings.audio.driver));
}
void find_next_audio_driver(void)
{
find_next_driver(RARCH_DRIVER_AUDIO, g_settings.audio.driver, sizeof(g_settings.audio.driver));
}
void find_prev_input_driver(void)
{
find_prev_driver(RARCH_DRIVER_INPUT, g_settings.input.driver, sizeof(g_settings.input.driver));
}
void find_next_input_driver(void)
{
find_next_driver(RARCH_DRIVER_INPUT, g_settings.input.driver, sizeof(g_settings.input.driver));
}
void init_osk(void)
@ -399,23 +467,6 @@ static void find_camera_driver(void)
}
}
void find_prev_camera_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_CAMERA, g_settings.camera.driver);
if (i > 0)
strlcpy(g_settings.camera.driver, camera_drivers[i - 1]->ident, sizeof(g_settings.camera.driver));
else
RARCH_WARN("Couldn't find any previous camera driver (current one: \"%s\").\n", g_settings.camera.driver);
}
void find_next_camera_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_CAMERA, g_settings.camera.driver);
if (i >= 0 && camera_drivers[i + 1])
strlcpy(g_settings.camera.driver, camera_drivers[i + 1]->ident, sizeof(g_settings.camera.driver));
else
RARCH_WARN("Couldn't find any next camera driver (current one: \"%s\").\n", g_settings.camera.driver);
}
bool driver_camera_start(void)
{
@ -439,11 +490,9 @@ void driver_camera_stop(void)
void driver_camera_poll(void)
{
if (driver.camera && driver.camera->poll && driver.camera_data)
{
driver.camera->poll(driver.camera_data,
g_extern.system.camera_callback.frame_raw_framebuffer,
g_extern.system.camera_callback.frame_opengl_texture);
}
}
void init_camera(void)
@ -507,23 +556,6 @@ static void find_location_driver(void)
}
}
void find_prev_location_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_LOCATION, g_settings.location.driver);
if (i > 0)
strlcpy(g_settings.location.driver, location_drivers[i - 1]->ident, sizeof(g_settings.location.driver));
else
RARCH_WARN("Couldn't find any previous location driver (current one: \"%s\").\n", g_settings.location.driver);
}
void find_next_location_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_LOCATION, g_settings.location.driver);
if (i >= 0 && location_drivers[i + 1])
strlcpy(g_settings.location.driver, location_drivers[i + 1]->ident, sizeof(g_settings.location.driver));
else
RARCH_WARN("Couldn't find any next location driver (current one: \"%s\").\n", g_settings.location.driver);
}
bool driver_location_start(void)
{
@ -597,8 +629,6 @@ void uninit_location(void)
}
#ifdef HAVE_MENU
void find_prev_menu_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_MENU, g_settings.menu.driver);
@ -667,23 +697,6 @@ static void find_audio_driver(void)
}
}
void find_prev_audio_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_AUDIO, g_settings.audio.driver);
if (i > 0)
strlcpy(g_settings.audio.driver, audio_drivers[i - 1]->ident, sizeof(g_settings.audio.driver));
else
RARCH_WARN("Couldn't find any previous audio driver (current one: \"%s\").\n", g_settings.audio.driver);
}
void find_next_audio_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_AUDIO, g_settings.audio.driver);
if (i >= 0 && audio_drivers[i + 1])
strlcpy(g_settings.audio.driver, audio_drivers[i + 1]->ident, sizeof(g_settings.audio.driver));
else
RARCH_WARN("Couldn't find any next audio driver (current one: \"%s\").\n", g_settings.audio.driver);
}
static void find_video_driver(void)
{
@ -715,25 +728,6 @@ static void find_video_driver(void)
}
}
void find_prev_video_driver(void)
{
// No need to enforce GL if HW render. This is done at driver initialize anyways.
int i = find_driver_index(RARCH_DRIVER_VIDEO, g_settings.video.driver);
if (i > 0)
strlcpy(g_settings.video.driver, video_drivers[i - 1]->ident, sizeof(g_settings.video.driver));
else
RARCH_WARN("Couldn't find any previous video driver (current one: \"%s\").\n", g_settings.video.driver);
}
void find_next_video_driver(void)
{
// No need to enforce GL if HW render. This is done at driver initialize anyways.
int i = find_driver_index(RARCH_DRIVER_VIDEO, g_settings.video.driver);
if (i >= 0 && video_drivers[i + 1])
strlcpy(g_settings.video.driver, video_drivers[i + 1]->ident, sizeof(g_settings.video.driver));
else
RARCH_WARN("Couldn't find any next video driver (current one: \"%s\").\n", g_settings.video.driver);
}
static void find_input_driver(void)
{
@ -756,23 +750,6 @@ static void find_input_driver(void)
}
}
void find_prev_input_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_INPUT, g_settings.input.driver);
if (i > 0)
strlcpy(g_settings.input.driver, input_drivers[i - 1]->ident, sizeof(g_settings.input.driver));
else
RARCH_ERR("Couldn't find any previous input driver (current one: \"%s\").\n", g_settings.input.driver);
}
void find_next_input_driver(void)
{
int i = find_driver_index(RARCH_DRIVER_INPUT, g_settings.input.driver);
if (i >= 0 && input_drivers[i + 1])
strlcpy(g_settings.input.driver, input_drivers[i + 1]->ident, sizeof(g_settings.input.driver));
else
RARCH_ERR("Couldn't find any next input driver (current one: \"%s\").\n", g_settings.input.driver);
}
void init_drivers_pre(void)
{