diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 1a3a7b5dc3..f3f7d73a58 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -509,7 +509,9 @@ static int file_load_with_detect_core_wrapper(size_t idx, size_t entry_idx, command_event(CMD_EVENT_LOAD_CORE, NULL); rarch_task_push_content_load_default(NULL, NULL, - false, CORE_TYPE_PLAIN, NULL, NULL); + false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, + NULL, NULL); return 0; case 0: return generic_action_ok_displaylist_push(path, label, type, @@ -554,7 +556,9 @@ static int action_ok_file_load_detect_core(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { rarch_task_push_content_load_default(path, detect_content_path, - false, CORE_TYPE_PLAIN, NULL, NULL); + false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, + NULL, NULL); return 0; } @@ -1131,7 +1135,10 @@ static int action_ok_core_load_deferred(const char *path, return menu_cbs_exit(); rarch_task_push_content_load_default(path, menu->deferred_path, - false, CORE_TYPE_PLAIN, NULL, NULL); + false, + CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, + NULL, NULL); return 0; } @@ -1159,9 +1166,16 @@ static int generic_action_ok_file_load(const char *path, switch (id) { case ACTION_OK_FFMPEG: + rarch_task_push_content_load_default( + NULL, new_path, true, action_type, + CONTENT_MODE_LOAD_CONTENT_WITH_FFMPEG_CORE_FROM_MENU, + NULL, NULL); + break; case ACTION_OK_IMAGEVIEWER: rarch_task_push_content_load_default( - NULL, new_path, true, action_type, NULL, NULL); + NULL, new_path, true, action_type, + CONTENT_MODE_LOAD_CONTENT_WITH_IMAGEVIEWER_CORE_FROM_MENU, + NULL, NULL); break; default: break; @@ -1227,8 +1241,11 @@ static int action_ok_file_load(const char *path, fill_pathname_join(full_path_new, menu_path_new, path, sizeof(full_path_new)); - rarch_task_push_content_load_default(NULL, full_path_new, - true, CORE_TYPE_PLAIN, NULL, NULL); + rarch_task_push_content_load_default(NULL, + full_path_new, + true, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, + NULL, NULL); return 0; } @@ -2033,7 +2050,9 @@ static int action_ok_start_core(const char *path, { runloop_ctl(RUNLOOP_CTL_CLEAR_CONTENT_PATH, NULL); rarch_task_push_content_load_default(NULL, NULL, - false, CORE_TYPE_PLAIN, NULL, NULL); + false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_NOTHING_WITH_CURRENT_CORE_FROM_MENU, + NULL, NULL); } return 0; @@ -2113,7 +2132,9 @@ static int action_ok_load_archive(const char *path, command_event(CMD_EVENT_LOAD_CORE, NULL); rarch_task_push_content_load_default( - NULL, detect_content_path, false, CORE_TYPE_PLAIN, NULL, NULL); + NULL, detect_content_path, false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, + NULL, NULL); return 0; } @@ -2157,7 +2178,9 @@ static int action_ok_load_archive_detect_core(const char *path, case -1: command_event(CMD_EVENT_LOAD_CORE, NULL); rarch_task_push_content_load_default(NULL, NULL, - false, CORE_TYPE_PLAIN, NULL, NULL); + false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, + NULL, NULL); return 0; case 0: return generic_action_ok_displaylist_push(path, label, type, diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c index 4f60d85183..6877322773 100644 --- a/menu/drivers/zarch.c +++ b/menu/drivers/zarch.c @@ -797,7 +797,9 @@ static int zarch_zui_render_sidebar(zui_t *zui) static int zarch_zui_load_content(zui_t *zui, unsigned i) { rarch_task_push_content_load_default(zui->pick_cores[i].path, - zui->pick_content, false, CORE_TYPE_PLAIN, NULL, NULL); + zui->pick_content, false, CORE_TYPE_PLAIN, + CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, + NULL, NULL); zarch_layout = LAY_HOME; diff --git a/runloop.c b/runloop.c index 3a3b25424b..4de72cd524 100644 --- a/runloop.c +++ b/runloop.c @@ -749,6 +749,7 @@ bool runloop_prepare_dummy(void) return rarch_task_push_content_load_default( NULL, NULL, true, CORE_TYPE_DUMMY, + CONTENT_MODE_LOAD_NOTHING_WITH_DUMMY_CORE, NULL, NULL); } diff --git a/tasks/task_content.c b/tasks/task_content.c index 1fe6787597..113df9f20f 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -61,9 +61,13 @@ static bool task_content_load(bool persist, bool load_content) } bool rarch_task_push_content_load_default( - const char *core_path, const char *fullpath, - bool persist, enum rarch_core_type type, - retro_task_callback_t cb, void *user_data) + const char *core_path, + const char *fullpath, + bool persist, + enum rarch_core_type type, + enum content_mode_load mode, + retro_task_callback_t cb, + void *user_data) { bool load_content = false; diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index d7b0450a44..72dc146c10 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -36,6 +36,7 @@ enum content_mode_load { CONTENT_MODE_LOAD_NONE = 0, CONTENT_MODE_LOAD_NOTHING_WITH_DUMMY_CORE, + CONTENT_MODE_LOAD_NOTHING_WITH_CURRENT_CORE_FROM_MENU, CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU, CONTENT_MODE_LOAD_CONTENT_WITH_NEW_CORE_FROM_MENU, CONTENT_MODE_LOAD_CONTENT_WITH_FFMPEG_CORE_FROM_MENU, @@ -127,6 +128,7 @@ bool rarch_task_push_content_load_default( const char *fullpath, bool persist, enum rarch_core_type type, + enum content_mode_load mode, retro_task_callback_t cb, void *user_data);