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)