sdl2-compat: Add Audio/Video Init/Quit (#12)

From 0e06b8cde64f128b19629ba1a3212e53191a7d79 Mon Sep 17 00:00:00 2001
From: Sylvain Becker <[EMAIL REDACTED]>
Date: Wed, 28 Dec 2022 23:05:31 +0100
Subject: [PATCH] Add Audio/Video Init/Quit (#12)

SDL_{Audio,Video}{Init,Quit}() were removed from SDL3
---
 src/sdl2_compat.c | 31 ++++++++++++++++++++++++++++++-
 src/sdl3_syms.h   |  4 ----
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 40f9297..c4470f6 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1275,7 +1275,7 @@ EventFilter3to2(void *userdata, SDL_Event *event3)
     }
 
     /* push new events when we need to convert something, like toplevel SDL3 events generating the SDL2 SDL_WINDOWEVENT. */
-    
+
     switch (event3->type) {
         /* display events moved to the top level in SDL3. */
         case SDL_DISPLAYEVENT_ORIENTATION:
@@ -2781,6 +2781,35 @@ SDL_CreateRenderer(SDL_Window *window, int index, Uint32 flags)
     return SDL3_CreateRenderer(window, name, flags);
 }
 
+DECLSPEC int SDLCALL
+SDL_AudioInit(const char *driver_name)
+{
+    if (driver_name) {
+        SDL3_SetHint("SDL_AUDIO_DRIVER", driver_name);
+    }
+    SDL_InitSubSystem(SDL_INIT_AUDIO);
+}
+
+DECLSPEC void SDLCALL
+SDL_AudioQuit(void)
+{
+    SDL_QuitSubSystem(SDL_INIT_AUDIO);
+}
+
+DECLSPEC int SDLCALL
+SDL_VideoInit(const char *driver_name)
+{
+    if (driver_name) {
+        SDL3_SetHint("SDL_VIDEO_DRIVER", driver_name);
+    }
+    SDL_InitSubSystem(SDL_INIT_VIDEO);
+}
+
+DECLSPEC void SDLCALL
+SDL_VideoQuit(void)
+{
+    SDL_QuitSubSystem(SDL_INIT_VIDEO);
+}
 
 /* SDL3 doesn't have 3dNow. */
 #if defined(__GNUC__) && defined(__i386__)
diff --git a/src/sdl3_syms.h b/src/sdl3_syms.h
index 3f560f1..761d427 100644
--- a/src/sdl3_syms.h
+++ b/src/sdl3_syms.h
@@ -95,8 +95,6 @@ SDL3_SYM_PASSTHROUGH(void*,AtomicSetPtr,(void **a, void *b),(a,b),return)
 SDL3_SYM_PASSTHROUGH(void*,AtomicGetPtr,(void **a),(a),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumAudioDrivers,(void),(),return)
 SDL3_SYM_PASSTHROUGH(const char*,GetAudioDriver,(int a),(a),return)
-SDL3_SYM_PASSTHROUGH(int,AudioInit,(const char *a),(a),return)
-SDL3_SYM_PASSTHROUGH(void,AudioQuit,(void),(),)
 SDL3_SYM_PASSTHROUGH(const char*,GetCurrentAudioDriver,(void),(),return)
 SDL3_SYM_PASSTHROUGH(int,OpenAudio,(SDL_AudioSpec *a, SDL_AudioSpec *b),(a,b),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumAudioDevices,(int a),(a),return)
@@ -506,8 +504,6 @@ SDL3_SYM(void,GetVersion,(SDL_version *a),(a),)
 SDL3_SYM_PASSTHROUGH(const char*,GetRevision,(void),(),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumVideoDrivers,(void),(),return)
 SDL3_SYM_PASSTHROUGH(const char*,GetVideoDriver,(int a),(a),return)
-SDL3_SYM_PASSTHROUGH(int,VideoInit,(const char *a),(a),return)
-SDL3_SYM_PASSTHROUGH(void,VideoQuit,(void),(),)
 SDL3_SYM_PASSTHROUGH(const char*,GetCurrentVideoDriver,(void),(),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumVideoDisplays,(void),(),return)
 SDL3_SYM_PASSTHROUGH(const char*,GetDisplayName,(int a),(a),return)