diff --git a/360/frontend-xdk/menu.cpp b/360/frontend-xdk/menu.cpp index e5d2ae261f..5536b7c7dc 100644 --- a/360/frontend-xdk/menu.cpp +++ b/360/frontend-xdk/menu.cpp @@ -39,6 +39,35 @@ uint32_t set_shader = 0; wchar_t strw_buffer[PATH_MAX]; char str_buffer[PATH_MAX]; +enum +{ + RMENU_DEVICE_NAV_UP = 0, + RMENU_DEVICE_NAV_DOWN, + RMENU_DEVICE_NAV_LEFT, + RMENU_DEVICE_NAV_RIGHT, + RMENU_DEVICE_NAV_UP_ANALOG_L, + RMENU_DEVICE_NAV_DOWN_ANALOG_L, + RMENU_DEVICE_NAV_LEFT_ANALOG_L, + RMENU_DEVICE_NAV_RIGHT_ANALOG_L, + RMENU_DEVICE_NAV_UP_ANALOG_R, + RMENU_DEVICE_NAV_DOWN_ANALOG_R, + RMENU_DEVICE_NAV_LEFT_ANALOG_R, + RMENU_DEVICE_NAV_RIGHT_ANALOG_R, + RMENU_DEVICE_NAV_B, + RMENU_DEVICE_NAV_A, + RMENU_DEVICE_NAV_X, + RMENU_DEVICE_NAV_Y, + RMENU_DEVICE_NAV_START, + RMENU_DEVICE_NAV_SELECT, + RMENU_DEVICE_NAV_L1, + RMENU_DEVICE_NAV_R1, + RMENU_DEVICE_NAV_L2, + RMENU_DEVICE_NAV_R2, + RMENU_DEVICE_NAV_L3, + RMENU_DEVICE_NAV_R3, + RMENU_DEVICE_NAV_LAST +}; + /* Register custom classes */ HRESULT CRetroArch::RegisterXuiClasses (void) { @@ -67,12 +96,44 @@ HRESULT CRetroArch::UnregisterXuiClasses (void) return 0; } -static void filebrowser_fetch_directory_entries(const char *path, - filebrowser_t * browser, CXuiList * romlist, CXuiTextElement * rompath_title) +static void browser_update(filebrowser_t * b, uint64_t input, const char *extensions) { - filebrowser_push_directory(browser, path, true); + bool ret = true; + filebrowser_action_t action = FILEBROWSER_ACTION_NOOP; - convert_char_to_wchar(strw_buffer, path, sizeof(strw_buffer)); + if (input & (1 << RMENU_DEVICE_NAV_DOWN)) + action = FILEBROWSER_ACTION_DOWN; + else if (input & (1 << RMENU_DEVICE_NAV_UP)) + action = FILEBROWSER_ACTION_UP; + else if (input & (1 << RMENU_DEVICE_NAV_RIGHT)) + action = FILEBROWSER_ACTION_RIGHT; + else if (input & (1 << RMENU_DEVICE_NAV_LEFT)) + action = FILEBROWSER_ACTION_LEFT; + else if (input & (1 << RMENU_DEVICE_NAV_R2)) + action = FILEBROWSER_ACTION_SCROLL_DOWN; + else if (input & (1 << RMENU_DEVICE_NAV_L2)) + action = FILEBROWSER_ACTION_SCROLL_UP; + else if (input & (1 << RMENU_DEVICE_NAV_A)) + action = FILEBROWSER_ACTION_CANCEL; + else if (input & (1 << RMENU_DEVICE_NAV_START)) + { + action = FILEBROWSER_ACTION_RESET; + filebrowser_set_root(b, default_paths.filesystem_root_dir); + strlcpy(b->extensions, extensions, sizeof(b->extensions)); + } + + if(action != FILEBROWSER_ACTION_NOOP) + ret = filebrowser_iterate(b, action); + + if(!ret) + rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180); +} + +static void filebrowser_fetch_directory_entries(filebrowser_t * browser, uint64_t action, CXuiList * romlist, CXuiTextElement * rompath_title) +{ + browser_update(browser, action, browser->extensions); + + convert_char_to_wchar(strw_buffer, filebrowser_get_current_dir(browser), sizeof(strw_buffer)); rompath_title->SetText(strw_buffer); romlist->DeleteItems(0, romlist->GetItemCount()); @@ -95,37 +156,54 @@ HRESULT CRetroArchFileBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled GetChildById(L"XuiBtnGameDir", &m_dir_game); GetChildById(L"XuiBtnCacheDir", &m_dir_cache); - filebrowser_set_root(browser, g_console.default_rom_startup_dir); - strlcpy(tmp_browser->extensions, rarch_console_get_rom_ext(), sizeof(tmp_browser->extensions)); - filebrowser_fetch_directory_entries(g_console.default_rom_startup_dir, - browser, &m_romlist, &m_rompathtitle); + filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), g_console.default_rom_startup_dir); + + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); return 0; } -HRESULT CRetroArchCoreBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) +HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { - GetChildById(L"XuiRomList", &m_romlist); - GetChildById(L"XuiBackButton1", &m_back); - GetChildById(L"XuiTxtRomPath", &m_rompathtitle); + char path[PATH_MAX]; - filebrowser_set_root(tmp_browser, "game:"); - strlcpy(tmp_browser->extensions, "xex|XEX", sizeof(tmp_browser->extensions)); - filebrowser_fetch_directory_entries("game:", tmp_browser, &m_romlist, &m_rompathtitle); + if(hObjPressed == m_romlist) + { + int index = m_romlist.GetCurSel(); + convert_wchar_to_char(str_buffer, (const wchar_t *)m_romlist.GetText(index), sizeof(str_buffer)); + if(path_file_exists(browser->current_dir.list->elems[index].data)) + { + snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer); + rarch_console_load_game_wrap(path, g_console.zip_extract_mode, S_DELAY_45); + } + else if(browser->current_dir.list->elems[index].attr.b) + { + snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), path); + filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); + } + } + else if (hObjPressed == m_dir_game) + { + filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), g_console.default_rom_startup_dir); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); + } +#ifdef HAVE_HDD_CACHE_PARTITION + else if (hObjPressed == m_dir_cache) + { + filebrowser_set_root_and_ext(browser, rarch_console_get_rom_ext(), "cache:"); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(browser, action, &m_romlist, &m_rompathtitle); - return 0; -} + if (g_console.info_msg_enable) + rarch_settings_msg(S_MSG_CACHE_PARTITION, S_DELAY_180); + } +#endif -HRESULT CRetroArchShaderBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) -{ - GetChildById(L"XuiRomList", &m_shaderlist); - GetChildById(L"XuiBackButton1", &m_back); - GetChildById(L"XuiTxtRomPath", &m_shaderpathtitle); - - filebrowser_set_root(tmp_browser, "game:\\media\\shaders"); - strlcpy(tmp_browser->extensions, "cg|CG", sizeof(tmp_browser->extensions)); - filebrowser_fetch_directory_entries("game:\\media\\shaders", tmp_browser, - &m_shaderlist, &m_shaderpathtitle); + bHandled = TRUE; return 0; } @@ -271,6 +349,99 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) return 0; } +HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) +{ + int current_index; + HRESULT hr; + + if ( hObjPressed == m_settingslist) + { + current_index = m_settingslist.GetCurSel(); + + switch(current_index) + { + case SETTING_EMU_REWIND_ENABLED: + rarch_settings_change(S_REWIND); + m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); + + if (g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + break; + case SETTING_EMU_SHOW_INFO_MSG: + g_console.info_msg_enable = !g_console.info_msg_enable; + m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); + break; + case SETTING_EMU_MENUS: + g_console.menus_hd_enable = !g_console.menus_hd_enable; + m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); + break; + case SETTING_GAMMA_CORRECTION_ENABLED: + g_console.gamma_correction = g_console.gamma_correction ? 0 : 1; + m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF"); + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + break; + case SETTING_COLOR_FORMAT: + g_console.color_format = !g_console.color_format; + m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); + if(g_console.info_msg_enable) + rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); + break; + case SETTING_SHADER: + set_shader = 1; + hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + + if (hr < 0) + RARCH_ERR("Failed to load scene.\n"); + + hCur = app.hShaderBrowser; + + if (g_console.info_msg_enable) + rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + + NavigateForward(app.hShaderBrowser); + break; + case SETTING_SHADER_2: + set_shader = 2; + hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + if (hr < 0) + RARCH_ERR("Failed to load scene.\n"); + + hCur = app.hShaderBrowser; + + if (g_console.info_msg_enable) + rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); + + NavigateForward(app.hShaderBrowser); + break; + case SETTING_HW_TEXTURE_FILTER: + g_settings.video.smooth = !g_settings.video.smooth; + m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); + break; + case SETTING_HW_TEXTURE_FILTER_2: + g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; + m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering"); + break; + case SETTING_SCALE_ENABLED: + g_console.fbo_enabled = !g_console.fbo_enabled; + m_settingslist.SetText(SETTING_SCALE_ENABLED, g_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); + gfx_ctx_set_fbo(g_console.fbo_enabled); + break; + case SETTING_ZIP_EXTRACT: + if(g_console.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR) + g_console.zip_extract_mode++; + else + g_console.zip_extract_mode = 0; + rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_ZIP_EXTRACT, sizeof(strw_buffer)); + m_settingslist.SetText(SETTING_ZIP_EXTRACT, strw_buffer); + break; + } + } + + bHandled = TRUE; + return 0; +} + HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { int current_index; @@ -618,69 +789,15 @@ HRESULT CRetroArchQuickMenu::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled return 0; } -HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) +HRESULT CRetroArchShaderBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { - struct retro_system_info info; - retro_get_system_info(&info); - const char *id = info.library_name ? info.library_name : "Unknown"; + GetChildById(L"XuiRomList", &m_shaderlist); + GetChildById(L"XuiBackButton1", &m_back); + GetChildById(L"XuiTxtRomPath", &m_shaderpathtitle); - GetChildById(L"XuiLogo", &m_logoimage); - GetChildById(L"XuiBtnRomBrowser", &m_filebrowser); - GetChildById(L"XuiBtnSettings", &m_settings); - GetChildById(L"XuiBtnQuickMenu", &m_quick_menu); - GetChildById(L"XuiBtnControls", &m_controls); - GetChildById(L"XuiBtnQuit", &m_quit); - GetChildById(L"XuiTxtTitle", &m_title); - GetChildById(L"XuiTxtCoreText", &m_core); - GetChildById(L"XuiBtnLibretroCore", &m_change_libretro_core); - - char core_text[256]; - snprintf(core_text, sizeof(core_text), "%s %s", id, info.library_version); - - convert_char_to_wchar(strw_buffer, core_text, sizeof(strw_buffer)); - m_core.SetText(strw_buffer); - rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); - m_title.SetText(strw_buffer); - - return 0; -} - -HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) -{ - char path[PATH_MAX]; - - if(hObjPressed == m_romlist) - { - int index = m_romlist.GetCurSel(); - convert_wchar_to_char(str_buffer, (const wchar_t *)m_romlist.GetText(index), sizeof(str_buffer)); - if(path_file_exists(browser->current_dir.list->elems[index].data)) - { - snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer); - rarch_console_load_game_wrap(path, g_console.zip_extract_mode, S_DELAY_45); - } - else if(browser->current_dir.list->elems[index].attr.b) - { - snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer); - filebrowser_fetch_directory_entries(path, browser, &m_romlist, &m_rompathtitle); - } - } - else if (hObjPressed == m_dir_game) - { - filebrowser_new(browser, g_console.default_rom_startup_dir, rarch_console_get_rom_ext()); - filebrowser_fetch_directory_entries(g_console.default_rom_startup_dir, browser, &m_romlist, &m_rompathtitle); - } -#ifdef HAVE_HDD_CACHE_PARTITION - else if (hObjPressed == m_dir_cache) - { - filebrowser_new(browser, "cache:", rarch_console_get_rom_ext()); - filebrowser_fetch_directory_entries("cache:", browser, &m_romlist, &m_rompathtitle); - - if (g_console.info_msg_enable) - rarch_settings_msg(S_MSG_CACHE_PARTITION, S_DELAY_180); - } -#endif - - bHandled = TRUE; + filebrowser_set_root_and_ext(tmp_browser, "cg|CG", "game:\\media\\shaders"); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(tmp_browser, action, &m_shaderlist, &m_shaderpathtitle); return 0; } @@ -714,7 +831,9 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand { convert_wchar_to_char(str_buffer, (const wchar_t *)m_shaderlist.GetText(index), sizeof(str_buffer)); snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(tmp_browser), str_buffer); - filebrowser_fetch_directory_entries(path, tmp_browser, &m_shaderlist, &m_shaderpathtitle); + filebrowser_set_root_and_ext(tmp_browser, "cg|CG", path); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(tmp_browser, action, &m_shaderlist, &m_shaderpathtitle); } } @@ -723,6 +842,19 @@ HRESULT CRetroArchShaderBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHand return 0; } +HRESULT CRetroArchCoreBrowser::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) +{ + GetChildById(L"XuiRomList", &m_romlist); + GetChildById(L"XuiBackButton1", &m_back); + GetChildById(L"XuiTxtRomPath", &m_rompathtitle); + + filebrowser_set_root_and_ext(tmp_browser, "xex|XEX", "game:"); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(tmp_browser, action, &m_romlist, &m_rompathtitle); + + return 0; +} + HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { char path[PATH_MAX]; @@ -739,7 +871,9 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle else if(tmp_browser->current_dir.list->elems[index].attr.b) { snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(tmp_browser), str_buffer); - filebrowser_fetch_directory_entries(path, tmp_browser, &m_romlist, &m_rompathtitle); + filebrowser_set_root_and_ext(tmp_browser, rarch_console_get_rom_ext(), path); + uint64_t action = (1 << RMENU_DEVICE_NAV_B); + filebrowser_fetch_directory_entries(tmp_browser, action, &m_romlist, &m_rompathtitle); } } @@ -747,96 +881,32 @@ HRESULT CRetroArchCoreBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle return 0; } -HRESULT CRetroArchSettings::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) +HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) { - int current_index; - HRESULT hr; + struct retro_system_info info; + retro_get_system_info(&info); + const char *id = info.library_name ? info.library_name : "Unknown"; - if ( hObjPressed == m_settingslist) - { - current_index = m_settingslist.GetCurSel(); + GetChildById(L"XuiLogo", &m_logoimage); + GetChildById(L"XuiBtnRomBrowser", &m_filebrowser); + GetChildById(L"XuiBtnSettings", &m_settings); + GetChildById(L"XuiBtnQuickMenu", &m_quick_menu); + GetChildById(L"XuiBtnControls", &m_controls); + GetChildById(L"XuiBtnQuit", &m_quit); + GetChildById(L"XuiTxtTitle", &m_title); + GetChildById(L"XuiTxtCoreText", &m_core); + GetChildById(L"XuiBtnLibretroCore", &m_change_libretro_core); - switch(current_index) - { - case SETTING_EMU_REWIND_ENABLED: - rarch_settings_change(S_REWIND); - m_settingslist.SetText(SETTING_EMU_REWIND_ENABLED, g_settings.rewind_enable ? L"Rewind: ON" : L"Rewind: OFF"); - - if (g_console.info_msg_enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - break; - case SETTING_EMU_SHOW_INFO_MSG: - g_console.info_msg_enable = !g_console.info_msg_enable; - m_settingslist.SetText(SETTING_EMU_SHOW_INFO_MSG, g_console.info_msg_enable ? L"Info messages: ON" : L"Info messages: OFF"); - break; - case SETTING_EMU_MENUS: - g_console.menus_hd_enable = !g_console.menus_hd_enable; - m_settingslist.SetText(SETTING_EMU_MENUS, g_console.menus_hd_enable ? L"Menus: HD" : L"Menus: SD"); - break; - case SETTING_GAMMA_CORRECTION_ENABLED: - g_console.gamma_correction = g_console.gamma_correction ? 0 : 1; - m_settingslist.SetText(SETTING_GAMMA_CORRECTION_ENABLED, g_console.gamma_correction ? L"Gamma correction: ON" : L"Gamma correction: OFF"); - if(g_console.info_msg_enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - break; - case SETTING_COLOR_FORMAT: - g_console.color_format = !g_console.color_format; - m_settingslist.SetText(SETTING_COLOR_FORMAT, g_console.color_format ? L"Color format: 32bit ARGB" : L"Color format: 16bit RGBA"); - if(g_console.info_msg_enable) - rarch_settings_msg(S_MSG_RESTART_RARCH, S_DELAY_180); - break; - case SETTING_SHADER: - set_shader = 1; - hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); + char core_text[256]; + snprintf(core_text, sizeof(core_text), "%s %s", id, info.library_version); - if (hr < 0) - RARCH_ERR("Failed to load scene.\n"); + convert_char_to_wchar(strw_buffer, core_text, sizeof(strw_buffer)); + m_core.SetText(strw_buffer); + rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_RARCH_VERSION, sizeof(strw_buffer)); + m_title.SetText(strw_buffer); - hCur = app.hShaderBrowser; + g_console.input_loop = INPUT_LOOP_NONE; - if (g_console.info_msg_enable) - rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); - - NavigateForward(app.hShaderBrowser); - break; - case SETTING_SHADER_2: - set_shader = 2; - hr = XuiSceneCreate(g_console.menus_hd_enable ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_shader_browser.xur", NULL, &app.hShaderBrowser); - if (hr < 0) - RARCH_ERR("Failed to load scene.\n"); - - hCur = app.hShaderBrowser; - - if (g_console.info_msg_enable) - rarch_settings_msg(S_MSG_SELECT_SHADER, S_DELAY_180); - - NavigateForward(app.hShaderBrowser); - break; - case SETTING_HW_TEXTURE_FILTER: - g_settings.video.smooth = !g_settings.video.smooth; - m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER, g_settings.video.smooth ? L"Hardware filtering shader #1: Linear interpolation" : L"Hardware filtering shader #1: Point filtering"); - break; - case SETTING_HW_TEXTURE_FILTER_2: - g_settings.video.second_pass_smooth = !g_settings.video.second_pass_smooth; - m_settingslist.SetText(SETTING_HW_TEXTURE_FILTER_2, g_settings.video.second_pass_smooth ? L"Hardware filtering shader #2: Linear interpolation" : L"Hardware filtering shader #2: Point filtering"); - break; - case SETTING_SCALE_ENABLED: - g_console.fbo_enabled = !g_console.fbo_enabled; - m_settingslist.SetText(SETTING_SCALE_ENABLED, g_console.fbo_enabled ? L"Custom Scaling/Dual Shaders: ON" : L"Custom Scaling/Dual Shaders: OFF"); - gfx_ctx_set_fbo(g_console.fbo_enabled); - break; - case SETTING_ZIP_EXTRACT: - if(g_console.zip_extract_mode < ZIP_EXTRACT_TO_CACHE_DIR) - g_console.zip_extract_mode++; - else - g_console.zip_extract_mode = 0; - rarch_settings_create_menu_item_label_w(strw_buffer, S_LBL_ZIP_EXTRACT, sizeof(strw_buffer)); - m_settingslist.SetText(SETTING_ZIP_EXTRACT, strw_buffer); - break; - } - } - - bHandled = TRUE; return 0; } @@ -850,6 +920,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) if ( hObjPressed == m_filebrowser ) { + g_console.input_loop = INPUT_LOOP_FILEBROWSER; hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_filebrowser.xur", NULL, &app.hFileBrowser); if (hr < 0) @@ -1042,6 +1113,15 @@ void menu_loop(void) switch(g_console.input_loop) { + case INPUT_LOOP_FILEBROWSER: + /* + if(((state.Gamepad.wButtons & XINPUT_GAMEPAD_Y) && hCur != app.hMainScene)) + { + uint64_t action = (1 << RMENU_DEVICE_NAV_A); + browser_update(browser, action, rarch_console_get_rom_ext()); + SET_TIMER_EXPIRATION(d3d, 15); + } + */ case INPUT_LOOP_MENU: app.RunFrame(); /* Update XUI */ if((state.Gamepad.wButtons & XINPUT_GAMEPAD_B) && hCur != app.hMainScene) @@ -1066,11 +1146,7 @@ void menu_loop(void) if (message) { - if(IS_TIMER_EXPIRED(d3d)) - { - xdk360_console_format(message); - SET_TIMER_EXPIRATION(d3d, 30); - } + xdk360_console_format(message); xdk360_console_draw(); } diff --git a/360/frontend-xdk/menu.h b/360/frontend-xdk/menu.h index 365a159542..1a0675adac 100644 --- a/360/frontend-xdk/menu.h +++ b/360/frontend-xdk/menu.h @@ -59,8 +59,10 @@ enum enum { + INPUT_LOOP_NONE = 0, INPUT_LOOP_MENU, - INPUT_LOOP_RESIZE_MODE + INPUT_LOOP_RESIZE_MODE, + INPUT_LOOP_FILEBROWSER }; class CRetroArch : public CXuiModule diff --git a/360/xdk_d3d9.cpp b/360/xdk_d3d9.cpp index eccfb50305..bed97c74b2 100644 --- a/360/xdk_d3d9.cpp +++ b/360/xdk_d3d9.cpp @@ -742,11 +742,7 @@ static bool xdk_d3d_frame(void *data, const void *frame, /* XBox 360 specific font code */ if (msg && !menu_enabled) { - if(IS_TIMER_EXPIRED(d3d)) - { - xdk360_console_format(msg); - SET_TIMER_EXPIRATION(d3d, 30); - } + xdk360_console_format(msg); xdk360_console_draw(); }