From b7a17442d98b167cb1853b53cae52c7fd84a3449 Mon Sep 17 00:00:00 2001 From: twinaphex <libretro@gmail.com> Date: Thu, 13 Feb 2020 02:04:35 +0100 Subject: [PATCH] (menu_shader.c) Remove configuration.h dependency --- menu/cbs/menu_cbs_ok.c | 19 ++++++++-- menu/menu_displaylist.c | 21 ++++++++--- menu/menu_shader.c | 52 +++++++++++++++++----------- menu/menu_shader.h | 28 +++++++++++---- retroarch.c | 5 ++- ui/drivers/qt/shaderparamsdialog.cpp | 37 ++++++++++++++++---- 6 files changed, 121 insertions(+), 41 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 454e1d696b..f5a9884800 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -2731,6 +2731,7 @@ static void menu_input_st_string_cb_save_preset(void *userdata, if (!string_is_empty(str)) { rarch_setting_t *setting = NULL; + settings_t *settings = config_get_ptr(); bool ret = false; const char *label = menu_input_dialog_get_label_buffer(); @@ -2744,7 +2745,10 @@ static void menu_input_st_string_cb_save_preset(void *userdata, } else if (!string_is_empty(label)) ret = menu_shader_manager_save_preset(menu_shader_get(), - str, true); + str, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config, + true); if (ret) runloop_msg_queue_push( @@ -2849,6 +2853,8 @@ static int generic_action_ok_shader_preset_remove(const char *path, unsigned action_type) { enum auto_shader_type preset_type; + settings_t *settings = config_get_ptr(); + switch (action_type) { case ACTION_OK_SHADER_PRESET_REMOVE_GLOBAL: @@ -2867,7 +2873,9 @@ static int generic_action_ok_shader_preset_remove(const char *path, return 0; } - if (menu_shader_manager_remove_auto_preset(preset_type)) + if (menu_shader_manager_remove_auto_preset(preset_type, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config)) { bool refresh = false; @@ -2892,6 +2900,8 @@ static int generic_action_ok_shader_preset_save(const char *path, unsigned action_type) { enum auto_shader_type preset_type; + settings_t *settings = config_get_ptr(); + switch (action_type) { case ACTION_OK_SHADER_PRESET_SAVE_GLOBAL: @@ -2910,7 +2920,10 @@ static int generic_action_ok_shader_preset_save(const char *path, return 0; } - if (menu_shader_manager_save_auto_preset(menu_shader_get(), preset_type, true)) + if (menu_shader_manager_save_auto_preset(menu_shader_get(), preset_type, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config, + true)) runloop_msg_queue_push( msg_hash_to_str(MSG_SHADER_PRESET_SAVED_SUCCESSFULLY), 1, 100, true, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 7e7caa0e5d..64b2d294e2 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4239,7 +4239,11 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct case DISPLAYLIST_SHADER_PRESET_REMOVE: { #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_GLOBAL)) + settings_t *settings = config_get_ptr(); + if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_GLOBAL, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )) if (menu_entries_append_enum(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_GLOBAL), msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_REMOVE_GLOBAL), @@ -4247,7 +4251,10 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_SETTING_ACTION, 0, 0)) count++; - if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_CORE)) + if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_CORE, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )) if (menu_entries_append_enum(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_CORE), msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_REMOVE_CORE), @@ -4255,7 +4262,10 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_SETTING_ACTION, 0, 0)) count++; - if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_PARENT)) + if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_PARENT, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )) if (menu_entries_append_enum(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_PARENT), msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_REMOVE_PARENT), @@ -4263,7 +4273,10 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct MENU_SETTING_ACTION, 0, 0)) count++; - if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_GAME)) + if (menu_shader_manager_auto_preset_exists(SHADER_PRESET_GAME, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )) if (menu_entries_append_enum(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_GAME), msg_hash_to_str(MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_REMOVE_GAME), diff --git a/menu/menu_shader.c b/menu/menu_shader.c index b40f1dde2b..9689cb8f89 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -29,7 +29,6 @@ #include "menu_driver.h" #include "menu_shader.h" #include "../file_path_special.h" -#include "../configuration.h" #include "../paths.h" #include "../retroarch.h" #include "../verbosity.h" @@ -468,14 +467,17 @@ static bool menu_shader_manager_operate_auto_preset( * Needs to be consistent with retroarch_load_shader_preset() * Auto-shaders will be saved as a reference if possible **/ -bool menu_shader_manager_save_auto_preset(const struct video_shader *shader, - enum auto_shader_type type, bool apply) +bool menu_shader_manager_save_auto_preset( + const struct video_shader *shader, + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config, + bool apply) { - settings_t *settings = config_get_ptr(); return menu_shader_manager_operate_auto_preset( AUTO_SHADER_OP_SAVE, shader, - settings->paths.directory_video_shader, - settings->paths.directory_menu_config, + dir_video_shader, + dir_menu_config, type, apply); } @@ -489,13 +491,15 @@ bool menu_shader_manager_save_auto_preset(const struct video_shader *shader, * Save a shader preset to disk. **/ bool menu_shader_manager_save_preset(const struct video_shader *shader, - const char *basename, bool apply) + const char *basename, + const char *dir_video_shader, + const char *dir_menu_config, + bool apply) { - settings_t *settings = config_get_ptr(); return menu_shader_manager_save_preset_internal( shader, basename, - settings->paths.directory_video_shader, - settings->paths.directory_menu_config, + dir_video_shader, + dir_menu_config, apply, false); } @@ -505,13 +509,15 @@ bool menu_shader_manager_save_preset(const struct video_shader *shader, * * Deletes an auto-shader. **/ -bool menu_shader_manager_remove_auto_preset(enum auto_shader_type type) +bool menu_shader_manager_remove_auto_preset( + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config) { - settings_t *settings = config_get_ptr(); return menu_shader_manager_operate_auto_preset( AUTO_SHADER_OP_REMOVE, NULL, - settings->paths.directory_video_shader, - settings->paths.directory_menu_config, + dir_video_shader, + dir_menu_config, type, false); } @@ -521,13 +527,15 @@ bool menu_shader_manager_remove_auto_preset(enum auto_shader_type type) * * Tests if an auto-shader of the given type exists. **/ -bool menu_shader_manager_auto_preset_exists(enum auto_shader_type type) +bool menu_shader_manager_auto_preset_exists( + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config) { - settings_t *settings = config_get_ptr(); return menu_shader_manager_operate_auto_preset( AUTO_SHADER_OP_EXISTS, NULL, - settings->paths.directory_video_shader, - settings->paths.directory_menu_config, + dir_video_shader, + dir_menu_config, type, false); } @@ -668,7 +676,10 @@ enum rarch_shader_type menu_shader_manager_get_type( * * Apply shader state changes. **/ -void menu_shader_manager_apply_changes(struct video_shader *shader) +void menu_shader_manager_apply_changes( + struct video_shader *shader, + const char *dir_video_shader, + const char *dir_menu_config) { enum rarch_shader_type type = RARCH_SHADER_NONE; @@ -679,7 +690,8 @@ void menu_shader_manager_apply_changes(struct video_shader *shader) if (shader->passes && type != RARCH_SHADER_NONE) { - menu_shader_manager_save_preset(shader, NULL, true); + menu_shader_manager_save_preset(shader, NULL, + dir_video_shader, dir_menu_config, true); return; } diff --git a/menu/menu_shader.h b/menu/menu_shader.h index 615433a351..6a80892fc7 100644 --- a/menu/menu_shader.h +++ b/menu/menu_shader.h @@ -70,8 +70,12 @@ bool menu_shader_manager_set_preset( * Needs to be consistent with retroarch_load_shader_preset() * Auto-shaders will be saved as a reference if possible **/ -bool menu_shader_manager_save_auto_preset(const struct video_shader *shader, - enum auto_shader_type type, bool apply); +bool menu_shader_manager_save_auto_preset( + const struct video_shader *shader, + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config, + bool apply); /** * menu_shader_manager_save_preset: @@ -82,7 +86,10 @@ bool menu_shader_manager_save_auto_preset(const struct video_shader *shader, * Save a shader preset to disk. **/ bool menu_shader_manager_save_preset(const struct video_shader *shader, - const char *basename, bool apply); + const char *basename, + const char *dir_video_shader, + const char *dir_menu_config, + bool apply); /** * menu_shader_manager_get_type: @@ -100,7 +107,10 @@ enum rarch_shader_type menu_shader_manager_get_type( * * Apply shader state changes. **/ -void menu_shader_manager_apply_changes(struct video_shader *shader); +void menu_shader_manager_apply_changes( + struct video_shader *shader, + const char *dir_video_shader, + const char *dir_menu_config); int menu_shader_manager_clear_num_passes(struct video_shader *shader); @@ -122,9 +132,15 @@ void menu_shader_manager_clear_pass_path(struct video_shader *shader, * * Deletes an auto-shader. **/ -bool menu_shader_manager_remove_auto_preset(enum auto_shader_type type); +bool menu_shader_manager_remove_auto_preset( + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config); -bool menu_shader_manager_auto_preset_exists(enum auto_shader_type type); +bool menu_shader_manager_auto_preset_exists( + enum auto_shader_type type, + const char *dir_video_shader, + const char *dir_menu_config); void menu_shader_set_modified(bool modified); diff --git a/retroarch.c b/retroarch.c index a9188c64af..c984c0d09a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -7255,7 +7255,10 @@ TODO: Add a setting for these tweaks */ case CMD_EVENT_SHADERS_APPLY_CHANGES: #ifdef HAVE_MENU #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - menu_shader_manager_apply_changes(menu_shader_get()); + menu_shader_manager_apply_changes(menu_shader_get(), + configuration_settings->paths.directory_video_shader, + configuration_settings->paths.directory_menu_config + ); #endif #endif ui_companion_event_command(cmd); diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp index 1159069290..96a5daa962 100644 --- a/ui/drivers/qt/shaderparamsdialog.cpp +++ b/ui/drivers/qt/shaderparamsdialog.cpp @@ -697,6 +697,7 @@ void ShaderParamsDialog::operateShaderPreset(bool save, const char *path, unsign { bool ret; enum auto_shader_type preset_type; + settings_t *settings = config_get_ptr(); switch (action_type) { @@ -721,9 +722,16 @@ void ShaderParamsDialog::operateShaderPreset(bool save, const char *path, unsign if (save) { if (action_type == QT_SHADER_PRESET_NORMAL) - ret = menu_shader_manager_save_preset(menu_shader_get(), path, true); + ret = menu_shader_manager_save_preset(menu_shader_get(), path, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config, + true); else - ret = menu_shader_manager_save_auto_preset(menu_shader_get(), preset_type, true); + ret = menu_shader_manager_save_auto_preset(menu_shader_get(), + preset_type, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config, + true); if (ret) runloop_msg_queue_push( @@ -743,7 +751,9 @@ void ShaderParamsDialog::operateShaderPreset(bool save, const char *path, unsign else { if (action_type != QT_SHADER_PRESET_NORMAL && - menu_shader_manager_remove_auto_preset(preset_type)) + menu_shader_manager_remove_auto_preset(preset_type, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config)) { #ifdef HAVE_MENU bool refresh = false; @@ -881,14 +891,27 @@ void ShaderParamsDialog::onShaderApplyClicked() void ShaderParamsDialog::updateRemovePresetButtonsState() { + settings_t *settings = config_get_ptr(); if (removeGlobalPresetAction) - removeGlobalPresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_GLOBAL)); + removeGlobalPresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_GLOBAL, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )); if (removeCorePresetAction) - removeCorePresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_CORE)); + removeCorePresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_CORE, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )); if (removeParentPresetAction) - removeParentPresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_PARENT)); + removeParentPresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_PARENT, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )); if (removeGamePresetAction) - removeGamePresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_GAME)); + removeGamePresetAction->setEnabled(menu_shader_manager_auto_preset_exists(SHADER_PRESET_GAME, + settings->paths.directory_video_shader, + settings->paths.directory_menu_config + )); } void ShaderParamsDialog::reload()