From 2edeb9f50d2877babb4c045e76de712505c89264 Mon Sep 17 00:00:00 2001 From: scawful Date: Tue, 7 Oct 2025 18:21:12 -0400 Subject: [PATCH] fix: Update Window Event Handling and Emulator Destructor Logic - Added handling for SDL_WINDOWEVENT_RESIZED, SDL_WINDOWEVENT_MINIMIZED, SDL_WINDOWEVENT_HIDDEN, SDL_WINDOWEVENT_RESTORED, and SDL_WINDOWEVENT_SHOWN in the window event processing to improve rendering behavior during window state changes. - Modified the Emulator destructor to stop emulation without calling Cleanup(), as the renderer is already destroyed, ensuring proper shutdown behavior. --- src/app/core/window.cc | 10 ++++++++++ src/app/emu/emulator.cc | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app/core/window.cc b/src/app/core/window.cc index 595115a3..43295d58 100644 --- a/src/app/core/window.cc +++ b/src/app/core/window.cc @@ -196,9 +196,19 @@ absl::Status HandleEvents(Window& window) { window.active_ = false; break; case SDL_WINDOWEVENT_SIZE_CHANGED: + case SDL_WINDOWEVENT_RESIZED: + // Update display size for both resize and size_changed events io.DisplaySize.x = static_cast(event.window.data1); io.DisplaySize.y = static_cast(event.window.data2); break; + case SDL_WINDOWEVENT_MINIMIZED: + case SDL_WINDOWEVENT_HIDDEN: + // Window is minimized/hidden - nothing to render + break; + case SDL_WINDOWEVENT_RESTORED: + case SDL_WINDOWEVENT_SHOWN: + // Window is restored - resume normal operation + break; } break; } diff --git a/src/app/emu/emulator.cc b/src/app/emu/emulator.cc index ca355b1b..ce299f9d 100644 --- a/src/app/emu/emulator.cc +++ b/src/app/emu/emulator.cc @@ -50,7 +50,9 @@ using ImGui::TableNextColumn; using ImGui::Text; Emulator::~Emulator() { - Cleanup(); + // Don't call Cleanup() in destructor - renderer is already destroyed + // Just stop emulation + running_ = false; } void Emulator::Cleanup() {