From 6d19b02520588ed613ee47d3216b35068b2498f0 Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Thu, 9 Feb 2023 09:25:44 +0100
Subject: [PATCH] Add SDL_GetDisplayDPI
---
src/sdl2_compat.c | 24 ++++++++++++++++++++++--
src/sdl3_syms.h | 1 -
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index e3e843d..1a9f8a7 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -3539,8 +3539,28 @@ SDL_GetNumDisplayModes(int displayIndex)
DECLSPEC int SDLCALL
SDL_GetDisplayDPI(int displayIndex, float *ddpi, float *hdpi, float *vdpi)
{
- SDL_DisplayID displayID = Display_IndexToID(displayIndex);
- return SDL3_GetDisplayPhysicalDPI(displayID, ddpi, hdpi, vdpi);
+ const SDL_DisplayMode *dp = SDL3_GetDesktopDisplayMode(Display_IndexToID(displayIndex));
+ float val;
+ if (dp == NULL) {
+ return -1;
+ }
+
+#if defined(__ANDROID__) || defined(__IOS__)
+ val = dp->display_scale * 160.0f;
+#else
+ val = dp->display_scale * 96.0f;
+#endif
+
+ if (hdpi) {
+ *hdpi = val;
+ }
+ if (vdpi) {
+ *vdpi = val;
+ }
+ if (ddpi) {
+ *ddpi = val;
+ }
+ return 0;
}
DECLSPEC int SDLCALL
diff --git a/src/sdl3_syms.h b/src/sdl3_syms.h
index 0e466ed..a20aa4f 100644
--- a/src/sdl3_syms.h
+++ b/src/sdl3_syms.h
@@ -561,7 +561,6 @@ SDL3_SYM_PASSTHROUGH(SDL_Window*,GetGrabbedWindow,(void),(),return)
#if defined(__WIN32__) || defined(__GDK__)
SDL3_SYM_PASSTHROUGH(void,SetWindowsMessageHook,(SDL_WindowsMessageHook a, void *b),(a,b),)
#endif
-SDL3_SYM(int,GetDisplayPhysicalDPI,(SDL_DisplayID, float *b, float *c, float *d),(a,b,c,d),return)
SDL3_SYM_RENAMED(SDL_JoystickPowerLevel,JoystickCurrentPowerLevel,GetJoystickPowerLevel,(SDL_Joystick *a),(a),return)
SDL3_SYM_RENAMED(SDL_GameController*,GameControllerFromInstanceID,GetGamepadFromInstanceID,(SDL_JoystickID a),(a),return)
SDL3_SYM_RENAMED(SDL_Joystick*,JoystickFromInstanceID,GetJoystickFromInstanceID,(SDL_JoystickID a),(a),return)