Refactor out resolve_current_parameters.

This commit is contained in:
Hans-Kristian Arntzen 2016-08-01 17:51:44 +02:00
parent a50c204d5e
commit 8b14941a94
2 changed files with 55 additions and 27 deletions

View File

@ -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, &parameter->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, &parameter->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;
}

View File

@ -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.