sdl2-compat: event: Drop PIXEL_SIZE_CHANGED events if the window is hidden.

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);