diff --git a/console/rarch_console.h b/console/rarch_console.h index b7d2f79cd3..e7464749fb 100644 --- a/console/rarch_console.h +++ b/console/rarch_console.h @@ -32,17 +32,6 @@ #define EXT_CGP_PRESETS "cgp|CGP" #define EXT_INPUT_PRESETS "cfg|CFG" -enum -{ - EXTERN_LAUNCHER_SALAMANDER, -#ifdef HAVE_MULTIMAN - EXTERN_LAUNCHER_MULTIMAN, -#endif -#ifdef GEKKO - EXTERN_LAUNCHER_CHANNEL, -#endif -}; - enum { MENU_ITEM_LOAD_STATE = 0, MENU_ITEM_SAVE_STATE, diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 2c8746b55e..5e767a9b8c 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -760,11 +760,11 @@ static int rgui_settings_toggle_setting(rgui_file_type_t setting, rgui_action_t if (action == RGUI_ACTION_OK) { #ifdef GEKKO - snprintf(g_extern.console.external_launch.launch_app, sizeof(g_extern.console.external_launch.launch_app), "%s/boot.dol", default_paths.core_dir); + snprintf(g_extern.fullpath, sizeof(g_extern.fullpath), "%s/boot.dol", default_paths.core_dir); #endif - g_extern.console.external_launch.enable = true; g_extern.lifecycle_menu_state &= ~(1 << MODE_EMULATION); g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); + g_extern.lifecycle_menu_state |= (1 << MODE_EXITSPAWN); return -1; } break; diff --git a/frontend/menu/rmenu.c b/frontend/menu/rmenu.c index a31031e64c..cf5e3c1274 100644 --- a/frontend/menu/rmenu.c +++ b/frontend/menu/rmenu.c @@ -716,10 +716,10 @@ int select_file(void *data, void *state) if(set_libretro_core_as_launch) { - strlcpy(g_extern.console.external_launch.launch_app, path, sizeof(g_extern.console.external_launch.launch_app)); + strlcpy(g_extern.fullpath, path, sizeof(g_extern.fullpath)); set_libretro_core_as_launch = false; - g_extern.console.external_launch.enable = true; g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); + g_extern.lifecycle_menu_state |= (1 << MODE_EXITSPAWN); return -1; } else @@ -2237,11 +2237,10 @@ int ingame_menu(void *data, void *state) if(input & (1ULL << RMENU_DEVICE_NAV_B)) { RARCH_LOG("Boot Multiman: %s.\n", default_paths.multiman_self_file); - strlcpy(g_extern.console.external_launch.launch_app, default_paths.multiman_self_file, - sizeof(g_extern.console.external_launch.launch_app)); - g_extern.console.external_launch.enable = true; + strlcpy(g_extern.fullpath, default_paths.multiman_self_file, sizeof(g_extern.fullpath)); g_extern.lifecycle_menu_state &= ~(1 << MODE_EMULATION); g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); + g_extern.lifecycle_menu_state |= (1 << MODE_EXITSPAWN); return -1; } snprintf(strw_buffer, sizeof(strw_buffer), "Press [%s] to quit RetroArch and return to multiMAN.", rarch_input_find_platform_key_label(1ULL << RETRO_DEVICE_ID_JOYPAD_B)); diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index ef0672d006..c6dd73ff0c 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -972,9 +972,9 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle convert_wchar_to_char(str_buffer, (const wchar_t *)m_romlist.GetText(index), sizeof(str_buffer)); if(path_file_exists(tmp_browser->current_dir.list->elems[index].data)) { - snprintf(g_extern.console.external_launch.launch_app, sizeof(g_extern.console.external_launch.launch_app), "%s\\%s", filebrowser_get_current_dir(tmp_browser), str_buffer); - g_extern.console.external_launch.enable = true; + snprintf(g_extern.fullpath, sizeof(g_extern.fullpath), "%s\\%s", filebrowser_get_current_dir(tmp_browser), str_buffer); g_extern.lifecycle_menu_state |= (1 << MODE_EXIT); + g_extern.lifecycle_menu_state |= (1 << MODE_EXITSPAWN); process_input_ret = -1; } else if(tmp_browser->current_dir.list->elems[index].attr.b) diff --git a/frontend/platform/platform_gx.c b/frontend/platform/platform_gx.c index 4ddf0c631b..93714b0b1a 100644 --- a/frontend/platform/platform_gx.c +++ b/frontend/platform/platform_gx.c @@ -339,7 +339,7 @@ static void system_exitspawn(void) #ifdef IS_SALAMANDER rarch_console_exec(default_paths.libretro_path); #else - if(g_extern.console.external_launch.enable) + if (g_extern.lifecycle_menu_state & (1 << MODE_EXITSPAWN)) rarch_console_exec(g_settings.libretro); #endif } @@ -372,7 +372,7 @@ static void system_process_args(int argc, char *argv[]) if (argc > 2 && argv[1] != NULL && argv[2] != NULL) { char rom[PATH_MAX]; - g_extern.console.external_launch.support = EXTERN_LAUNCHER_CHANNEL; + g_extern.lifecycle_menu_state |= (1 << MODE_EXTLAUNCH_CHANNEL); snprintf(rom, sizeof(rom), "%s%s", argv[1], argv[2]); g_extern.file_state.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE; rarch_console_load_game_wrap(rom, g_extern.file_state.zip_extract_mode); @@ -385,7 +385,7 @@ static void system_process_args(int argc, char *argv[]) g_extern.lifecycle_menu_state |= (1 << MODE_INIT); } else - g_extern.console.external_launch.support = EXTERN_LAUNCHER_SALAMANDER; + g_extern.lifecycle_menu_state |= (1 << MODE_EXTLAUNCH_SALAMANDER); } #endif diff --git a/frontend/platform/platform_ps3.c b/frontend/platform/platform_ps3.c index 011cd53ea2..befc7f9958 100644 --- a/frontend/platform/platform_ps3.c +++ b/frontend/platform/platform_ps3.c @@ -218,15 +218,15 @@ static void get_environment_settings(int argc, char *argv[]) if(path_file_exists(default_paths.multiman_self_file) && argc > 1 && path_file_exists(argv[1])) { - g_extern.console.external_launch.support = EXTERN_LAUNCHER_MULTIMAN; + g_extern.lifecycle_menu_state |= (1 << MODE_EXTLAUNCH_MULTIMAN); RARCH_LOG("Started from multiMAN, auto-game start enabled.\n"); } else #endif #ifndef IS_SALAMANDER { - g_extern.console.external_launch.support = EXTERN_LAUNCHER_SALAMANDER; - RARCH_WARN("Not started from multiMAN, auto-game start disabled.\n"); + g_extern.lifecycle_menu_state |= (1 << MODE_EXTLAUNCH_SALAMANDER); + RARCH_WARN("Started from Salamander, auto-game start disabled.\n"); } #endif @@ -259,7 +259,7 @@ static void get_environment_settings(int argc, char *argv[]) ret = cellGameContentPermit(contentInfoPath, default_paths.port_dir); #ifdef HAVE_MULTIMAN - if(g_extern.console.external_launch.support == EXTERN_LAUNCHER_MULTIMAN) + if (g_extern.lifecycle_menu_state & (1 << MODE_EXTLAUNCH_MULTIMAN)) { snprintf(contentInfoPath, sizeof(contentInfoPath), "/dev_hdd0/game/%s", EMULATOR_CONTENT_DIR); snprintf(default_paths.port_dir, sizeof(default_paths.port_dir), "/dev_hdd0/game/%s/USRDIR", EMULATOR_CONTENT_DIR); @@ -385,21 +385,15 @@ static void system_post_init(void) static void system_process_args(int argc, char *argv[]) { - switch(g_extern.console.external_launch.support) - { - case EXTERN_LAUNCHER_SALAMANDER: - break; #ifdef HAVE_MULTIMAN - case EXTERN_LAUNCHER_MULTIMAN: - RARCH_LOG("Started from multiMAN, will auto-start game.\n"); - strlcpy(g_extern.fullpath, argv[1], sizeof(g_extern.fullpath)); - g_extern.lifecycle_menu_state &= ~(1 << MODE_MENU); - g_extern.lifecycle_menu_state |= (1 << MODE_INIT); - break; -#endif - default: - break; + if (g_extern.lifecycle_menu_state & (1 << MODE_EXTLAUNCH_MULTIMAN)) + { + RARCH_LOG("Started from multiMAN, will auto-start game.\n"); + strlcpy(g_extern.fullpath, argv[1], sizeof(g_extern.fullpath)); + g_extern.lifecycle_menu_state &= ~(1 << MODE_MENU); + g_extern.lifecycle_menu_state |= (1 << MODE_INIT); } +#endif } static void system_deinit(void) @@ -470,8 +464,8 @@ static void system_exitspawn(void) cellSysmoduleLoadModule(CELL_SYSMODULE_FS); cellSysmoduleLoadModule(CELL_SYSMODULE_IO); #else - if(g_extern.console.external_launch.enable) - rarch_console_exec(g_extern.console.external_launch.launch_app); + if (g_extern.lifecycle_menu_state & (1 << MODE_EXITSPAWN)) + rarch_console_exec(g_extern.fullpath); #endif #endif diff --git a/general.h b/general.h index 415bed68c1..036466222f 100644 --- a/general.h +++ b/general.h @@ -111,7 +111,11 @@ enum menu_enums MODE_MENU_DRAW, MODE_INFO_DRAW, MODE_FPS_DRAW, + MODE_EXTLAUNCH_SALAMANDER, + MODE_EXTLAUNCH_CHANNEL, + MODE_EXTLAUNCH_MULTIMAN, MODE_EXIT, + MODE_EXITSPAWN, MODE_LOAD_FIRST_SHADER, MODE_LOAD_SECOND_SHADER, }; @@ -503,13 +507,6 @@ struct global } state; } rmenu; - struct - { - bool enable; - char launch_app[PATH_MAX]; - unsigned support; - } external_launch; - struct { struct