diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index f3ecb633d5..6c7b67e807 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -353,8 +353,8 @@ static void menu_action_setting_disp_set_label_shader_preset_parameter( char *s2, size_t len2) { #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL) - const struct video_shader_parameter *param = NULL; - struct video_shader *shader = NULL; + const struct video_shader_parameter *param = menu_shader_manager_get_parameters( + type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); #endif *s = '\0'; @@ -362,18 +362,9 @@ static void menu_action_setting_disp_set_label_shader_preset_parameter( strlcpy(s2, path, len2); #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_HLSL) - menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, - &shader); - if (!shader) - return; - - param = &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0]; - - if (!param) - return; - - snprintf(s, len, "%.2f [%.2f %.2f]", - param->current, param->minimum, param->maximum); + if (param) + snprintf(s, len, "%.2f [%.2f %.2f]", + param->current, param->minimum, param->maximum); #endif } diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index f3703d2099..842e9ecd8a 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -51,9 +51,6 @@ static int generic_shader_action_parameter_left( struct video_shader_parameter *param, unsigned type, const char *label, bool wraparound) { - if (!param) - return 0; - param->current -= param->step; param->current = MIN(MAX(param->minimum, param->current), param->maximum); @@ -70,6 +67,8 @@ static int shader_action_parameter_left(unsigned type, const char *label, param = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; + if (!param) + return 0; return generic_shader_action_parameter_left(param, type, label, wraparound); } @@ -78,15 +77,10 @@ static int shader_action_parameter_preset_left(unsigned type, const char *label, bool wraparound) { - struct video_shader_parameter *param = NULL; - struct video_shader *shader = NULL; - - menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, - &shader); - - param = shader ? - &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0] : - NULL; + struct video_shader_parameter *param = menu_shader_manager_get_parameters( + type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); + if (!param) + return 0; return generic_shader_action_parameter_left(param, type, label, wraparound); } diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index e2558daadb..936a9a26c3 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -51,9 +51,6 @@ static int generic_shader_action_parameter_right(struct video_shader_parameter *param, unsigned type, const char *label, bool wraparound) { - if (!param) - return menu_cbs_exit(); - param->current += param->step; param->current = MIN(MAX(param->minimum, param->current), param->maximum); @@ -70,21 +67,18 @@ int shader_action_parameter_right(unsigned type, const char *label, bool wraparo video_shader_driver_get_current_shader(&shader_info); param = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; + if (!param) + return menu_cbs_exit(); return generic_shader_action_parameter_right(param, type, label, wraparound); } int shader_action_parameter_preset_right(unsigned type, const char *label, bool wraparound) { - struct video_shader_parameter *param = NULL; - struct video_shader *shader = NULL; - - menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, - &shader); - - param = shader ? - &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0] : - NULL; + struct video_shader_parameter *param = menu_shader_manager_get_parameters( + type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); + if (!param) + return menu_cbs_exit(); return generic_shader_action_parameter_right(param, type, label, wraparound); } #endif diff --git a/menu/menu_shader.c b/menu/menu_shader.c index 65566a7461..77ace8ef9f 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -39,6 +39,19 @@ static char default_cgp[PATH_MAX_LENGTH]; static char default_slangp[PATH_MAX_LENGTH]; #endif +struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i) +{ + struct video_shader *shader = NULL; + + menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, + &shader); + + if (!shader) + return NULL; + + return &shader->parameters[i]; +} + struct video_shader_pass *menu_shader_manager_get_pass(unsigned i) { struct video_shader *shader = NULL; @@ -409,16 +422,11 @@ int menu_shader_manager_clear_num_passes(void) int menu_shader_manager_clear_parameter(unsigned i) { #ifdef HAVE_SHADER_MANAGER - struct video_shader *shader = NULL; - struct video_shader_parameter *param = NULL; + struct video_shader_parameter *param = menu_shader_manager_get_parameters(i); - menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, - &shader); - - if (!shader) + if (!param) return 0; - param = &shader->parameters[i]; param->current = param->initial; param->current = MIN(MAX(param->minimum, param->current), param->maximum); #endif diff --git a/menu/menu_shader.h b/menu/menu_shader.h index 3e28b902a1..37a1f2906a 100644 --- a/menu/menu_shader.h +++ b/menu/menu_shader.h @@ -23,6 +23,8 @@ RETRO_BEGIN_DECLS +struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i); + struct video_shader_pass *menu_shader_manager_get_pass(unsigned i); unsigned menu_shader_manager_get_amount_passes(void);