diff --git a/input/input_driver.c b/input/input_driver.c index 03dd0d6513..3e7dfca311 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -16,9 +16,8 @@ #include -#include - #include "../general.h" +#include "../string_list_special.h" static const input_driver_t *input_drivers[] = { #ifdef __CELLOS_LV2__ @@ -109,39 +108,7 @@ const char *input_driver_find_ident(int idx) **/ const char* config_get_input_driver_options(void) { - union string_list_elem_attr attr; - unsigned i; - char *options = NULL; - int options_len = 0; - struct string_list *options_l = string_list_new(); - - attr.i = 0; - - if (!options_l) - return NULL; - - for (i = 0; input_driver_find_handle(i); i++) - { - const char *opt = input_driver_find_ident(i); - options_len += strlen(opt) + 1; - string_list_append(options_l, opt, attr); - } - - options = (char*)calloc(options_len, sizeof(char)); - - if (!options) - { - string_list_free(options_l); - options_l = NULL; - return NULL; - } - - string_list_join_concat(options, options_len, options_l, "|"); - - string_list_free(options_l); - options_l = NULL; - - return options; + return string_list_special_new(STRING_LIST_INPUT_DRIVERS); } void find_input_driver(void) diff --git a/string_list_special.c b/string_list_special.c index 393f920873..e874a7248a 100644 --- a/string_list_special.c +++ b/string_list_special.c @@ -26,6 +26,8 @@ #include "camera/camera_driver.h" #endif +#include "gfx/video_driver.h" +#include "input/input_driver.h" #include "audio/audio_driver.h" const char *string_list_special_new(enum string_list_type type) @@ -83,6 +85,15 @@ const char *string_list_special_new(enum string_list_type type) string_list_append(s, opt, attr); } break; + case STRING_LIST_INPUT_DRIVERS: + for (i = 0; input_driver_find_handle(i); i++) + { + const char *opt = input_driver_find_ident(i); + len += strlen(opt) + 1; + + string_list_append(s, opt, attr); + } + break; case STRING_LIST_NONE: default: goto end; diff --git a/string_list_special.h b/string_list_special.h index 2b1e099501..601e2c1f2d 100644 --- a/string_list_special.h +++ b/string_list_special.h @@ -22,7 +22,8 @@ enum string_list_type STRING_LIST_MENU_DRIVERS, STRING_LIST_CAMERA_DRIVERS, STRING_LIST_AUDIO_DRIVERS, - STRING_LIST_VIDEO_DRIVERS + STRING_LIST_VIDEO_DRIVERS, + STRING_LIST_INPUT_DRIVERS }; const char *string_list_special_new(enum string_list_type type);