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:
@@ -196,9 +196,19 @@ absl::Status HandleEvents(Window& window) {
|
|||||||
window.active_ = false;
|
window.active_ = false;
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
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.x = static_cast<float>(event.window.data1);
|
||||||
io.DisplaySize.y = static_cast<float>(event.window.data2);
|
io.DisplaySize.y = static_cast<float>(event.window.data2);
|
||||||
break;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,9 @@ using ImGui::TableNextColumn;
|
|||||||
using ImGui::Text;
|
using ImGui::Text;
|
||||||
|
|
||||||
Emulator::~Emulator() {
|
Emulator::~Emulator() {
|
||||||
Cleanup();
|
// Don't call Cleanup() in destructor - renderer is already destroyed
|
||||||
|
// Just stop emulation
|
||||||
|
running_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Emulator::Cleanup() {
|
void Emulator::Cleanup() {
|
||||||
|
|||||||
Reference in New Issue
Block a user