From 08c94848579fb03885498a9f6653c74a296f3bcf Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Mon, 12 Jun 2023 17:15:43 +0200 Subject: [PATCH] move done variable into window class --- src/backend/Core.hpp | 1 - src/frontend/App.cpp | 31 ++++++++++++++++--------------- src/frontend/imgui/Window.cpp | 6 +++--- src/frontend/imgui/Window.hpp | 3 ++- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/backend/Core.hpp b/src/backend/Core.hpp index cba40a8c..83955f6a 100644 --- a/src/backend/Core.hpp +++ b/src/backend/Core.hpp @@ -21,7 +21,6 @@ struct Core { bool pause = true; int cycles = 0; bool romLoaded = false; - bool done = false; std::string rom; Interpreter* cpu = nullptr; }; diff --git a/src/frontend/App.cpp b/src/frontend/App.cpp index 115a722a..46464e0a 100644 --- a/src/frontend/App.cpp +++ b/src/frontend/App.cpp @@ -11,7 +11,7 @@ void App::Run() { SDL_EventState(SDL_DROPFILE, SDL_ENABLE); n64::SI& si = core.cpu->mem.mmio.si; - while (!core.done) { + while (!window.done) { if(core.romLoaded) { if(!core.pause) { core.Run(window.settings.GetVolumeL(), window.settings.GetVolumeR()); @@ -26,10 +26,10 @@ void App::Run() { ImGui_ImplSDL2_ProcessEvent(&event); switch(event.type) { case SDL_QUIT: - core.done = true; + window.done = true; break; case SDL_WINDOWEVENT: - core.done = window.gotClosed(event); + window.onClose(event); break; case SDL_CONTROLLERDEVICEADDED: { const int index = event.cdevice.which; @@ -46,24 +46,25 @@ void App::Run() { si.pif.gamepadConnected = false; break; case SDL_KEYDOWN: - switch(event.key.keysym.sym) { + switch (event.key.keysym.sym) { case SDLK_o: { - nfdchar_t* outpath; - const nfdu8filteritem_t filter {"Nintendo 64 roms/archives", "n64,z64,v64,N64,Z64,V64,zip,tar,rar,7z"}; + nfdchar_t *outpath; + const nfdu8filteritem_t filter{"Nintendo 64 roms/archives", "n64,z64,v64,N64,Z64,V64,zip,tar,rar,7z"}; nfdresult_t result = NFD_OpenDialog(&outpath, &filter, 1, nullptr); - if(result == NFD_OKAY) { + if (result == NFD_OKAY) { LoadROM(outpath); NFD_FreePath(outpath); } } break; - } break; - case SDL_DROPFILE: { - char* droppedDir = event.drop.file; - if(droppedDir) { - LoadROM(droppedDir); - free(droppedDir); - } - } break; + } + break; + case SDL_DROPFILE: { + char *droppedDir = event.drop.file; + if (droppedDir) { + LoadROM(droppedDir); + free(droppedDir); + } + } break; } } } diff --git a/src/frontend/imgui/Window.cpp b/src/frontend/imgui/Window.cpp index f2692296..f101327a 100644 --- a/src/frontend/imgui/Window.cpp +++ b/src/frontend/imgui/Window.cpp @@ -16,8 +16,8 @@ Window::Window(n64::Core& core) : settings() { NFD::Init(); } -[[nodiscard]] bool Window::gotClosed(SDL_Event event) { - return event.window.event == SDL_WINDOWEVENT_CLOSE +void Window::onClose(SDL_Event event) { + done = event.window.event == SDL_WINDOWEVENT_CLOSE && event.window.windowID == SDL_GetWindowID(window); } @@ -190,7 +190,7 @@ void Window::RenderMainMenuBar(n64::Core &core) { core.cpu->mem.DumpDMEM(); } if (ImGui::MenuItem("Exit")) { - core.done = true; + done = true; } ImGui::EndMenu(); } diff --git a/src/frontend/imgui/Window.hpp b/src/frontend/imgui/Window.hpp index 429c0817..29d455df 100644 --- a/src/frontend/imgui/Window.hpp +++ b/src/frontend/imgui/Window.hpp @@ -12,10 +12,11 @@ struct Window { ~Window(); ImDrawData* Present(n64::Core& core); - [[nodiscard]] bool gotClosed(SDL_Event event); + void onClose(SDL_Event event); ImFont *uiFont{}; Settings settings; void LoadROM(n64::Core& core, const std::string& path); + bool done = false; private: bool showSettings = false; SDL_Window* window{};