mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-22 02:30:56 +00:00
Refactor find_driver_index
This commit is contained in:
parent
623c02405d
commit
7ce5ebb927
75
driver.c
75
driver.c
@ -243,56 +243,46 @@ static const menu_ctx_driver_t *menu_ctx_drivers[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
static const char *find_driver_ident(unsigned cmd, int i)
|
||||
static const void *find_driver_nonempty(unsigned cmd, int i,
|
||||
char *str, size_t sizeof_str)
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case RARCH_DRIVER_LOCATION:
|
||||
return location_drivers[i]->ident;
|
||||
case RARCH_DRIVER_CAMERA:
|
||||
return camera_drivers[i]->ident;
|
||||
case RARCH_DRIVER_OSK:
|
||||
return osk_drivers[i]->ident;
|
||||
#ifdef HAVE_MENU
|
||||
case RARCH_DRIVER_MENU:
|
||||
return menu_ctx_drivers[i]->ident;
|
||||
#endif
|
||||
case RARCH_DRIVER_INPUT:
|
||||
return input_drivers[i]->ident;
|
||||
case RARCH_DRIVER_VIDEO:
|
||||
return video_drivers[i]->ident;
|
||||
case RARCH_DRIVER_AUDIO:
|
||||
return audio_drivers[i]->ident;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
const void *driver = NULL;
|
||||
|
||||
static const void *find_driver_nonempty(unsigned cmd, int i)
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case RARCH_DRIVER_LOCATION:
|
||||
return location_drivers[i];
|
||||
driver = location_drivers[i];
|
||||
strlcpy(str, location_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
case RARCH_DRIVER_CAMERA:
|
||||
return camera_drivers[i];
|
||||
driver = camera_drivers[i];
|
||||
strlcpy(str, camera_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
case RARCH_DRIVER_OSK:
|
||||
return osk_drivers[i];
|
||||
driver = osk_drivers[i];
|
||||
strlcpy(str, osk_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
#ifdef HAVE_MENU
|
||||
case RARCH_DRIVER_MENU:
|
||||
return menu_ctx_drivers[i];
|
||||
driver = menu_ctx_drivers[i];
|
||||
strlcpy(str, menu_ctx_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
#endif
|
||||
case RARCH_DRIVER_INPUT:
|
||||
return input_drivers[i];
|
||||
driver = input_drivers[i];
|
||||
strlcpy(str, input_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
case RARCH_DRIVER_VIDEO:
|
||||
return video_drivers[i];
|
||||
driver = video_drivers[i];
|
||||
strlcpy(str, video_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
case RARCH_DRIVER_AUDIO:
|
||||
return audio_drivers[i];
|
||||
default:
|
||||
break;
|
||||
driver = audio_drivers[i];
|
||||
strlcpy(str, audio_drivers[i]->ident, sizeof_str);
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
return driver;
|
||||
}
|
||||
|
||||
static int find_driver_index(unsigned cmd, const char *driver)
|
||||
@ -304,9 +294,16 @@ static int find_driver_index(unsigned cmd, const char *driver)
|
||||
case RARCH_DRIVER_NONE:
|
||||
break;
|
||||
default:
|
||||
for (i = 0; find_driver_nonempty(cmd, i) != NULL; i++)
|
||||
if (!strcasecmp(driver, find_driver_ident(cmd, i)))
|
||||
return i;
|
||||
{
|
||||
char str[PATH_MAX];
|
||||
for (i = 0; find_driver_nonempty(cmd, i, str, sizeof(str)) != NULL; i++)
|
||||
{
|
||||
if (str[0] == '\0')
|
||||
break;
|
||||
if (!strcasecmp(driver, str))
|
||||
return i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user