From 0ff6b3cd77defebfa7878179f063ba37d514f574 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Fri, 31 Jan 2025 12:28:37 -0500
Subject: [PATCH] event: Drop PIXEL_SIZE_CHANGED events if the window is
hidden.
Fixes #268.
---
src/sdl2_compat.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 0b5a5fe..ae73970 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1700,6 +1700,14 @@ EventFilter3to2(void *userdata, SDL_Event *event3)
case SDL_EVENT_WINDOW_DISPLAY_CHANGED:
if (SDL3_EventEnabled(SDL2_WINDOWEVENT)) {
+ /* initial releases of SDL3 accidentally send these events to hidden windows, which breaks ffplay. Filter it out if necessary. */
+ if (event3->type == SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED) {
+ SDL_Window *window = SDL3_GetWindowFromID(event3->window.windowID);
+ if (window && (SDL3_GetWindowFlags(window) & SDL_WINDOW_HIDDEN)) {
+ post_event = false;
+ break; /* drop it. */
+ }
+ }
event2.window.type = SDL2_WINDOWEVENT;
event2.window.timestamp = (Uint32) SDL_NS_TO_MS(event3->window.timestamp);