From eab705ef05a02f7bd71b537929f223361b375a20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Sun, 13 Oct 2024 13:00:01 -0400
Subject: [PATCH] Quit video subsystem from video thread.

Some SDL targets (like Haiku) have issues doing video calls from
threads other than the video thread.
---
 src/conio/sdl_con.c  | 6 +++++-
 src/syncterm/CHANGES | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 38493d1df3..6eee6e9947 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -1036,8 +1036,10 @@ void sdl_video_event_thread(void *data)
 				else {
 					if (sdl_init_good)
 						sdl_add_key(CIO_KEY_QUIT, &cvstat);
-					else
+					else {
+						sdl.QuitSubSystem(SDL_INIT_VIDEO);
 						return;
+					}
 				}
 				break;
 			case SDL_WINDOWEVENT:
@@ -1076,6 +1078,7 @@ void sdl_video_event_thread(void *data)
 						sdl_ufunc_retval=0;
 						if (ciolib_reaper)
 							exit(0);
+						sdl.QuitSubSystem(SDL_INIT_VIDEO);
 						sem_post(&sdl_ufunc_ret);
 						return;
 					case SDL_USEREVENT_FLUSH:
@@ -1285,6 +1288,7 @@ void sdl_video_event_thread(void *data)
 				break;
 		}
 	}
+	sdl.QuitSubSystem(SDL_INIT_VIDEO);
 	return;
 }
 
diff --git a/src/syncterm/CHANGES b/src/syncterm/CHANGES
index 14ad19388b..8b333bf93f 100644
--- a/src/syncterm/CHANGES
+++ b/src/syncterm/CHANGES
@@ -1,6 +1,7 @@
 Version 1.2rc3
 --------------
 Get Haiku support building again
+Properly quit video subsystem from video thread - fixes Haiku crash
 
 Version 1.2rc2
 --------------
-- 
GitLab