Split up task_load_content into two - one does the actual file

loading, the other simply pushes an entry to the history playlist
This commit is contained in:
twinaphex 2019-07-14 18:21:46 +02:00
parent cfc4183961
commit 484b2bc944
1 changed files with 29 additions and 42 deletions

View File

@ -171,7 +171,6 @@ struct content_information_ctx
bool is_ips_pref; bool is_ips_pref;
bool is_bps_pref; bool is_bps_pref;
bool is_ups_pref; bool is_ups_pref;
bool history_list_enable;
bool block_extract; bool block_extract;
bool need_fullpath; bool need_fullpath;
bool set_supports_no_game_enable; bool set_supports_no_game_enable;
@ -1293,14 +1292,11 @@ static void menu_content_environment_get(int *argc, char *argv[],
} }
/** /**
* task_load_content: * task_push_to_history_list:
* *
* Loads content into currently selected core. * Will push the content entry to the history playlist.
* Will also optionally push the content entry to the history playlist.
*
* Returns: true (1) if successful, otherwise false (0).
**/ **/
static bool task_load_content(content_ctx_info_t *content_info, static void task_push_to_history_list(
content_information_ctx_t *content_ctx, content_information_ctx_t *content_ctx,
bool launched_from_menu, bool launched_from_menu,
bool launched_from_cli, bool launched_from_cli,
@ -1309,9 +1305,6 @@ static bool task_load_content(content_ctx_info_t *content_info,
bool contentless = false; bool contentless = false;
bool is_inited = false; bool is_inited = false;
if (!content_load(content_info))
return false;
content_get_status(&contentless, &is_inited); content_get_status(&contentless, &is_inited);
/* Push entry to top of history playlist */ /* Push entry to top of history playlist */
@ -1346,6 +1339,7 @@ static bool task_load_content(content_ctx_info_t *content_info,
const char *crc32 = NULL; const char *crc32 = NULL;
const char *db_name = NULL; const char *db_name = NULL;
playlist_t *playlist_hist = g_defaults.content_history; playlist_t *playlist_hist = g_defaults.content_history;
settings_t *settings = config_get_ptr();
global_t *global = global_get_ptr(); global_t *global = global_get_ptr();
switch (path_is_media_type(tmp)) switch (path_is_media_type(tmp))
@ -1407,17 +1401,11 @@ static bool task_load_content(content_ctx_info_t *content_info,
} }
} }
if (launched_from_cli)
{
settings_t *settings = config_get_ptr();
content_ctx->history_list_enable = settings->bools.history_list_enable;
}
if (global && !string_is_empty(global->name.label)) if (global && !string_is_empty(global->name.label))
label = global->name.label; label = global->name.label;
if ( if (
content_ctx->history_list_enable settings && settings->bools.history_list_enable
&& playlist_hist) && playlist_hist)
{ {
char subsystem_name[PATH_MAX_LENGTH]; char subsystem_name[PATH_MAX_LENGTH];
@ -1445,8 +1433,6 @@ static bool task_load_content(content_ctx_info_t *content_info,
free(tmp); free(tmp);
} }
return true;
} }
#ifdef HAVE_MENU #ifdef HAVE_MENU
@ -1473,9 +1459,11 @@ static bool command_event_cmd_exec(const char *data,
} }
#if defined(HAVE_DYNAMIC) #if defined(HAVE_DYNAMIC)
if (!task_load_content(&content_info, content_ctx, /* Loads content into currently selected core. */
true, launched_from_cli, error_string)) if (!content_load(&content_info))
return false; return false;
task_push_to_history_list(content_ctx,
true, launched_from_cli, error_string);
#else #else
frontend_driver_set_fork(FRONTEND_FORK_CORE_WITH_ARGS); frontend_driver_set_fork(FRONTEND_FORK_CORE_WITH_ARGS);
#endif #endif
@ -1573,8 +1561,6 @@ bool task_push_start_dummy_core(content_ctx_info_t *content_info)
content_ctx.subsystem.data = NULL; content_ctx.subsystem.data = NULL;
content_ctx.subsystem.size = 0; content_ctx.subsystem.size = 0;
content_ctx.history_list_enable = settings->bools.history_list_enable;
if (global) if (global)
{ {
if (!string_is_empty(global->name.ips)) if (!string_is_empty(global->name.ips))
@ -1601,9 +1587,8 @@ bool task_push_start_dummy_core(content_ctx_info_t *content_info)
rarch_ctl(RARCH_CTL_DATA_DEINIT, NULL); rarch_ctl(RARCH_CTL_DATA_DEINIT, NULL);
rarch_ctl(RARCH_CTL_TASK_INIT, NULL); rarch_ctl(RARCH_CTL_TASK_INIT, NULL);
/* Load content */ /* Loads content into currently selected core. */
if (!task_load_content(content_info, &content_ctx, if (!content_load(content_info))
false, false, &error_string))
{ {
if (error_string) if (error_string)
{ {
@ -1614,6 +1599,9 @@ bool task_push_start_dummy_core(content_ctx_info_t *content_info)
ret = false; ret = false;
} }
else
task_push_to_history_list(&content_ctx,
false, false, &error_string);
if (content_ctx.name_ips) if (content_ctx.name_ips)
free(content_ctx.name_ips); free(content_ctx.name_ips);
@ -1664,8 +1652,6 @@ bool task_push_load_content_from_playlist_from_menu(
content_ctx.subsystem.data = NULL; content_ctx.subsystem.data = NULL;
content_ctx.subsystem.size = 0; content_ctx.subsystem.size = 0;
content_ctx.history_list_enable = settings->bools.history_list_enable;
if (global) if (global)
{ {
if (!string_is_empty(global->name.ips)) if (!string_is_empty(global->name.ips))
@ -1762,8 +1748,6 @@ bool task_push_start_current_core(content_ctx_info_t *content_info)
content_ctx.subsystem.data = NULL; content_ctx.subsystem.data = NULL;
content_ctx.subsystem.size = 0; content_ctx.subsystem.size = 0;
content_ctx.history_list_enable = settings->bools.history_list_enable;
if (global) if (global)
{ {
if (!string_is_empty(global->name.ips)) if (!string_is_empty(global->name.ips))
@ -1791,8 +1775,8 @@ bool task_push_start_current_core(content_ctx_info_t *content_info)
if (firmware_update_status(&content_ctx)) if (firmware_update_status(&content_ctx))
goto end; goto end;
if (!task_load_content(content_info, &content_ctx, /* Loads content into currently selected core. */
true, false, &error_string)) if (!content_load(content_info))
{ {
if (error_string) if (error_string)
{ {
@ -1806,6 +1790,9 @@ bool task_push_start_current_core(content_ctx_info_t *content_info)
ret = false; ret = false;
goto end; goto end;
} }
else
task_push_to_history_list(&content_ctx,
true, false, &error_string);
#ifdef HAVE_MENU #ifdef HAVE_MENU
/* Push quick menu onto menu stack */ /* Push quick menu onto menu stack */
@ -1886,8 +1873,6 @@ bool task_push_load_content_with_new_core_from_menu(
content_ctx.subsystem.data = NULL; content_ctx.subsystem.data = NULL;
content_ctx.subsystem.size = 0; content_ctx.subsystem.size = 0;
content_ctx.history_list_enable = settings->bools.history_list_enable;
if (global) if (global)
{ {
if (!string_is_empty(global->name.ips)) if (!string_is_empty(global->name.ips))
@ -1917,8 +1902,8 @@ bool task_push_load_content_with_new_core_from_menu(
if (firmware_update_status(&content_ctx)) if (firmware_update_status(&content_ctx))
goto end; goto end;
if (!task_load_content(content_info, &content_ctx, /* Loads content into currently selected core. */
true, false, &error_string)) if (!content_load(content_info))
{ {
if (error_string) if (error_string)
{ {
@ -1932,6 +1917,9 @@ bool task_push_load_content_with_new_core_from_menu(
ret = false; ret = false;
goto end; goto end;
} }
else
task_push_to_history_list(&content_ctx,
true, false, &error_string);
#else #else
command_event_cmd_exec(path_get(RARCH_PATH_CONTENT), &content_ctx, command_event_cmd_exec(path_get(RARCH_PATH_CONTENT), &content_ctx,
@ -1993,7 +1981,6 @@ static bool task_load_content_callback(content_ctx_info_t *content_info,
{ {
struct retro_system_info *system = runloop_get_libretro_system_info(); struct retro_system_info *system = runloop_get_libretro_system_info();
content_ctx.history_list_enable = settings->bools.history_list_enable;
content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable; content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable;
if (!string_is_empty(settings->paths.directory_system)) if (!string_is_empty(settings->paths.directory_system))
@ -2010,8 +1997,6 @@ static bool task_load_content_callback(content_ctx_info_t *content_info,
content_ctx.subsystem.size = sys_info->subsystem.size; content_ctx.subsystem.size = sys_info->subsystem.size;
} }
content_ctx.history_list_enable = settings->bools.history_list_enable;
if (global) if (global)
{ {
if (!string_is_empty(global->name.ips)) if (!string_is_empty(global->name.ips))
@ -2042,7 +2027,11 @@ static bool task_load_content_callback(content_ctx_info_t *content_info,
} }
#endif #endif
ret = task_load_content(content_info, &content_ctx, true, loading_from_cli, &error_string); /* Loads content into currently selected core. */
ret = content_load(content_info);
if (ret)
task_push_to_history_list(&content_ctx, true, loading_from_cli, &error_string);
end: end:
if (content_ctx.name_ips) if (content_ctx.name_ips)
@ -2451,7 +2440,6 @@ bool content_init(void)
content_ctx.is_bps_pref = rarch_ctl(RARCH_CTL_IS_BPS_PREF, NULL); content_ctx.is_bps_pref = rarch_ctl(RARCH_CTL_IS_BPS_PREF, NULL);
content_ctx.is_ups_pref = rarch_ctl(RARCH_CTL_IS_UPS_PREF, NULL); content_ctx.is_ups_pref = rarch_ctl(RARCH_CTL_IS_UPS_PREF, NULL);
content_ctx.temporary_content = temporary_content; content_ctx.temporary_content = temporary_content;
content_ctx.history_list_enable = false;
content_ctx.directory_system = NULL; content_ctx.directory_system = NULL;
content_ctx.directory_cache = NULL; content_ctx.directory_cache = NULL;
content_ctx.name_ips = NULL; content_ctx.name_ips = NULL;
@ -2479,7 +2467,6 @@ bool content_init(void)
{ {
struct retro_system_info *system = runloop_get_libretro_system_info(); struct retro_system_info *system = runloop_get_libretro_system_info();
content_ctx.history_list_enable = settings->bools.history_list_enable;
content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable; content_ctx.set_supports_no_game_enable = settings->bools.set_supports_no_game_enable;
if (!string_is_empty(settings->paths.directory_system)) if (!string_is_empty(settings->paths.directory_system))