From 8b14941a9417662422ec3f8bf05a84040056a367 Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Mon, 1 Aug 2016 17:51:44 +0200 Subject: [PATCH] Refactor out resolve_current_parameters. --- gfx/video_shader_parse.c | 70 ++++++++++++++++++++++++---------------- gfx/video_shader_parse.h | 12 +++++++ 2 files changed, 55 insertions(+), 27 deletions(-) diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 398583694d..91d7fc6ad8 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -391,6 +391,47 @@ static struct video_shader_parameter *video_shader_parse_find_parameter( return NULL; } +/** + * video_shader_set_current_parameters: + * @conf : Preset file to read from. + * @shader : Shader passes handle. + * + * Reads the current value for all parameters from config file. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool video_shader_resolve_current_parameters(config_file_t *conf, + struct video_shader *shader) +{ + if (!conf) + return false; + + /* Read in parameters which override the defaults. */ + char parameters[4096] = {0}; + const char *id = NULL; + char *save = NULL; + + if (!config_get_array(conf, "parameters", + parameters, sizeof(parameters))) + return true; + + for (id = strtok_r(parameters, ";", &save); id; + id = strtok_r(NULL, ";", &save)) + { + struct video_shader_parameter *parameter = (struct video_shader_parameter*) + video_shader_parse_find_parameter(shader->parameters, shader->num_parameters, id); + + if (!parameter) + { + RARCH_WARN("[CGP/GLSLP]: Parameter %s is set in the preset, but no shader uses this parameter, ignoring.\n", id); + continue; + } + + if (!config_get_float(conf, id, ¶meter->current)) + RARCH_WARN("[CGP/GLSLP]: Parameter %s is not set in preset.\n", id); + } +} + /** * video_shader_resolve_parameters: * @conf : Preset file to read from. @@ -447,33 +488,8 @@ bool video_shader_resolve_parameters(config_file_t *conf, filestream_close(file); } - if (conf) - { - /* Read in parameters which override the defaults. */ - char parameters[4096] = {0}; - const char *id = NULL; - char *save = NULL; - - if (!config_get_array(conf, "parameters", - parameters, sizeof(parameters))) - return true; - - for (id = strtok_r(parameters, ";", &save); id; - id = strtok_r(NULL, ";", &save)) - { - struct video_shader_parameter *parameter = (struct video_shader_parameter*) - video_shader_parse_find_parameter(shader->parameters, shader->num_parameters, id); - - if (!parameter) - { - RARCH_WARN("[CGP/GLSLP]: Parameter %s is set in the preset, but no shader uses this parameter, ignoring.\n", id); - continue; - } - - if (!config_get_float(conf, id, ¶meter->current)) - RARCH_WARN("[CGP/GLSLP]: Parameter %s is not set in preset.\n", id); - } - } + if (conf && !video_shader_resolve_current_parameters(conf, shader)) + return false; return true; } diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index 23b78d7731..116a1d415c 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -192,6 +192,18 @@ void video_shader_write_conf_cgp(config_file_t *conf, void video_shader_resolve_relative(struct video_shader *shader, const char *ref_path); +/** + * video_shader_resolve_parameters: + * @conf : Preset file to read from. + * @shader : Shader passes handle. + * + * Reads the current value for all parameters from config file. + * + * Returns: true (1) if successful, otherwise false (0). + **/ +bool video_shader_resolve_current_parameters(config_file_t *conf, + struct video_shader *shader); + /** * video_shader_resolve_parameters: * @conf : Preset file to read from.