diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 38493d1df385afc898d78b91c0c702b6dd6338f0..6eee6e994728dfe467cb9247927cabbc5e016fb3 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 14ad19388ba969b34866cddb678fead07dfbdea6..8b333bf93ff112039628d64f080a43a8963a9310 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
 --------------