diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 680bebd4a2..139f8316f9 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -370,13 +370,14 @@ static void menu_action_setting_disp_set_label_shader_default_filter( strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NEAREST), len); } -static void menu_action_setting_disp_set_label_shader_parameter( +static void menu_action_setting_disp_set_label_shader_parameter_internal( file_list_t* list, unsigned *w, unsigned type, unsigned i, const char *label, char *s, size_t len, const char *path, - char *s2, size_t len2) + char *s2, size_t len2, + unsigned offset) { video_shader_ctx_t shader_info; const struct video_shader_parameter *param = NULL; @@ -390,8 +391,7 @@ static void menu_action_setting_disp_set_label_shader_parameter( if (!shader_info.data) return; - param = &shader_info.data->parameters[type - - MENU_SETTINGS_SHADER_PARAMETER_0]; + param = &shader_info.data->parameters[type - offset]; if (!param) return; @@ -400,6 +400,18 @@ static void menu_action_setting_disp_set_label_shader_parameter( param->current, param->minimum, param->maximum); } +static void menu_action_setting_disp_set_label_shader_parameter( + file_list_t* list, + unsigned *w, unsigned type, unsigned i, + const char *label, + char *s, size_t len, + const char *path, + char *s2, size_t len2) +{ + menu_action_setting_disp_set_label_shader_parameter_internal(list, w, type, i, + label, s, len, path, s2, len2, MENU_SETTINGS_SHADER_PARAMETER_0); +} + static void menu_action_setting_disp_set_label_shader_preset_parameter( file_list_t* list, unsigned *w, unsigned type, unsigned i, @@ -408,18 +420,8 @@ static void menu_action_setting_disp_set_label_shader_preset_parameter( const char *path, char *s2, size_t len2) { - struct video_shader *shader = menu_shader_get(); - struct video_shader_parameter *param = shader ? - &shader->parameters[type - MENU_SETTINGS_SHADER_PRESET_PARAMETER_0] - : NULL; - - *s = '\0'; - *w = 19; - strlcpy(s2, path, len2); - - if (param) - snprintf(s, len, "%.2f [%.2f %.2f]", - param->current, param->minimum, param->maximum); + menu_action_setting_disp_set_label_shader_parameter_internal(list, w, type, i, + label, s, len, path, s2, len2, MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); } static void menu_action_setting_disp_set_label_shader_scale_pass( diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index a160a4d494..16edf346ae 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -64,7 +64,8 @@ static int generic_shader_action_parameter_left( return 0; } -static int shader_action_parameter_left(unsigned type, const char *label, bool wraparound) +static int shader_action_parameter_left_internal(unsigned type, const char *label, bool wraparound, + unsigned offset) { video_shader_ctx_t shader_info; struct video_shader *shader = menu_shader_get(); @@ -75,9 +76,8 @@ static int shader_action_parameter_left(unsigned type, const char *label, bool w video_shader_driver_get_current_shader(&shader_info); - param_prev = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; - param_menu = shader ? &shader->parameters[type - - MENU_SETTINGS_SHADER_PARAMETER_0] : NULL; + param_prev = &shader_info.data->parameters[type - offset]; + param_menu = shader ? &shader->parameters [type - offset] : NULL; if (!param_prev || !param_menu) return menu_cbs_exit(); @@ -89,6 +89,16 @@ static int shader_action_parameter_left(unsigned type, const char *label, bool w return ret; } + +static int shader_action_parameter_left(unsigned type, const char *label, bool wraparound) +{ + return shader_action_parameter_left_internal(type, label, wraparound, MENU_SETTINGS_SHADER_PARAMETER_0); +} + +static int shader_action_preset_parameter_left(unsigned type, const char *label, bool wraparound) +{ + return shader_action_parameter_left_internal(type, label, wraparound, MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); +} #endif #ifdef HAVE_AUDIOMIXER @@ -920,7 +930,7 @@ static int menu_cbs_init_bind_left_compare_type(menu_file_list_cbs_t *cbs, else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) { - BIND_ACTION_LEFT(cbs, shader_action_parameter_left); + BIND_ACTION_LEFT(cbs, shader_action_preset_parameter_left); } #endif else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index d04f931291..d8d80ad49c 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -64,7 +64,8 @@ static int generic_shader_action_parameter_right(struct video_shader_parameter * return 0; } -int shader_action_parameter_right(unsigned type, const char *label, bool wraparound) +static int generic_shader_action_parameter_right_internal(unsigned type, const char *label, + bool wraparound, unsigned offset) { video_shader_ctx_t shader_info; struct video_shader *shader = menu_shader_get(); @@ -75,9 +76,8 @@ int shader_action_parameter_right(unsigned type, const char *label, bool wraparo video_shader_driver_get_current_shader(&shader_info); - param_prev = &shader_info.data->parameters[type - MENU_SETTINGS_SHADER_PARAMETER_0]; - param_menu = shader ? &shader->parameters[type - - MENU_SETTINGS_SHADER_PARAMETER_0] : NULL; + param_prev = &shader_info.data->parameters[type - offset]; + param_menu = shader ? &shader->parameters [type - offset] : NULL; if (!param_prev || !param_menu) return menu_cbs_exit(); @@ -89,6 +89,16 @@ int shader_action_parameter_right(unsigned type, const char *label, bool wraparo return ret; } + +int shader_action_parameter_right(unsigned type, const char *label, bool wraparound) +{ + return generic_shader_action_parameter_right_internal(type, label, wraparound, MENU_SETTINGS_SHADER_PARAMETER_0); +} + +int shader_action_preset_parameter_right(unsigned type, const char *label, bool wraparound) +{ + return generic_shader_action_parameter_right_internal(type, label, wraparound, MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); +} #endif int generic_action_cheat_toggle(size_t idx, unsigned type, const char *label, @@ -805,7 +815,7 @@ static int menu_cbs_init_bind_right_compare_type(menu_file_list_cbs_t *cbs, else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) { - BIND_ACTION_RIGHT(cbs, shader_action_parameter_right); + BIND_ACTION_RIGHT(cbs, shader_action_preset_parameter_right); } #endif else if (type >= MENU_SETTINGS_INPUT_DESC_BEGIN diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index 585a3ec53b..e63ea9de8f 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -132,7 +132,7 @@ static int shader_action_parameter_select(const char *path, const char *label, u static int shader_action_parameter_preset_select(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - return shader_action_parameter_right(type, label, true); + return shader_action_preset_parameter_right(type, label, true); } #endif diff --git a/menu/cbs/menu_cbs_start.c b/menu/cbs/menu_cbs_start.c index 9de67eb91b..d3c123d908 100644 --- a/menu/cbs/menu_cbs_start.c +++ b/menu/cbs/menu_cbs_start.c @@ -166,13 +166,12 @@ static int action_start_input_desc( } #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) -static int action_start_shader_action_parameter( - const char *path, const char *label, - unsigned type, size_t idx, size_t entry_idx) +static int action_start_shader_action_parameter_generic( + unsigned type, unsigned offset) { video_shader_ctx_t shader_info; struct video_shader_parameter *param = NULL; - unsigned parameter = type - MENU_SETTINGS_SHADER_PARAMETER_0; + unsigned parameter = type - offset; video_shader_driver_get_current_shader(&shader_info); @@ -187,6 +186,20 @@ static int action_start_shader_action_parameter( return menu_shader_manager_clear_parameter(menu_shader_get(), parameter); } +static int action_start_shader_action_parameter( + const char *path, const char *label, + unsigned type, size_t idx, size_t entry_idx) +{ + return action_start_shader_action_parameter_generic(type, MENU_SETTINGS_SHADER_PARAMETER_0); +} + +static int action_start_shader_action_preset_parameter( + const char *path, const char *label, + unsigned type, size_t idx, size_t entry_idx) +{ + return action_start_shader_action_parameter_generic(type, MENU_SETTINGS_SHADER_PRESET_PARAMETER_0); +} + static int action_start_shader_pass( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) @@ -510,7 +523,7 @@ static int menu_cbs_init_bind_start_compare_type(menu_file_list_cbs_t *cbs, else if (type >= MENU_SETTINGS_SHADER_PRESET_PARAMETER_0 && type <= MENU_SETTINGS_SHADER_PRESET_PARAMETER_LAST) { - BIND_ACTION_START(cbs, action_start_shader_action_parameter); + BIND_ACTION_START(cbs, action_start_shader_action_preset_parameter); } else #endif diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index f95108eede..9ea803f4e0 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -196,6 +196,7 @@ int action_cancel_pop_default(const char *path, int action_refresh_default(file_list_t *list, file_list_t *menu_list); int shader_action_parameter_right(unsigned type, const char *label, bool wraparound); +int shader_action_preset_parameter_right(unsigned type, const char *label, bool wraparound); int action_cancel_pop_with_new_pos(const char *path, const char *label, unsigned type, size_t idx, size_t new_idx);