mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 12:40:23 +00:00
Don't hardcode rgui.cgp/glslp as default.
In a multi-config environment, shader manager could conflict. Instead, infer the default RGUI shader cgps/glslps from config path. Fallback to old rgui.cgp/rgui.glslp if we use a default config.
This commit is contained in:
parent
217ad4b04d
commit
17e2da87e1
3
file.h
3
file.h
@ -74,6 +74,9 @@ bool path_is_directory(const char *path);
|
||||
bool path_file_exists(const char *path);
|
||||
const char *path_get_extension(const char *path);
|
||||
|
||||
// Removes all text after and including the last '.'
|
||||
char *path_remove_extension(char *path);
|
||||
|
||||
// Returns basename from path.
|
||||
const char *path_basename(const char *path);
|
||||
|
||||
|
@ -185,6 +185,14 @@ const char *path_get_extension(const char *path)
|
||||
return "";
|
||||
}
|
||||
|
||||
char *path_remove_extension(char *path)
|
||||
{
|
||||
char *last = strrchr(path, '.');
|
||||
if (*last)
|
||||
*last = '\0';
|
||||
return last;
|
||||
}
|
||||
|
||||
static int qstrcmp_plain(const void *a_, const void *b_)
|
||||
{
|
||||
const struct string_list_elem *a = (const struct string_list_elem*)a_;
|
||||
|
@ -40,6 +40,23 @@ void shader_manager_init(rgui_handle_t *rgui)
|
||||
{
|
||||
memset(&rgui->shader, 0, sizeof(rgui->shader));
|
||||
config_file_t *conf = NULL;
|
||||
|
||||
// In a multi-config setting, we can't have conflicts on rgui.cgp/rgui.glslp.
|
||||
if (*g_extern.config_path)
|
||||
{
|
||||
fill_pathname_base(rgui->default_glslp, g_extern.config_path, sizeof(rgui->default_glslp));
|
||||
path_remove_extension(rgui->default_glslp);
|
||||
strlcat(rgui->default_glslp, ".glslp", sizeof(rgui->default_glslp));
|
||||
fill_pathname_base(rgui->default_cgp, g_extern.config_path, sizeof(rgui->default_cgp));
|
||||
path_remove_extension(rgui->default_cgp);
|
||||
strlcat(rgui->default_cgp, ".cgp", sizeof(rgui->default_cgp));
|
||||
}
|
||||
else
|
||||
{
|
||||
strlcpy(rgui->default_glslp, "rgui.glslp", sizeof(rgui->default_glslp));
|
||||
strlcpy(rgui->default_cgp, "rgui.cgp", sizeof(rgui->default_cgp));
|
||||
}
|
||||
|
||||
char cgp_path[PATH_MAX];
|
||||
|
||||
const char *ext = path_get_extension(g_settings.video.shader_path);
|
||||
|
@ -242,6 +242,8 @@ typedef struct
|
||||
bool msg_force;
|
||||
|
||||
char base_path[PATH_MAX];
|
||||
char default_glslp[PATH_MAX];
|
||||
char default_cgp[PATH_MAX];
|
||||
|
||||
const uint8_t *font;
|
||||
bool alloc_font;
|
||||
|
@ -1692,7 +1692,7 @@ static int shader_manager_toggle_setting(rgui_handle_t *rgui, unsigned setting,
|
||||
|
||||
if (rgui->shader.passes && type != RARCH_SHADER_NONE)
|
||||
{
|
||||
const char *conf_path = type == RARCH_SHADER_GLSL ? "rgui.glslp" : "rgui.cgp";
|
||||
const char *conf_path = type == RARCH_SHADER_GLSL ? rgui->default_glslp : rgui->default_cgp;
|
||||
|
||||
char cgp_path[PATH_MAX];
|
||||
const char *shader_dir = *g_settings.video.shader_dir ?
|
||||
|
Loading…
x
Reference in New Issue
Block a user