SDL: Don't apply SDL_HINT_MOUSE_DPI_SCALE_CURSORS on Wayland

From c2710bd4e8f00cb4738a16c5c4f7da15c55b277a Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Wed, 10 Dec 2025 14:23:35 -0500
Subject: [PATCH] Don't apply SDL_HINT_MOUSE_DPI_SCALE_CURSORS on Wayland

Wayland cursors are surfaces sized in scaled points, so this hint wouldn't change the size, just prevent larger backbuffers from being used to draw sharper scaled cursors.
---
 src/video/wayland/SDL_waylandmouse.c | 21 ++++-----------------
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c
index 2d97266347138..1801924897ef5 100644
--- a/src/video/wayland/SDL_waylandmouse.c
+++ b/src/video/wayland/SDL_waylandmouse.c
@@ -1025,21 +1025,6 @@ typedef struct Wayland_PointerObject
     bool is_pointer;
 } Wayland_PointerObject;
 
-static float Wayland_GetCursorScale(SDL_WindowData *focus)
-{
-    SDL_VideoData *viddata = SDL_GetVideoDevice()->internal;
-
-    if (!SDL_GetHintBoolean(SDL_HINT_MOUSE_DPI_SCALE_CURSORS, false)) {
-        return 1.0f;
-    }
-
-    // If viewports aren't available, the scale is always 1.0.
-    if (viddata->viewporter && focus) {
-        return (float)focus->scale_factor;
-    }
-    return 1.0f;
-}
-
 static void Wayland_CursorStateSetCursor(SDL_WaylandCursorState *state, const Wayland_PointerObject *obj, SDL_WindowData *focus, Uint32 serial, SDL_Cursor *cursor)
 {
     SDL_VideoData *viddata = SDL_GetVideoDevice()->internal;
@@ -1094,14 +1079,16 @@ static void Wayland_CursorStateSetCursor(SDL_WaylandCursorState *state, const Wa
                 return;
             }
 
-            state->scale = Wayland_GetCursorScale(focus);
+            // If viewports aren't available, the scale is always 1.0.
+            state->scale = viddata->viewporter && focus ? focus->scale_factor : 1.0;
             if (!Wayland_GetSystemCursor(cursor_data, state, &dst_width, &hot_x, &hot_y)) {
                 return;
             }
 
             dst_height = dst_width;
         } else {
-            state->scale = Wayland_GetCursorScale(focus);
+            // If viewports aren't available, the scale is always 1.0.
+            state->scale = viddata->viewporter && focus ? focus->scale_factor : 1.0;
             dst_width = cursor_data->cursor_data.custom.width;
             dst_height = cursor_data->cursor_data.custom.height;
             hot_x = cursor_data->cursor_data.custom.hot_x;