MRFIXIT: Add the option to exit the emulator completely from the pause screen Fewtarius: Update for 351ELEC --- a/UI/PauseScreen.h +++ b/UI/PauseScreen.h @@ -40,6 +40,7 @@ private: UI::EventReturn OnGameSettings(UI::EventParams &e); UI::EventReturn OnExitToMenu(UI::EventParams &e); + UI::EventReturn OnExitToBatocera(UI::EventParams &e); UI::EventReturn OnReportFeedback(UI::EventParams &e); UI::EventReturn OnRewind(UI::EventParams &e); --- a/UI/PauseScreen.cpp +++ b/UI/PauseScreen.cpp @@ -386,6 +386,8 @@ rightColumnItems->Add(new Choice(mm->T("Exit")))->OnClick.Handle(this, &GamePauseScreen::OnExitToMenu); } else { rightColumnItems->Add(new Choice(pa->T("Exit to menu")))->OnClick.Handle(this, &GamePauseScreen::OnExitToMenu); + rightColumnItems->Add(new Spacer(25.0)); + rightColumnItems->Add(new Choice(pa->T("Exit to JELOS")))->OnClick.Handle(this, &GamePauseScreen::OnExitToBatocera); } } @@ -437,6 +439,31 @@ return UI::EVENT_DONE; } +UI::EventReturn GamePauseScreen::OnExitToBatocera(UI::EventParams &e) { + if (g_Config.bPauseMenuExitsEmulator) { + System_SendMessage("finish", ""); + } else { + TriggerFinish(DR_OK); + } + + System_SendMessage("event", "exitprogram"); + + // Request the framework to exit cleanly. + System_SendMessage("finish", ""); + + // However, let's make sure the config was saved, since it may not have been. + g_Config.Save("MainScreen::OnExit"); + +#ifdef __ANDROID__ +#ifdef ANDROID_NDK_PROFILER + moncleanup(); +#endif +#endif + + UpdateUIState(UISTATE_EXIT); + return UI::EVENT_DONE; +} + UI::EventReturn GamePauseScreen::OnReportFeedback(UI::EventParams &e) { screenManager()->push(new ReportScreen(gamePath_)); return UI::EVENT_DONE;