From aff1bd03de078e32876b678022654e5ed0708010 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 26 Oct 2015 08:55:59 +0100 Subject: [PATCH] Code deduplication --- gfx/video_driver.c | 37 ++----------------------------------- string_list_special.c | 11 ++++++++++- string_list_special.h | 3 ++- 3 files changed, 14 insertions(+), 37 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 079bffe9b3..7b4f23299c 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -16,13 +16,12 @@ #include -#include - #include "video_thread_wrapper.h" #include "video_pixel_converter.h" #include "video_monitor.h" #include "../general.h" #include "../performance.h" +#include "../string_list_special.h" #ifndef MEASURE_FRAME_TIME_SAMPLES_COUNT #define MEASURE_FRAME_TIME_SAMPLES_COUNT (2 * 1024) @@ -152,39 +151,7 @@ const char *video_driver_find_ident(int idx) **/ const char* config_get_video_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; video_driver_find_handle(i); i++) - { - const char *opt = video_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_VIDEO_DRIVERS); } void find_video_driver(void) diff --git a/string_list_special.c b/string_list_special.c index c544e19911..393f920873 100644 --- a/string_list_special.c +++ b/string_list_special.c @@ -68,7 +68,16 @@ const char *string_list_special_new(enum string_list_type type) case STRING_LIST_AUDIO_DRIVERS: for (i = 0; audio_driver_find_handle(i); i++) { - const char *opt = audio_driver_find_ident(i); + const char *opt = audio_driver_find_ident(i); + len += strlen(opt) + 1; + + string_list_append(s, opt, attr); + } + break; + case STRING_LIST_VIDEO_DRIVERS: + for (i = 0; video_driver_find_handle(i); i++) + { + const char *opt = video_driver_find_ident(i); len += strlen(opt) + 1; string_list_append(s, opt, attr); diff --git a/string_list_special.h b/string_list_special.h index 8b9b2f3eb7..2b1e099501 100644 --- a/string_list_special.h +++ b/string_list_special.h @@ -21,7 +21,8 @@ enum string_list_type STRING_LIST_NONE = 0, STRING_LIST_MENU_DRIVERS, STRING_LIST_CAMERA_DRIVERS, - STRING_LIST_AUDIO_DRIVERS + STRING_LIST_AUDIO_DRIVERS, + STRING_LIST_VIDEO_DRIVERS }; const char *string_list_special_new(enum string_list_type type);