mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-14 07:34:01 +00:00
Use the Microsoft provided GameInputCreate() function (#15797)
It does better version checking and has better compatibility. This also fixes a crash in GameInputRedist.dll when attempting to load v3 when v2 is installed on the system. In this case, a thread is created in GameInputCreate() which is not cleaned up when the object is released, and can crash later with a NULL pointer dereference.
This commit is contained in:
20
.github/workflows/create-test-plan.py
vendored
20
.github/workflows/create-test-plan.py
vendored
@@ -12,7 +12,6 @@ from typing import Optional
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
WINDOWS_GAMEINPUT_VERSION = "v3.3.195.0 "
|
||||
|
||||
class AppleArch(Enum):
|
||||
Aarch64 = "aarch64"
|
||||
@@ -222,7 +221,8 @@ class JobDetails:
|
||||
msys2_packages: list[str] = dataclasses.field(default_factory=list)
|
||||
cygwin_packages: list[str] = dataclasses.field(default_factory=list)
|
||||
werror: bool = True
|
||||
microsoft_gameinput_version: str = ""
|
||||
microsoft_gameinput: bool = False
|
||||
microsoft_gameinput_arch: str = ""
|
||||
msvc_vcvars_arch: str = ""
|
||||
msvc_vcvars_sdk: str = ""
|
||||
msvc_project: str = ""
|
||||
@@ -293,7 +293,8 @@ class JobDetails:
|
||||
"android-mk": self.android_mk,
|
||||
"werror": self.werror,
|
||||
"sudo": self.sudo,
|
||||
"microsoft-gameinput-version": self.microsoft_gameinput_version,
|
||||
"microsoft-gameinput": self.microsoft_gameinput,
|
||||
"microsoft-gameinput-arch": self.microsoft_gameinput_arch,
|
||||
"msvc-vcvars-arch": self.msvc_vcvars_arch,
|
||||
"msvc-vcvars-sdk": self.msvc_vcvars_sdk,
|
||||
"msvc-project": self.msvc_project,
|
||||
@@ -445,9 +446,14 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool, ctest_args
|
||||
job.setup_libusb_arch = "x86"
|
||||
case MsvcArch.X64:
|
||||
job.setup_libusb_arch = "x64"
|
||||
job.microsoft_gameinput_version = WINDOWS_GAMEINPUT_VERSION
|
||||
job.cflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
job.cxxflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
job.microsoft_gameinput = True
|
||||
match spec.msvc_arch:
|
||||
case MsvcArch.X64:
|
||||
job.microsoft_gameinput_arch = "x64"
|
||||
case MsvcArch.Arm64:
|
||||
job.microsoft_gameinput_arch = "arm64"
|
||||
job.cflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
job.cxxflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
case SdlPlatform.Linux:
|
||||
if spec.name.startswith("Ubuntu"):
|
||||
assert spec.os.value.startswith("ubuntu-")
|
||||
@@ -775,7 +781,7 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool, ctest_args
|
||||
job.msys2_packages.append(f"{msys2_env}-clang-tools-extra")
|
||||
if job.ccache:
|
||||
job.msys2_packages.append(f"{msys2_env}-ccache")
|
||||
job.microsoft_gameinput_version = WINDOWS_GAMEINPUT_VERSION
|
||||
job.microsoft_gameinput = True
|
||||
job.cflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
job.cxxflags.append("-I$GAMEINPUT_INCLUDE")
|
||||
case SdlPlatform.Cygwin:
|
||||
|
||||
13
.github/workflows/generic.yml
vendored
13
.github/workflows/generic.yml
vendored
@@ -173,14 +173,12 @@ jobs:
|
||||
done
|
||||
done
|
||||
- name: 'Set up Microsoft.GameInput headers'
|
||||
if: ${{ matrix.platform.microsoft-gameinput-version != '' }}
|
||||
if: ${{ !!matrix.platform.microsoft-gameinput }}
|
||||
run: |
|
||||
python build-scripts/download-gameinput-headers.py \
|
||||
--version ${{ matrix.platform.microsoft-gameinput-version }} \
|
||||
-o $HOME/gameinput
|
||||
echo "GAMEINPUT_INCLUDE=$(cygpath -w "$HOME/gameinput")" >>$GITHUB_ENV
|
||||
echo "INCLUDE=$INCLUDE;$(cygpath -w "$HOME/gameinput")" >>$GITHUB_ENV
|
||||
|
||||
python build-scripts/download-gameinput-sdk.py -o $HOME/gameinput
|
||||
echo "GAMEINPUT_INCLUDE=$(cygpath -w "$HOME/gameinput/include")" >>$GITHUB_ENV
|
||||
echo "INCLUDE=$(cygpath -w "$HOME/gameinput/include");$INCLUDE" >>$GITHUB_ENV
|
||||
${{ (!!matrix.platform.microsoft-gameinput-arch && format('echo "LIB=$(cygpath -w "$HOME/gameinput/lib/{0}");$LIB" >>$GITHUB_ENV', matrix.platform.microsoft-gameinput-arch)) || '' }}
|
||||
- name: 'Calculate ccache key'
|
||||
if: ${{ matrix.platform.ccache }}
|
||||
id: prepare-restore-ccache
|
||||
@@ -439,6 +437,7 @@ jobs:
|
||||
path: |
|
||||
build/dist/SDL3*
|
||||
build/include*
|
||||
build/CMakeFiles/CMakeConfigureLog.yaml
|
||||
- name: 'Upload minidumps'
|
||||
uses: actions/upload-artifact@v7
|
||||
continue-on-error: true
|
||||
|
||||
Reference in New Issue
Block a user