void menu_entries_prepend(file_list_t *list, const char *path, const char *label, enum msg_hash_enums enum_idx, unsigned type, size_t directory_ptr, size_t entry_idx) { menu_ctx_list_t list_info; size_t idx; menu_file_list_cbs_t *cbs = NULL; if (!list || !label) return; file_list_prepend(list, path, label, type, directory_ptr, entry_idx); idx = 0; list_info.list = list; list_info.path = path; list_info.label = label; list_info.idx = idx; menu_driver_ctl(RARCH_MENU_CTL_LIST_INSERT, &list_info); file_list_free_actiondata(list, idx); cbs = (menu_file_list_cbs_t*) calloc(1, sizeof(menu_file_list_cbs_t)); if (!cbs) return; file_list_set_actiondata(list, idx, cbs); cbs->enum_idx = enum_idx; cbs->setting = menu_setting_find_enum(cbs->enum_idx); menu_cbs_init(list, cbs, path, label, type, idx); }
static int action_right_shader_filter_default(unsigned type, const char *label, bool wraparound) { rarch_setting_t *setting = menu_setting_find_enum(MENU_ENUM_LABEL_VIDEO_SMOOTH); if (!setting) return menu_cbs_exit(); return menu_action_handle_setting(setting, setting_get_type(setting), MENU_ACTION_RIGHT, wraparound); }
void menu_entries_append_enum(file_list_t *list, const char *path, const char *label, enum msg_hash_enums enum_idx, unsigned type, size_t directory_ptr, size_t entry_idx) { menu_ctx_list_t list_info; size_t idx; const char *menu_path = NULL; menu_file_list_cbs_t *cbs = NULL; if (!list || !label) return; file_list_append(list, path, label, type, directory_ptr, entry_idx); menu_entries_get_last_stack(&menu_path, NULL, NULL, NULL, NULL); idx = list->size - 1; list_info.fullpath = NULL; if (!string_is_empty(menu_path)) list_info.fullpath = strdup(menu_path); list_info.list = list; list_info.path = path; list_info.label = label; list_info.idx = idx; list_info.entry_type = type; menu_driver_ctl(RARCH_MENU_CTL_LIST_INSERT, &list_info); if (list_info.fullpath) free(list_info.fullpath); file_list_free_actiondata(list, idx); cbs = (menu_file_list_cbs_t*) calloc(1, sizeof(menu_file_list_cbs_t)); if (!cbs) return; file_list_set_actiondata(list, idx, cbs); cbs->enum_idx = enum_idx; if (enum_idx != MENU_ENUM_LABEL_PLAYLIST_ENTRY && enum_idx != MENU_ENUM_LABEL_PLAYLIST_COLLECTION_ENTRY && enum_idx != MENU_ENUM_LABEL_RDB_ENTRY) { cbs->setting = menu_setting_find_enum(enum_idx); } menu_cbs_init(list, cbs, path, label, type, idx); }
static int action_left_shader_filter_default(unsigned type, const char *label, bool wraparound) { #ifdef HAVE_SHADER_MANAGER rarch_setting_t *setting = menu_setting_find_enum( MENU_ENUM_LABEL_VIDEO_SMOOTH); if (!setting) return menu_cbs_exit(); return menu_action_handle_setting(setting, setting_get_type(setting), MENU_ACTION_LEFT, wraparound); #else return 0; #endif }
void menu_entries_prepend(file_list_t *list, const char *path, const char *label, enum msg_hash_enums enum_idx, unsigned type, size_t directory_ptr, size_t entry_idx) { menu_ctx_list_t list_info; size_t idx; const char *menu_path = NULL; menu_file_list_cbs_t *cbs = NULL; if (!list || !label) return; file_list_prepend(list, path, label, type, directory_ptr, entry_idx); menu_entries_get_last_stack(&menu_path, NULL, NULL, NULL, NULL); idx = 0; list_info.fullpath = NULL; if (!string_is_empty(menu_path)) list_info.fullpath = strdup(menu_path); list_info.list = list; list_info.path = path; list_info.label = label; list_info.idx = idx; list_info.entry_type = type; menu_driver_list_insert(&list_info); if (list_info.fullpath) free(list_info.fullpath); file_list_free_actiondata(list, idx); cbs = (menu_file_list_cbs_t*) calloc(1, sizeof(menu_file_list_cbs_t)); if (!cbs) return; file_list_set_actiondata(list, idx, cbs); cbs->enum_idx = enum_idx; cbs->setting = menu_setting_find_enum(cbs->enum_idx); menu_cbs_init(list, cbs, path, label, type, idx); }
static int general_push(menu_displaylist_info_t *info, unsigned id, enum menu_displaylist_ctl_state state) { struct retro_system_info *system_menu = NULL; settings_t *settings = config_get_ptr(); rarch_system_info_t *system = NULL; core_info_list_t *list = NULL; menu_handle_t *menu = NULL; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); core_info_get_list(&list); menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET, &system_menu); runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); switch (id) { case PUSH_DEFAULT: case PUSH_DETECT_CORE_LIST: break; default: fill_pathname_join(info->path, menu->scratch2_buf, menu->scratch_buf, sizeof(info->path)); fill_pathname_join(info->label, menu->scratch2_buf, menu->scratch_buf, sizeof(info->label)); break; } info->type_default = FILE_TYPE_PLAIN; switch (id) { case PUSH_ARCHIVE_OPEN_DETECT_CORE: case PUSH_ARCHIVE_OPEN: case PUSH_DEFAULT: info->setting = menu_setting_find_enum(info->enum_idx); break; default: break; } switch (id) { case PUSH_ARCHIVE_OPEN_DETECT_CORE: if (!string_is_empty(list->all_ext)) strlcpy(info->exts, list->all_ext, sizeof(info->exts)); else if (system_menu->valid_extensions) { if (*system_menu->valid_extensions) strlcpy(info->exts, system_menu->valid_extensions, sizeof(info->exts)); } else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; case PUSH_ARCHIVE_OPEN: if (system_menu->valid_extensions) { if (*system_menu->valid_extensions) strlcpy(info->exts, system_menu->valid_extensions, sizeof(info->exts)); } else strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); break; case PUSH_DEFAULT: if (menu_setting_get_browser_selection_type(info->setting) == ST_DIR) { } else if (system_menu->valid_extensions) { if (*system_menu->valid_extensions) strlcpy(info->exts, system_menu->valid_extensions, sizeof(info->exts)); } else { if (!string_is_empty(system->valid_extensions)) strlcpy(info->exts, system->valid_extensions, sizeof(info->exts)); } break; case PUSH_DETECT_CORE_LIST: if (!string_is_empty(list->all_ext)) strlcpy(info->exts, list->all_ext, sizeof(info->exts)); break; } (void)settings; if (settings->multimedia.builtin_mediaplayer_enable || settings->multimedia.builtin_imageviewer_enable) { struct retro_system_info sysinfo = {0}; (void)sysinfo; #ifdef HAVE_FFMPEG if (settings->multimedia.builtin_mediaplayer_enable) { libretro_ffmpeg_retro_get_system_info(&sysinfo); strlcat(info->exts, "|", sizeof(info->exts)); strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); } #endif #ifdef HAVE_IMAGEVIEWER if (settings->multimedia.builtin_imageviewer_enable) { libretro_imageviewer_retro_get_system_info(&sysinfo); strlcat(info->exts, "|", sizeof(info->exts)); strlcat(info->exts, sysinfo.valid_extensions, sizeof(info->exts)); } #endif } return deferred_push_dlist(info, state); }