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);
|
bool path_file_exists(const char *path);
|
||||||
const char *path_get_extension(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.
|
// Returns basename from path.
|
||||||
const char *path_basename(const char *path);
|
const char *path_basename(const char *path);
|
||||||
|
|
||||||
|
@ -185,6 +185,14 @@ const char *path_get_extension(const char *path)
|
|||||||
return "";
|
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_)
|
static int qstrcmp_plain(const void *a_, const void *b_)
|
||||||
{
|
{
|
||||||
const struct string_list_elem *a = (const struct string_list_elem*)a_;
|
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));
|
memset(&rgui->shader, 0, sizeof(rgui->shader));
|
||||||
config_file_t *conf = NULL;
|
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];
|
char cgp_path[PATH_MAX];
|
||||||
|
|
||||||
const char *ext = path_get_extension(g_settings.video.shader_path);
|
const char *ext = path_get_extension(g_settings.video.shader_path);
|
||||||
|
@ -242,6 +242,8 @@ typedef struct
|
|||||||
bool msg_force;
|
bool msg_force;
|
||||||
|
|
||||||
char base_path[PATH_MAX];
|
char base_path[PATH_MAX];
|
||||||
|
char default_glslp[PATH_MAX];
|
||||||
|
char default_cgp[PATH_MAX];
|
||||||
|
|
||||||
const uint8_t *font;
|
const uint8_t *font;
|
||||||
bool alloc_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)
|
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];
|
char cgp_path[PATH_MAX];
|
||||||
const char *shader_dir = *g_settings.video.shader_dir ?
|
const char *shader_dir = *g_settings.video.shader_dir ?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user