Fix mouse coordinates being wrong on HiDPI displays

When writing the initial stretch mode code, the existence of HiDPI
displays completely slipped my mind -- or at least I didn't realize
that they'd be a problem.

We implement scaling modes ourselves, so transforming the mouse
coordinates to our 320x240 viewport is done manually. Unfortunately,
that code did not take into account HiDPI scaling whatsoever, meaning
that all of the math which assumes the window size and the renderer
size is wrong.

To fix this, we use `SDL_GetWindowSizeInPixels` and `SDL_GetWindow` to
find the scaling factor, and then apply that to the mouse coordinates
to get the mouse coordinates in the pixel-space instead, and then we do
all of our normal logic after.

Due to our usage of `SDL_GetWindowSizeInPixels`, this bumps the minimum
SDL version to 2.26.0.

Closes #1235.
This commit is contained in:
NyakoFox
2025-05-03 15:29:24 -03:00
committed by Ethan Lee
parent 1de2078014
commit 0e31253876
2 changed files with 15 additions and 3 deletions

View File

@@ -101,7 +101,7 @@ jobs:
runs-on: windows-latest
env:
SDL_VERSION: 2.24.0
SDL_VERSION: 2.26.0
steps:
- uses: actions/checkout@v1