diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index 3b8651d4b5..ceea406487 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -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); diff --git a/frontend/menu/menu_entries_cbs.c b/frontend/menu/menu_entries_cbs.c index 813f9bab78..50668fe439 100644 --- a/frontend/menu/menu_entries_cbs.c +++ b/frontend/menu/menu_entries_cbs.c @@ -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,