sdl2-compat: Include the logical scale in SDL_RenderGetScale()

From 6fc30160fcdcee0155388683d687e365c78d037f Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 16 Feb 2025 08:27:34 -0800
Subject: [PATCH] Include the logical scale in SDL_RenderGetScale()

---
 src/sdl2_compat.c | 13 +++++++++++++
 src/sdl3_syms.h   |  1 +
 2 files changed, 14 insertions(+)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index c9f4f4d..bedcda8 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -5028,7 +5028,20 @@ SDL_RenderGetClipRect(SDL_Renderer *renderer, SDL_Rect *rect)
 SDL_DECLSPEC void SDLCALL
 SDL_RenderGetScale(SDL_Renderer *renderer, float *scaleX, float *scaleY)
 {
+    int w = 0, h = 0;
+    SDL_FRect rect;
+
     SDL3_GetRenderScale(renderer, scaleX, scaleY);
+
+    /* Include the logical scale */
+    SDL3_GetRenderLogicalPresentation(renderer, &w, &h, NULL);
+    SDL3_GetRenderLogicalPresentationRect(renderer, &rect);
+    if (scaleX && w > 0) {
+        *scaleX *= rect.w / w;
+    }
+    if (scaleY && h > 0) {
+        *scaleY *= rect.h / h;
+    }
 }
 
 SDL_DECLSPEC void SDLCALL
diff --git a/src/sdl3_syms.h b/src/sdl3_syms.h
index d9cc83e..b129320 100644
--- a/src/sdl3_syms.h
+++ b/src/sdl3_syms.h
@@ -358,6 +358,7 @@ SDL3_SYM_PASSTHROUGH_RETCODE(bool,GetRenderDrawBlendMode,(SDL_Renderer *a, SDL_B
 SDL3_SYM_PASSTHROUGH_RETCODE(bool,GetRenderDrawColor,(SDL_Renderer *a, Uint8 *b, Uint8 *c, Uint8 *d, Uint8 *e),(a,b,c,d,e),return)
 SDL3_SYM(const char *,GetRenderDriver,(int a),(a),return);
 SDL3_SYM(bool,GetRenderLogicalPresentation,(SDL_Renderer *a, int *b, int *c, SDL_RendererLogicalPresentation *d),(a,b,c,d),return)
+SDL3_SYM(bool,GetRenderLogicalPresentationRect,(SDL_Renderer *a, SDL_FRect *b),(a,b),return)
 SDL3_SYM(bool,GetRenderScale,(SDL_Renderer *a, float *b, float *c),(a,b,c),return)
 SDL3_SYM_PASSTHROUGH(SDL_Texture*,GetRenderTarget,(SDL_Renderer *a),(a),return)
 SDL3_SYM(bool,GetRenderViewport,(SDL_Renderer *a, SDL_Rect *b),(a,b),return)