diff --git a/vita3k/android/jni/main_android.cpp b/vita3k/android/jni/main_android.cpp index 39af4c337..4776795b0 100644 --- a/vita3k/android/jni/main_android.cpp +++ b/vita3k/android/jni/main_android.cpp @@ -386,9 +386,6 @@ SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]) { if (gl_context) SDL_GL_MakeCurrent(window, nullptr); }, .after_render_thread_start = {}, - .before_renderer_cleanup = [window, gl_context]() { - if (gl_context) - SDL_GL_MakeCurrent(window, gl_context); }, .destroy_render_context = [&gl_context]() { if (!gl_context) return; diff --git a/vita3k/app/include/app/functions.h b/vita3k/app/include/app/functions.h index 2864510c0..8712f4ec4 100644 --- a/vita3k/app/include/app/functions.h +++ b/vita3k/app/include/app/functions.h @@ -68,7 +68,8 @@ enum class AppRunType { void init_paths(Root &root_paths); bool init(EmuEnvState &state, Config &cfg, const Root &root_paths); -void deinit(EmuEnvState &state); +void shutdown_app_runtime(EmuEnvState &state); +void reset_app_state(EmuEnvState &state); bool late_init(EmuEnvState &state); void apply_renderer_config(EmuEnvState &emuenv); void apply_runtime_settings(EmuEnvState &emuenv); diff --git a/vita3k/app/include/app/session_controller.h b/vita3k/app/include/app/session_controller.h index 22c13d624..1896fd1e2 100644 --- a/vita3k/app/include/app/session_controller.h +++ b/vita3k/app/include/app/session_controller.h @@ -51,7 +51,6 @@ struct AppSessionPlatform { renderer::WindowCallbacks window_callbacks; std::function before_render_thread_start; std::function after_render_thread_start; - std::function before_renderer_cleanup; std::function destroy_render_context; }; diff --git a/vita3k/app/src/app_init.cpp b/vita3k/app/src/app_init.cpp index 19afabdde..3afe04978 100644 --- a/vita3k/app/src/app_init.cpp +++ b/vita3k/app/src/app_init.cpp @@ -429,16 +429,10 @@ bool init(EmuEnvState &state, Config &cfg, const Root &root_paths) { return true; } -void deinit(EmuEnvState &state) { +void shutdown_app_runtime(EmuEnvState &state) { state.audio.stop_all_ports(); - state.display.abort = true; - state.renderer->notification_ready.notify_all(); - - state.gxm.display_queue.abort(); - - state.renderer->render_abort = true; - state.renderer->command_finish_one.notify_all(); + gxm::shutdown(state); state.net.abort_all(); state.http.shutdown_connections(); @@ -494,12 +488,14 @@ void deinit(EmuEnvState &state) { state.kernel.deinit(state.mem); - app::reset_perf_metrics(state); - state.renderer->cleanup(); state.renderer.reset(); deinit_mem(state.mem); +} + +void reset_app_state(EmuEnvState &state) { + app::reset_perf_metrics(state); state.app_path.clear(); state.current_app_title.clear(); @@ -511,6 +507,7 @@ void deinit(EmuEnvState &state) { state.clear_app_launch_request(); state.ctrl.reset_runtime(); + set_current_config(state, ""); #if USE_DISCORD if (state.cfg.discord_rich_presence) diff --git a/vita3k/app/src/session_controller.cpp b/vita3k/app/src/session_controller.cpp index 831547ffe..7164bcded 100644 --- a/vita3k/app/src/session_controller.cpp +++ b/vita3k/app/src/session_controller.cpp @@ -21,6 +21,7 @@ #include