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.
This commit is contained in:
scawful
2025-10-07 18:21:12 -04:00
parent defc99b571
commit 2edeb9f50d
2 changed files with 13 additions and 1 deletions

View File

@@ -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<float>(event.window.data1);
io.DisplaySize.y = static_cast<float>(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;
}

View File

@@ -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() {