Files
VVVVVV/.github/workflows/ci.yml
NyakoFox 0e31253876 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.
2025-05-03 15:15:03 -04:00

173 lines
4.7 KiB
YAML

name: CI
# Only trigger workflow when code changes, or this file is changed.
# Android has a different workflow and different rules.
on:
push:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- "third_party/**"
- ".github/workflows/ci.yml"
pull_request:
paths:
- "desktop_version/CMakeLists.txt"
- "desktop_version/src/**.cpp"
- "desktop_version/src/**.c"
- "desktop_version/src/**.h"
- "third_party/**"
- ".github/workflows/ci.yml"
env:
SRC_DIR_PATH: desktop_version
jobs:
build-mac:
name: Build (macos-latest)
runs-on: macos-latest
env:
CXXFLAGS: -I/usr/local/include/SDL2
LDFLAGS: -L/usr/local/lib
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Install dependencies
run: brew install ninja sdl2
- name: CMake configure (default version)
run: |
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake -GNinja ..
- name: Build (default version)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: ninja -C ${SRC_DIR_PATH}/build
build-lin:
name: Build (Steam Linux Runtime Sniper)
runs-on: ubuntu-latest
container: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:beta
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: CMake configure (default version)
run: |
mkdir ${SRC_DIR_PATH}/build && cd ${SRC_DIR_PATH}/build
cmake -G Ninja ..
- name: Build (default version)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (official)
run: |
cd ${SRC_DIR_PATH}/build
cmake -G Ninja -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: ninja -C ${SRC_DIR_PATH}/build
- name: CMake configure (M&P)
run: |
cd ${SRC_DIR_PATH}/build
cmake -G Ninja -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: ninja -C ${SRC_DIR_PATH}/build
build-win:
name: Build (windows-latest)
runs-on: windows-latest
env:
SDL_VERSION: 2.26.0
steps:
- uses: actions/checkout@v1
with:
submodules: true
- name: Cache SDL
id: cache-windows-sdl
uses: actions/cache@v3
env:
cache-name: cache-sdl
with:
path: C:\SDL2-*
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ env.SDL_VERSION }}
- if: ${{ steps.cache-windows-sdl.outputs.cache-hit != 'true' }}
name: Download SDL if not cached
run: |
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -OutFile C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
- name: Cache build folder for this CMakeLists.txt
id: cache-windows-build-folder
uses: actions/cache@v3
env:
cache-name: cache-windows-build-folder-VS2022
with:
path: |
desktop_version/build
desktop_version/CMakeLists.txt
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('desktop_version/CMakeLists.txt') }}-SDL${{ env.SDL_VERSION }}
- if: ${{ steps.cache-windows-build-folder.outputs.cache-hit != 'true' }}
name: CMake initial configure/generate
run: |
mkdir $env:SRC_DIR_PATH/build
cd $env:SRC_DIR_PATH/build
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
cmake -G "Visual Studio 17 2022" -A Win32 `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main" ..
- name: CMake configure (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake ..
- name: Build (default version)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=ON ..
- name: Build (official)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .
- name: CMake configure (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake -DOFFICIAL_BUILD=OFF -DMAKEANDPLAY=ON ..
- name: Build (M&P)
run: |
cd $env:SRC_DIR_PATH/build
cmake --build .