This commit is contained in:
twinaphex 2020-02-13 01:09:27 +01:00
parent 4c95d1af4e
commit 699a21fa87
1 changed files with 38 additions and 16 deletions

View File

@ -225,11 +225,12 @@ end:
static bool menu_shader_manager_save_preset_internal( static bool menu_shader_manager_save_preset_internal(
const struct video_shader *shader, const char *basename, const struct video_shader *shader, const char *basename,
const char *dir_video_shader,
const char *dir_menu_config,
bool apply, bool save_reference) bool apply, bool save_reference)
{ {
bool ret = false; bool ret = false;
enum rarch_shader_type type = RARCH_SHADER_NONE; enum rarch_shader_type type = RARCH_SHADER_NONE;
settings_t *settings = config_get_ptr();
char *preset_path = NULL; char *preset_path = NULL;
size_t i = 0; size_t i = 0;
char fullname[PATH_MAX_LENGTH]; char fullname[PATH_MAX_LENGTH];
@ -273,7 +274,7 @@ static bool menu_shader_manager_save_preset_internal(
preset_path = fullname; preset_path = fullname;
ret = video_shader_write_preset(preset_path, ret = video_shader_write_preset(preset_path,
settings->paths.directory_video_shader, dir_video_shader,
shader, save_reference); shader, save_reference);
if (ret) if (ret)
@ -294,8 +295,8 @@ static bool menu_shader_manager_save_preset_internal(
path_get(RARCH_PATH_CONFIG), path_get(RARCH_PATH_CONFIG),
sizeof(config_directory)); sizeof(config_directory));
dirs[0] = settings->paths.directory_video_shader; dirs[0] = dir_video_shader;
dirs[1] = settings->paths.directory_menu_config; dirs[1] = dir_menu_config;
dirs[2] = config_directory; dirs[2] = config_directory;
for (i = 0; i < ARRAY_SIZE(dirs); i++) for (i = 0; i < ARRAY_SIZE(dirs); i++)
@ -309,7 +310,7 @@ static bool menu_shader_manager_save_preset_internal(
preset_path = buffer; preset_path = buffer;
ret = video_shader_write_preset(preset_path, ret = video_shader_write_preset(preset_path,
settings->paths.directory_video_shader, dir_video_shader,
shader, save_reference); shader, save_reference);
if (ret) if (ret)
@ -332,24 +333,26 @@ static bool menu_shader_manager_save_preset_internal(
return ret; return ret;
} }
static bool menu_shader_manager_operate_auto_preset(enum auto_shader_operation op, static bool menu_shader_manager_operate_auto_preset(
const struct video_shader *shader, enum auto_shader_type type, bool apply) enum auto_shader_operation op,
const struct video_shader *shader,
const char *dir_video_shader,
const char *dir_menu_config,
enum auto_shader_type type, bool apply)
{ {
char tmp[PATH_MAX_LENGTH]; char tmp[PATH_MAX_LENGTH];
char directory[PATH_MAX_LENGTH]; char directory[PATH_MAX_LENGTH];
char file[PATH_MAX_LENGTH]; char file[PATH_MAX_LENGTH];
bool success = false; bool success = false;
settings_t *settings = config_get_ptr();
struct retro_system_info *system = runloop_get_libretro_system_info(); struct retro_system_info *system = runloop_get_libretro_system_info();
const char *core_name = system ? system->library_name : NULL; const char *core_name = system ? system->library_name : NULL;
const char *path_dir_video_shader = settings->paths.directory_video_shader;
tmp[0] = directory[0] = file[0] = '\0'; tmp[0] = directory[0] = file[0] = '\0';
if (type == SHADER_PRESET_GLOBAL) if (type == SHADER_PRESET_GLOBAL)
fill_pathname_join( fill_pathname_join(
directory, directory,
path_dir_video_shader, dir_video_shader,
"presets", "presets",
sizeof(directory)); sizeof(directory));
else if (string_is_empty(core_name)) else if (string_is_empty(core_name))
@ -358,7 +361,7 @@ static bool menu_shader_manager_operate_auto_preset(enum auto_shader_operation o
{ {
fill_pathname_join( fill_pathname_join(
tmp, tmp,
path_dir_video_shader, dir_video_shader,
"presets", "presets",
sizeof(tmp)); sizeof(tmp));
fill_pathname_join( fill_pathname_join(
@ -401,7 +404,10 @@ static bool menu_shader_manager_operate_auto_preset(enum auto_shader_operation o
path_mkdir(directory); path_mkdir(directory);
return menu_shader_manager_save_preset_internal( return menu_shader_manager_save_preset_internal(
shader, file, apply, true); shader, file,
dir_video_shader,
dir_menu_config,
apply, true);
case AUTO_SHADER_OP_REMOVE: case AUTO_SHADER_OP_REMOVE:
{ {
/* remove all supported auto-shaders of given type */ /* remove all supported auto-shaders of given type */
@ -465,8 +471,12 @@ static bool menu_shader_manager_operate_auto_preset(enum auto_shader_operation o
bool menu_shader_manager_save_auto_preset(const struct video_shader *shader, bool menu_shader_manager_save_auto_preset(const struct video_shader *shader,
enum auto_shader_type type, bool apply) enum auto_shader_type type, bool apply)
{ {
settings_t *settings = config_get_ptr();
return menu_shader_manager_operate_auto_preset( return menu_shader_manager_operate_auto_preset(
AUTO_SHADER_OP_SAVE, shader, type, apply); AUTO_SHADER_OP_SAVE, shader,
settings->paths.directory_video_shader,
settings->paths.directory_menu_config,
type, apply);
} }
/** /**
@ -481,8 +491,12 @@ bool menu_shader_manager_save_auto_preset(const struct video_shader *shader,
bool menu_shader_manager_save_preset(const struct video_shader *shader, bool menu_shader_manager_save_preset(const struct video_shader *shader,
const char *basename, bool apply) const char *basename, bool apply)
{ {
settings_t *settings = config_get_ptr();
return menu_shader_manager_save_preset_internal( return menu_shader_manager_save_preset_internal(
shader, basename, apply, false); shader, basename,
settings->paths.directory_video_shader,
settings->paths.directory_menu_config,
apply, false);
} }
/** /**
@ -493,8 +507,12 @@ bool menu_shader_manager_save_preset(const struct video_shader *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)
{ {
settings_t *settings = config_get_ptr();
return menu_shader_manager_operate_auto_preset( return menu_shader_manager_operate_auto_preset(
AUTO_SHADER_OP_REMOVE, NULL, type, false); AUTO_SHADER_OP_REMOVE, NULL,
settings->paths.directory_video_shader,
settings->paths.directory_menu_config,
type, false);
} }
/** /**
@ -505,8 +523,12 @@ bool menu_shader_manager_remove_auto_preset(enum auto_shader_type type)
**/ **/
bool menu_shader_manager_auto_preset_exists(enum auto_shader_type type) bool menu_shader_manager_auto_preset_exists(enum auto_shader_type type)
{ {
settings_t *settings = config_get_ptr();
return menu_shader_manager_operate_auto_preset( return menu_shader_manager_operate_auto_preset(
AUTO_SHADER_OP_EXISTS, NULL, type, false); AUTO_SHADER_OP_EXISTS, NULL,
settings->paths.directory_video_shader,
settings->paths.directory_menu_config,
type, false);
} }
int menu_shader_manager_clear_num_passes(struct video_shader *shader) int menu_shader_manager_clear_num_passes(struct video_shader *shader)