mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
Cleanup menu_shader.c
This commit is contained in:
parent
78608f4c46
commit
25decd033a
@ -279,10 +279,8 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
bool refresh = false;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return menu_cbs_exit();
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "../widgets/menu_filebrowser.h"
|
||||
#include "../widgets/menu_input_dialog.h"
|
||||
#include "../menu_content.h"
|
||||
#include "../menu_shader.h"
|
||||
|
||||
#include "../../core.h"
|
||||
#include "../../configuration.h"
|
||||
@ -1097,8 +1098,7 @@ static int generic_action_ok(const char *path,
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
case ACTION_OK_LOAD_PRESET:
|
||||
{
|
||||
struct video_shader *shader = NULL;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, &shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
flush_char = msg_hash_to_str(flush_id);
|
||||
menu_shader_manager_set_preset(shader,
|
||||
video_shader_parse_type(action_path, RARCH_SHADER_NONE),
|
||||
@ -1107,8 +1107,7 @@ static int generic_action_ok(const char *path,
|
||||
break;
|
||||
case ACTION_OK_LOAD_SHADER_PASS:
|
||||
{
|
||||
struct video_shader *shader = NULL;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET, &shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
flush_char = msg_hash_to_str(flush_id);
|
||||
strlcpy(
|
||||
shader->pass[hack_shader_pass].source.path,
|
||||
|
@ -291,11 +291,9 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
bool refresh = false;
|
||||
struct video_shader *shader = NULL;
|
||||
bool refresh = false;
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader)
|
||||
return menu_cbs_exit();
|
||||
|
||||
|
@ -182,9 +182,6 @@ static bool menu_init(menu_handle_t *menu_data)
|
||||
if (!menu_entries_ctl(MENU_ENTRIES_CTL_INIT, NULL))
|
||||
return false;
|
||||
|
||||
if (!menu_driver_ctl(RARCH_MENU_CTL_SHADER_INIT, NULL))
|
||||
return false;
|
||||
|
||||
if (settings->menu_show_start_screen)
|
||||
{
|
||||
menu_dialog_push_pending(true, MENU_DIALOG_WELCOME);
|
||||
@ -487,29 +484,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
|
||||
menu_driver_data->state = 0;
|
||||
break;
|
||||
case RARCH_MENU_CTL_SHADER_DEINIT:
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
if (menu_driver_shader)
|
||||
free(menu_driver_shader);
|
||||
menu_driver_shader = NULL;
|
||||
#endif
|
||||
break;
|
||||
case RARCH_MENU_CTL_SHADER_INIT:
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
menu_driver_shader = (struct video_shader*)
|
||||
calloc(1, sizeof(struct video_shader));
|
||||
if (!menu_driver_shader)
|
||||
return false;
|
||||
#endif
|
||||
break;
|
||||
case RARCH_MENU_CTL_SHADER_GET:
|
||||
{
|
||||
struct video_shader **shader = (struct video_shader**)data;
|
||||
if (!shader)
|
||||
return false;
|
||||
*shader = menu_driver_shader;
|
||||
}
|
||||
break;
|
||||
case RARCH_MENU_CTL_FRAME:
|
||||
if (!menu_driver_alive)
|
||||
return false;
|
||||
@ -555,7 +529,8 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
if (menu_driver_ctl(RARCH_MENU_CTL_OWNS_DRIVER, NULL))
|
||||
return true;
|
||||
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_DEINIT, NULL);
|
||||
menu_shader_manager_free();
|
||||
|
||||
if (menu_driver_data)
|
||||
{
|
||||
menu_input_ctl(MENU_INPUT_CTL_DEINIT, NULL);
|
||||
|
@ -96,9 +96,6 @@ enum rarch_menu_ctl_state
|
||||
RARCH_MENU_CTL_SET_PENDING_SHUTDOWN,
|
||||
RARCH_MENU_CTL_DEINIT,
|
||||
RARCH_MENU_CTL_INIT,
|
||||
RARCH_MENU_CTL_SHADER_DEINIT,
|
||||
RARCH_MENU_CTL_SHADER_INIT,
|
||||
RARCH_MENU_CTL_SHADER_GET,
|
||||
RARCH_MENU_CTL_BLIT_RENDER,
|
||||
RARCH_MENU_CTL_RENDER,
|
||||
RARCH_MENU_CTL_RENDER_MESSAGEBOX,
|
||||
|
@ -37,14 +37,16 @@
|
||||
static char default_glslp[PATH_MAX_LENGTH];
|
||||
static char default_cgp[PATH_MAX_LENGTH];
|
||||
static char default_slangp[PATH_MAX_LENGTH];
|
||||
#endif
|
||||
static struct video_shader *menu_driver_shader = NULL;
|
||||
|
||||
struct video_shader *menu_shader_get(void)
|
||||
{
|
||||
return menu_driver_shader;
|
||||
}
|
||||
|
||||
struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i)
|
||||
{
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
if (!shader)
|
||||
return NULL;
|
||||
@ -54,10 +56,7 @@ struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i)
|
||||
|
||||
struct video_shader_pass *menu_shader_manager_get_pass(unsigned i)
|
||||
{
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
if (!shader)
|
||||
return NULL;
|
||||
@ -67,32 +66,57 @@ struct video_shader_pass *menu_shader_manager_get_pass(unsigned i)
|
||||
|
||||
unsigned menu_shader_manager_get_amount_passes(void)
|
||||
{
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
if (!shader)
|
||||
return 0;
|
||||
|
||||
return shader->passes;
|
||||
}
|
||||
#else
|
||||
struct video_shader *menu_shader_get(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct video_shader_pass *menu_shader_manager_get_pass(unsigned i)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
unsigned menu_shader_manager_get_amount_passes(void) { return 0; }
|
||||
#endif
|
||||
|
||||
void menu_shader_manager_free(void)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
if (menu_driver_shader)
|
||||
free(menu_driver_shader);
|
||||
menu_driver_shader = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* menu_shader_manager_init:
|
||||
*
|
||||
* Initializes shader manager.
|
||||
**/
|
||||
void menu_shader_manager_init(void)
|
||||
bool menu_shader_manager_init(void)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
config_file_t *conf = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
const char *config_path = path_get(RARCH_PATH_CONFIG);
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
menu_driver_shader = (struct video_shader*)
|
||||
calloc(1, sizeof(struct video_shader));
|
||||
if (!menu_driver_shader)
|
||||
return false;
|
||||
|
||||
/* In a multi-config setting, we can't have
|
||||
* conflicts on menu.cgp/menu.glslp. */
|
||||
@ -129,11 +153,11 @@ void menu_shader_manager_init(void)
|
||||
conf = config_file_new(settings->path.shader);
|
||||
if (conf)
|
||||
{
|
||||
if (video_shader_read_conf_cgp(conf, shader))
|
||||
if (video_shader_read_conf_cgp(conf, menu_driver_shader))
|
||||
{
|
||||
video_shader_resolve_relative(shader,
|
||||
video_shader_resolve_relative(menu_driver_shader,
|
||||
settings->path.shader);
|
||||
video_shader_resolve_parameters(conf, shader);
|
||||
video_shader_resolve_parameters(conf, menu_driver_shader);
|
||||
}
|
||||
config_file_free(conf);
|
||||
}
|
||||
@ -141,9 +165,9 @@ void menu_shader_manager_init(void)
|
||||
case FILE_TYPE_SHADER_GLSL:
|
||||
case FILE_TYPE_SHADER_CG:
|
||||
case FILE_TYPE_SHADER_SLANG:
|
||||
strlcpy(shader->pass[0].source.path, settings->path.shader,
|
||||
sizeof(shader->pass[0].source.path));
|
||||
shader->passes = 1;
|
||||
strlcpy(menu_driver_shader->pass[0].source.path, settings->path.shader,
|
||||
sizeof(menu_driver_shader->pass[0].source.path));
|
||||
menu_driver_shader->passes = 1;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
@ -174,10 +198,10 @@ void menu_shader_manager_init(void)
|
||||
|
||||
if (conf)
|
||||
{
|
||||
if (video_shader_read_conf_cgp(conf, shader))
|
||||
if (video_shader_read_conf_cgp(conf, menu_driver_shader))
|
||||
{
|
||||
video_shader_resolve_relative(shader, preset_path);
|
||||
video_shader_resolve_parameters(conf, shader);
|
||||
video_shader_resolve_relative(menu_driver_shader, preset_path);
|
||||
video_shader_resolve_parameters(conf, menu_driver_shader);
|
||||
}
|
||||
config_file_free(conf);
|
||||
}
|
||||
@ -185,6 +209,8 @@ void menu_shader_manager_init(void)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -259,14 +285,12 @@ bool menu_shader_manager_save_preset(
|
||||
const char *dirs[3] = {0};
|
||||
config_file_t *conf = NULL;
|
||||
bool ret = false;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
buffer[0] = config_directory[0] = '\0';
|
||||
preset_path[0] = '\0';
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
if (!shader)
|
||||
return false;
|
||||
@ -402,13 +426,8 @@ int menu_shader_manager_clear_num_passes(void)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
bool refresh = false;
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
if (!shader)
|
||||
return -1;
|
||||
if (shader->passes)
|
||||
shader->passes = 0;
|
||||
|
||||
@ -437,15 +456,8 @@ int menu_shader_manager_clear_parameter(unsigned i)
|
||||
int menu_shader_manager_clear_pass_filter(unsigned i)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
struct video_shader_pass *shader_pass = menu_shader_manager_get_pass(i);
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
if (!shader)
|
||||
return -1;
|
||||
shader_pass = &shader->pass[i];
|
||||
if (!shader_pass)
|
||||
return -1;
|
||||
|
||||
@ -460,35 +472,21 @@ int menu_shader_manager_clear_pass_filter(unsigned i)
|
||||
void menu_shader_manager_clear_pass_scale(unsigned i)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
struct video_shader_pass *shader_pass = menu_shader_manager_get_pass(i);
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
if (!shader_pass)
|
||||
return;
|
||||
|
||||
if (shader)
|
||||
shader_pass = &shader->pass[i];
|
||||
|
||||
if (shader_pass)
|
||||
{
|
||||
shader_pass->fbo.scale_x = 0;
|
||||
shader_pass->fbo.scale_y = 0;
|
||||
shader_pass->fbo.valid = false;
|
||||
}
|
||||
shader_pass->fbo.scale_x = 0;
|
||||
shader_pass->fbo.scale_y = 0;
|
||||
shader_pass->fbo.valid = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void menu_shader_manager_clear_pass_path(unsigned i)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
struct video_shader *shader = NULL;
|
||||
struct video_shader_pass *shader_pass = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
|
||||
if (shader)
|
||||
shader_pass = &shader->pass[i];
|
||||
struct video_shader_pass *shader_pass = menu_shader_manager_get_pass(i);
|
||||
|
||||
if (shader_pass)
|
||||
*shader_pass->source.path = '\0';
|
||||
@ -548,10 +546,7 @@ void menu_shader_manager_apply_changes(void)
|
||||
{
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
unsigned shader_type;
|
||||
struct video_shader *shader = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||
&shader);
|
||||
struct video_shader *shader = menu_shader_get();
|
||||
|
||||
if (!shader)
|
||||
return;
|
||||
|
@ -23,18 +23,22 @@
|
||||
|
||||
RETRO_BEGIN_DECLS
|
||||
|
||||
struct video_shader *menu_shader_get();
|
||||
|
||||
struct video_shader_parameter *menu_shader_manager_get_parameters(unsigned i);
|
||||
|
||||
struct video_shader_pass *menu_shader_manager_get_pass(unsigned i);
|
||||
|
||||
unsigned menu_shader_manager_get_amount_passes(void);
|
||||
|
||||
void menu_shader_manager_free(void);
|
||||
|
||||
/**
|
||||
* menu_shader_manager_init:
|
||||
*
|
||||
* Initializes shader manager.
|
||||
**/
|
||||
void menu_shader_manager_init(void);
|
||||
bool menu_shader_manager_init(void);
|
||||
|
||||
/**
|
||||
* menu_shader_manager_set_preset:
|
||||
|
Loading…
x
Reference in New Issue
Block a user