From 49fbdd4c41fe3417d0bf2edd5d21da4d2e658c09 Mon Sep 17 00:00:00 2001 From: scawful Date: Wed, 31 Jul 2024 11:28:09 -0400 Subject: [PATCH] shutdown based on platform, update accessors for editors --- src/app/core/controller.cc | 15 +++++++++++++-- src/app/core/controller.h | 2 ++ src/app/editor/master_editor.cc | 2 -- src/app/editor/master_editor.h | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/app/core/controller.cc b/src/app/core/controller.cc index c4de4689..a7e2fdf7 100644 --- a/src/app/core/controller.cc +++ b/src/app/core/controller.cc @@ -358,8 +358,19 @@ void Controller::OnExit() { SDL_CloseAudioDevice(audio_device_); delete audio_buffer_; } - ImGui_ImplSDLRenderer2_Shutdown(); - ImGui_ImplSDL2_Shutdown(); + switch (platform_) { + case Platform::kMacOS: + case Platform::kWindows: + case Platform::kLinux: + ImGui_ImplSDLRenderer2_Shutdown(); + ImGui_ImplSDL2_Shutdown(); + break; + case Platform::kiOS: + // Deferred + break; + default: + break; + } ImGui::DestroyContext(); SDL_Quit(); } diff --git a/src/app/core/controller.h b/src/app/core/controller.h index 946454b1..57369b68 100644 --- a/src/app/core/controller.h +++ b/src/app/core/controller.h @@ -40,6 +40,8 @@ class Controller : public ExperimentFlags { void DoRender() const; void OnExit(); + auto master_editor() -> editor::MasterEditor & { return master_editor_; } + private: struct sdl_deleter { void operator()(SDL_Window *p) const { diff --git a/src/app/editor/master_editor.cc b/src/app/editor/master_editor.cc index ab5418fe..94bce89d 100644 --- a/src/app/editor/master_editor.cc +++ b/src/app/editor/master_editor.cc @@ -87,8 +87,6 @@ absl::Status MasterEditor::Update() { ManageActiveEditors(); - End(); - return absl::OkStatus(); } diff --git a/src/app/editor/master_editor.h b/src/app/editor/master_editor.h index 28d26fbd..cc5e495f 100644 --- a/src/app/editor/master_editor.h +++ b/src/app/editor/master_editor.h @@ -75,6 +75,7 @@ class MasterEditor : public SharedRom, auto emulator() -> emu::Emulator& { return emulator_; } auto quit() { return quit_; } + auto overworld_editor() -> OverworldEditor& { return overworld_editor_; } private: void ManageActiveEditors();