SDL: cocoa: Refuse to SDL_Init(SDL_INIT_VIDEO) from background thread.

From 2b744c7df3bb4da133c7bd69df0bc0cf1846e7af Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Wed, 20 Nov 2024 20:22:36 -0500
Subject: [PATCH] cocoa: Refuse to SDL_Init(SDL_INIT_VIDEO) from background
 thread.

Fixes #11437.
Reference PR #11502.
---
 src/video/cocoa/SDL_cocoavideo.m | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m
index 93b9153171d05..c2c0bb3be03db 100644
--- a/src/video/cocoa/SDL_cocoavideo.m
+++ b/src/video/cocoa/SDL_cocoavideo.m
@@ -63,6 +63,10 @@ static void Cocoa_DeleteDevice(SDL_VideoDevice *device)
         SDL_VideoDevice *device;
         SDL_CocoaVideoData *data;
 
+        if (![NSThread isMainThread]) {
+            return NULL;  // this doesn't SDL_SetError() because SDL_VideoInit is just going to overwrite it.
+        }
+
         Cocoa_RegisterApp();
 
         // Initialize all variables that we clean on shutdown