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)