sdl2-compat: Remove SDL_Linked_Version from 1.2, implement SDL_GetVersion from SDL2.

From 64c2f902d4b57892e34b63562ae78bcd76b6deaa Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Fri, 25 Nov 2022 16:30:38 -0500
Subject: [PATCH] Remove SDL_Linked_Version from 1.2, implement SDL_GetVersion
 from SDL2.

---
 src/sdl2_compat.c | 18 +++++++++++++-----
 src/sdl3_syms.h   |  2 +-
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 5c52e34..d716573 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -471,12 +471,20 @@ BOOL WINAPI _DllMainCRTStartup(HANDLE dllhandle, DWORD reason, LPVOID reserved)
     #error Please define an init procedure for your platform.
 #endif
 
-
-DECLSPEC const SDL_version * SDLCALL
-SDL_Linked_Version(void)
+/* obviously we have to override this so we don't report ourselves as SDL3. */
+DECLSPEC void SDLCALL
+SDL_GetVersion(SDL_version * ver)
 {
-    static const SDL_version version = { 2, SDL2_COMPAT_VERSION_MINOR, SDL2_COMPAT_VERSION_PATCH };
-    return &version;
+    if (ver) {
+        ver->major = 2;
+        ver->minor = SDL2_COMPAT_VERSION_MINOR;
+        ver->patch = SDL2_COMPAT_VERSION_PATCH;
+        if (SDL_GetHintBoolean("SDL_LEGACY_VERSION", SDL_FALSE)) {
+            /* Prior to SDL 2.24.0, the patch version was incremented with every release */
+            ver->patch = ver->minor;
+            ver->minor = 0;
+        }
+    }
 }
 
 DECLSPEC int SDLCALL
diff --git a/src/sdl3_syms.h b/src/sdl3_syms.h
index ef53851..64e1a48 100644
--- a/src/sdl3_syms.h
+++ b/src/sdl3_syms.h
@@ -526,7 +526,7 @@ SDL3_SYM_PASSTHROUGH(int,GetNumTouchDevices,(void),(),return)
 SDL3_SYM_PASSTHROUGH(SDL_TouchID,GetTouchDevice,(int a),(a),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumTouchFingers,(SDL_TouchID a),(a),return)
 SDL3_SYM_PASSTHROUGH(SDL_Finger*,GetTouchFinger,(SDL_TouchID a, int b),(a,b),return)
-SDL3_SYM_PASSTHROUGH(void,GetVersion,(SDL_version *a),(a),)
+SDL3_SYM(void,GetVersion,(SDL_version *a),(a),)
 SDL3_SYM_PASSTHROUGH(const char*,GetRevision,(void),(),return)
 SDL3_SYM_PASSTHROUGH(int,GetRevisionNumber,(void),(),return)
 SDL3_SYM_PASSTHROUGH(int,GetNumVideoDrivers,(void),(),return)