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:
parent
cfc4183961
commit
484b2bc944
|
@ -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))
|
||||||
|
|
Loading…
Reference in New Issue