mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
Reimplement shader parameter deferred push callbacks
This commit is contained in:
parent
8174fdfb9a
commit
9f314ef50d
@ -32,18 +32,6 @@ void entries_refresh(file_list_t *list)
|
||||
menu_clear_navigation(driver.menu, true);
|
||||
}
|
||||
|
||||
static inline struct gfx_shader *shader_manager_get_current_shader(
|
||||
menu_handle_t *menu, const char *label, unsigned type)
|
||||
{
|
||||
if (!strcmp(label, "video_shader_preset_parameters") ||
|
||||
!strcmp(label, "video_shader_parameters"))
|
||||
return menu->shader;
|
||||
else if (driver.video_poke && driver.video_data &&
|
||||
driver.video_poke->get_current_shader)
|
||||
return driver.video_poke->get_current_shader(driver.video_data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline bool menu_list_elem_is_dir(file_list_t *buf,
|
||||
unsigned offset)
|
||||
{
|
||||
@ -247,23 +235,6 @@ int push_list(menu_handle_t *menu,
|
||||
for (i = MENU_SETTINGS_BIND_BEGIN; i <= MENU_SETTINGS_BIND_ALL_LAST; i++)
|
||||
add_setting_entry(menu, list, input_config_bind_map[i - MENU_SETTINGS_BIND_BEGIN].base, i, menu->list_settings);
|
||||
}
|
||||
else if (
|
||||
!strcmp(label, "video_shader_preset_parameters") ||
|
||||
!strcmp(label, "video_shader_parameters")
|
||||
)
|
||||
{
|
||||
file_list_clear(list);
|
||||
|
||||
struct gfx_shader *shader = (struct gfx_shader*)
|
||||
shader_manager_get_current_shader(menu, label, menu_type);
|
||||
|
||||
if (shader)
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
file_list_push(list,
|
||||
shader->parameters[i].desc, label,
|
||||
MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0);
|
||||
menu->parameter_shader = shader;
|
||||
}
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->populate_entries)
|
||||
driver.menu_ctx->populate_entries(menu, path, label, menu_type);
|
||||
|
@ -1479,28 +1479,74 @@ static int deferred_push_performance_counters(void *data, void *userdata,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline struct gfx_shader *shader_manager_get_current_shader(
|
||||
menu_handle_t *menu, const char *label, unsigned type)
|
||||
{
|
||||
if (!strcmp(label, "video_shader_preset_parameters") ||
|
||||
!strcmp(label, "video_shader_parameters"))
|
||||
return menu->shader;
|
||||
else if (driver.video_poke && driver.video_data &&
|
||||
driver.video_poke->get_current_shader)
|
||||
return driver.video_poke->get_current_shader(driver.video_data);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int deferred_push_video_shader_preset_parameters(void *data, void *userdata,
|
||||
const char *path, const char *label, unsigned type)
|
||||
{
|
||||
unsigned i;
|
||||
struct gfx_shader *shader = NULL;
|
||||
file_list_t *list = (file_list_t*)data;
|
||||
file_list_t *menu_list = (file_list_t*)userdata;
|
||||
|
||||
if (!list || !menu_list)
|
||||
return -1;
|
||||
|
||||
return push_list(driver.menu, list, path, label, type);
|
||||
file_list_clear(list);
|
||||
|
||||
shader = (struct gfx_shader*)
|
||||
shader_manager_get_current_shader(driver.menu, label, type);
|
||||
|
||||
if (shader)
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
file_list_push(list,
|
||||
shader->parameters[i].desc, label,
|
||||
MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0);
|
||||
driver.menu->parameter_shader = shader;
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->populate_entries)
|
||||
driver.menu_ctx->populate_entries(driver.menu, path, label, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int deferred_push_video_shader_parameters(void *data, void *userdata,
|
||||
const char *path, const char *label, unsigned type)
|
||||
{
|
||||
unsigned i;
|
||||
struct gfx_shader *shader = NULL;
|
||||
file_list_t *list = (file_list_t*)data;
|
||||
file_list_t *menu_list = (file_list_t*)userdata;
|
||||
|
||||
if (!list || !menu_list)
|
||||
return -1;
|
||||
|
||||
return push_list(driver.menu, list, path, label, type);
|
||||
file_list_clear(list);
|
||||
|
||||
shader = (struct gfx_shader*)
|
||||
shader_manager_get_current_shader(driver.menu, label, type);
|
||||
|
||||
if (shader)
|
||||
for (i = 0; i < shader->num_parameters; i++)
|
||||
file_list_push(list,
|
||||
shader->parameters[i].desc, label,
|
||||
MENU_SETTINGS_SHADER_PARAMETER_0 + i, 0);
|
||||
driver.menu->parameter_shader = shader;
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->populate_entries)
|
||||
driver.menu_ctx->populate_entries(driver.menu, path, label, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int deferred_push_settings(void *data, void *userdata,
|
||||
|
Loading…
x
Reference in New Issue
Block a user