static void history_playlist_push(content_playlist_t *playlist, const char *path, const char *core_path, struct retro_system_info *info) { char tmp[PATH_MAX_LENGTH] = {0}; global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); if (!playlist || (global->core_type == CORE_TYPE_DUMMY) || !info) return; /* Path can be relative here. * Ensure we're pushing absolute path. */ strlcpy(tmp, path, sizeof(tmp)); if (*tmp) path_resolve_realpath(tmp, sizeof(tmp)); if (system->no_content || *tmp) content_playlist_push(playlist, *tmp ? tmp : NULL, NULL, core_path, info->library_name, NULL, NULL); }
static int database_info_list_iterate_found_match( database_state_handle_t *db_state, database_info_handle_t *db, const char *zip_name ) { char db_crc[PATH_MAX_LENGTH] = {0}; char db_playlist_path[PATH_MAX_LENGTH] = {0}; char db_playlist_base_str[PATH_MAX_LENGTH] = {0}; char entry_path_str[PATH_MAX_LENGTH] = {0}; content_playlist_t *playlist = NULL; settings_t *settings = config_get_ptr(); const char *db_path = db_state->list->elems[db_state->list_index].data; const char *entry_path = db ? db->list->elems[db->list_ptr].data : NULL; database_info_t *db_info_entry = &db_state->info->list[db_state->entry_index]; fill_short_pathname_representation(db_playlist_base_str, db_path, sizeof(db_playlist_base_str)); path_remove_extension(db_playlist_base_str); strlcat(db_playlist_base_str, ".lpl", sizeof(db_playlist_base_str)); fill_pathname_join(db_playlist_path, settings->playlist_directory, db_playlist_base_str, sizeof(db_playlist_path)); playlist = content_playlist_init(db_playlist_path, COLLECTION_SIZE); snprintf(db_crc, sizeof(db_crc), "%08X|crc", db_info_entry->crc32); strlcpy(entry_path_str, entry_path, sizeof(entry_path_str)); if (zip_name && zip_name[0] != '\0') fill_pathname_join_delim(entry_path_str, entry_path_str, zip_name, '#', sizeof(entry_path_str)); #if 0 RARCH_LOG("Found match in database !\n"); RARCH_LOG("Path: %s\n", db_path); RARCH_LOG("CRC : %s\n", db_crc); RARCH_LOG("Playlist Path: %s\n", db_playlist_path); RARCH_LOG("Entry Path: %s\n", entry_path); RARCH_LOG("Playlist not NULL: %d\n", playlist != NULL); RARCH_LOG("ZIP entry: %s\n", zip_name); RARCH_LOG("entry path str: %s\n", entry_path_str); #endif content_playlist_push(playlist, entry_path_str, db_info_entry->name, "DETECT", "DETECT", db_crc, db_playlist_base_str); content_playlist_write_file(playlist); content_playlist_free(playlist); database_info_list_free(db_state->info); db_state->info = NULL; db_state->crc = 0; return 0; }
static void history_playlist_push(content_playlist_t *playlist, const char *path, const char *core_path, struct retro_system_info *info) { char tmp[PATH_MAX_LENGTH]; rarch_system_info_t *system = NULL; runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); if (!playlist || rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) || !info) return; /* Path can be relative here. * Ensure we're pushing absolute path. */ strlcpy(tmp, path, sizeof(tmp)); if (*tmp) path_resolve_realpath(tmp, sizeof(tmp)); if (system->no_content || *tmp) content_playlist_push(playlist, *tmp ? tmp : NULL, NULL, core_path, info->library_name, NULL, NULL); }
static void menu_content_push_to_history_playlist(void) { struct retro_system_info *system = NULL; settings_t *settings = config_get_ptr(); char *fullpath = NULL; if (!settings->history_list_enable) return; runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath); if (*fullpath) { char tmp[PATH_MAX_LENGTH]; char str[PATH_MAX_LENGTH]; fill_pathname_base(tmp, fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); menu_display_msg_queue_push(str, 1, 1, false); } menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET, &system); content_playlist_push(g_defaults.history, fullpath, NULL, settings->libretro, system->library_name, NULL, NULL); content_playlist_write_file(g_defaults.history); }
static void menu_push_to_history_playlist(void) { settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); if (!settings->history_list_enable) return; if (*global->fullpath) { char tmp[PATH_MAX_LENGTH] = {0}; char str[PATH_MAX_LENGTH] = {0}; fill_pathname_base(tmp, global->fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); rarch_main_msg_queue_push(str, 1, 1, false); } content_playlist_push(g_defaults.history, global->fullpath, NULL, settings->libretro, global->menu.info.library_name, NULL, NULL); }
static void menu_push_to_history_playlist(void) { settings_t *settings = config_get_ptr(); char *fullpath = NULL; if (!settings->history_list_enable) return; runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath); if (*fullpath) { char tmp[PATH_MAX_LENGTH]; char str[PATH_MAX_LENGTH]; fill_pathname_base(tmp, fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); menu_display_msg_queue_push(str, 1, 1, false); } content_playlist_push(g_defaults.history, fullpath, NULL, settings->libretro, g_system_menu.library_name, NULL, NULL); }
static void load_menu_content_prepare(void) { if (!driver.menu) return; if (*g_extern.fullpath || driver.menu->load_no_content) { if (*g_extern.fullpath) { char tmp[PATH_MAX]; char str[PATH_MAX]; fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); msg_queue_push(g_extern.msg_queue, str, 1, 1); } content_playlist_push(g_extern.history, *g_extern.fullpath ? g_extern.fullpath : NULL, g_settings.libretro, driver.menu->info.library_name ? driver.menu->info.library_name : ""); } /* redraw menu frame */ driver.menu->old_input_state = driver.menu->trigger_state = 0; driver.menu->do_held = false; driver.menu->msg_force = true; if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->iterate) driver.menu_ctx->backend->iterate(MENU_ACTION_NOOP); /* Draw frame for loading message */ if (driver.video_data && driver.video_poke && driver.video_poke->set_texture_enable) driver.video_poke->set_texture_enable(driver.video_data, driver.menu->frame_buf_show, MENU_TEXTURE_FULLSCREEN); if (driver.video) rarch_render_cached_frame(); if (driver.video_data && driver.video_poke && driver.video_poke->set_texture_enable) driver.video_poke->set_texture_enable(driver.video_data, false, MENU_TEXTURE_FULLSCREEN); }
void content_push_to_history_playlist(bool do_push, const char *path, void *data) { settings_t *settings = config_get_ptr(); struct retro_system_info *info = (struct retro_system_info*)data; /* If the history list is not enabled, early return. */ if (!settings->history_list_enable) return; if (!g_defaults.history) return; if (!do_push) return; content_playlist_push(g_defaults.history, path, NULL, settings->libretro, info->library_name, NULL, NULL); }
void menu_content_history_push_current(void) { char tmp[PATH_MAX]; /* g_extern.fullpath can be relative here. * Ensure we're pushing absolute path. */ if (!g_extern.history) return; strlcpy(tmp, g_extern.fullpath, sizeof(tmp)); if (*tmp) path_resolve_realpath(tmp, sizeof(tmp)); if (g_extern.system.no_content || *tmp) if (g_extern.history) content_playlist_push(g_extern.history, *tmp ? tmp : NULL, g_settings.libretro, g_extern.system.info.library_name); }
bool load_menu_content(void) { if (*g_extern.fullpath || (driver.menu && driver.menu->load_no_content)) { if (*g_extern.fullpath) { char tmp[PATH_MAX]; char str[PATH_MAX]; fill_pathname_base(tmp, g_extern.fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); msg_queue_push(g_extern.msg_queue, str, 1, 1); } content_playlist_push(g_extern.history, g_extern.fullpath, g_settings.libretro, g_extern.menu.info.library_name); } /* redraw menu frame */ if (driver.menu) { driver.menu->old_input_state = driver.menu->trigger_state = 0; driver.menu->do_held = false; driver.menu->msg_force = true; } if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->iterate) driver.menu_ctx->backend->iterate(MENU_ACTION_NOOP); draw_frame(true); draw_frame(false); if (!(main_load_content(0, NULL, NULL, menu_environment_get, driver.frontend_ctx->process_args))) { char name[PATH_MAX], msg[PATH_MAX]; fill_pathname_base(name, g_extern.fullpath, sizeof(name)); snprintf(msg, sizeof(msg), "Failed to load %s.\n", name); msg_queue_push(g_extern.msg_queue, msg, 1, 90); if (driver.menu) driver.menu->msg_force = true; return false; } if (driver.menu) update_libretro_info(&g_extern.menu.info); rarch_main_command(RARCH_CMD_HISTORY_DEINIT); rarch_main_command(RARCH_CMD_HISTORY_INIT); menu_shader_manager_init(driver.menu); rarch_main_command(RARCH_CMD_VIDEO_SET_ASPECT_RATIO); rarch_main_command(RARCH_CMD_RESUME); return true; }