Add osk_driver_find_handle/osk_driver_find_ident

This commit is contained in:
twinaphex 2015-01-12 17:00:35 +01:00
parent 5aca1d385b
commit 1194111951

View File

@ -391,6 +391,36 @@ static const input_osk_driver_t *osk_drivers[] = {
NULL, NULL,
}; };
/**
* osk_driver_find_handle:
* @index : index of driver to get handle to.
*
* Returns: handle to OSK driver at index. Can be NULL
* if nothing found.
**/
static const void *osk_driver_find_handle(int index)
{
const void *drv = osk_drivers[index];
if (!drv)
return NULL;
return drv;
}
/**
* osk_driver_find_ident:
* @index : index of driver to get handle to.
*
* Returns: Human-readable identifier of OSK driver at index. Can be NULL
* if nothing found.
**/
static const char *osk_driver_find_ident(int index)
{
const input_osk_driver_t *drv = osk_drivers[index];
if (!drv)
return NULL;
return drv->ident;
}
/** /**
* config_get_osk_driver_options: * config_get_osk_driver_options:
* *
@ -410,9 +440,9 @@ const char* config_get_osk_driver_options(void)
attr.i = 0; attr.i = 0;
for (option_k = 0; osk_drivers[option_k]; option_k++) for (option_k = 0; osk_driver_find_handle(option_k); option_k++)
{ {
const char *opt = osk_drivers[option_k]->ident; const char *opt = osk_driver_find_ident(option_k);
options_len += strlen(opt) + 1; options_len += strlen(opt) + 1;
string_list_append(options_l, opt, attr); string_list_append(options_l, opt, attr);
} }
@ -625,9 +655,9 @@ static const void *find_driver_nonempty(const char *label, int i,
} }
else if (!strcmp(label, "osk_driver")) else if (!strcmp(label, "osk_driver"))
{ {
drv = osk_drivers[i]; drv = osk_driver_find_handle(i);
if (drv) if (drv)
strlcpy(str, osk_drivers[i]->ident, sizeof_str); strlcpy(str, osk_driver_find_ident(i), sizeof_str);
} }
#ifdef HAVE_MENU #ifdef HAVE_MENU
else if (!strcmp(label, "menu_driver")) else if (!strcmp(label, "menu_driver"))
@ -740,19 +770,19 @@ static void find_osk_driver(void)
{ {
int i = find_driver_index("osk_driver", g_settings.osk.driver); int i = find_driver_index("osk_driver", g_settings.osk.driver);
if (i >= 0) if (i >= 0)
driver.osk = osk_drivers[i]; driver.osk = osk_driver_find_handle(i);
else else
{ {
unsigned d; unsigned d;
RARCH_ERR("Couldn't find any OSK driver named \"%s\"\n", RARCH_ERR("Couldn't find any OSK driver named \"%s\"\n",
g_settings.osk.driver); g_settings.osk.driver);
RARCH_LOG_OUTPUT("Available OSK drivers are:\n"); RARCH_LOG_OUTPUT("Available OSK drivers are:\n");
for (d = 0; osk_drivers[d]; d++) for (d = 0; osk_driver_find_handle(d); d++)
RARCH_LOG_OUTPUT("\t%s\n", osk_drivers[d]->ident); RARCH_LOG_OUTPUT("\t%s\n", osk_driver_find_ident(d));
RARCH_WARN("Going to default to first OSK driver...\n"); RARCH_WARN("Going to default to first OSK driver...\n");
driver.osk = osk_drivers[0]; driver.osk = osk_driver_find_handle(0);
if (!driver.osk) if (!driver.osk)
rarch_fail(1, "find_osk_driver()"); rarch_fail(1, "find_osk_driver()");