Compare commits
208
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba2f78a006 | ||
|
|
dcbdf09709 | ||
|
|
a9b11980d2 | ||
|
|
906d0e9c03 | ||
|
|
0952ab1ab9 | ||
|
|
7635776ca4 | ||
|
|
76a3457ad5 | ||
|
|
881c4cb49e | ||
|
|
0406d1c316 | ||
|
|
1ca76a29d9 | ||
|
|
e53df5b07e | ||
|
|
e7a47e783b | ||
|
|
279eb89ce5 | ||
|
|
fe9020dcb8 | ||
|
|
4927836b2d | ||
|
|
5a072d38db | ||
|
|
2d1ebf4850 | ||
|
|
44ec2027f3 | ||
|
|
000da98663 | ||
|
|
87ba287f81 | ||
|
|
d133701a72 | ||
|
|
4635f8597d | ||
|
|
802351be25 | ||
|
|
d3765b27c2 | ||
|
|
7b11fff2ee | ||
|
|
de4573275a | ||
|
|
275c94c900 | ||
|
|
c084e647ed | ||
|
|
2cdb419a21 | ||
|
|
2eef7ca475 | ||
|
|
d126e7bbba | ||
|
|
e5024fae3d | ||
|
|
eb053c7f3f | ||
|
|
ed441c8289 | ||
|
|
59b0a1dc65 | ||
|
|
80d36aba5b | ||
|
|
e1e36d213b | ||
|
|
5c8d92e4d0 | ||
|
|
8a39054b54 | ||
|
|
c60e2704c8 | ||
|
|
a9fdbf7f21 | ||
|
|
ed86b02df8 | ||
|
|
0811b4dc51 | ||
|
|
d9901e0b85 | ||
|
|
0f5752b0fc | ||
|
|
31f77182d0 | ||
|
|
620e875335 | ||
|
|
c18173c260 | ||
|
|
f08f458896 | ||
|
|
53cf48f505 | ||
|
|
c32a1a5023 | ||
|
|
8b204815cc | ||
|
|
a9bb92b3ae | ||
|
|
630272eb55 | ||
|
|
92fe3b19c8 | ||
|
|
30e2b03a65 | ||
|
|
f8943854fd | ||
|
|
325465935d | ||
|
|
1cdd37b32c | ||
|
|
499bff9c3a | ||
|
|
bd06e43b87 | ||
|
|
72e5620202 | ||
|
|
fbb9646806 | ||
|
|
4b91f0793c | ||
|
|
6243a80b3f | ||
|
|
e0b0a98c8e | ||
|
|
785eac863b | ||
|
|
ab8659922d | ||
|
|
d48f9c4af4 | ||
|
|
5cc0644aa0 | ||
|
|
91accc391d | ||
|
|
3ee20388c5 | ||
|
|
2449510673 | ||
|
|
2c07ed320e | ||
|
|
607f37dafd | ||
|
|
acc2e040ce | ||
|
|
faa9bbdc8e | ||
|
|
cf6c760cd3 | ||
|
|
e49349ac0c | ||
|
|
1e5db996ff | ||
|
|
793a0681a9 | ||
|
|
825ffaa168 | ||
|
|
9ad6a36b7b | ||
|
|
c3b53c72c7 | ||
|
|
0800d81fb4 | ||
|
|
c27219695a | ||
|
|
9dcfc308ef | ||
|
|
77b3a6afaf | ||
|
|
dd42795131 | ||
|
|
fb1497566c | ||
|
|
cc6c0fe230 | ||
|
|
f9a46a319b | ||
|
|
48a0592a45 | ||
|
|
1c74a8b5ae | ||
|
|
3d18043005 | ||
|
|
6e1e00701e | ||
|
|
5570d846ea | ||
|
|
f5dcb8f7ad | ||
|
|
f6f1b09b69 | ||
|
|
bf540985aa | ||
|
|
c39f86c28a | ||
|
|
b5da8ad00d | ||
|
|
f62b86263a | ||
|
|
3449c734d5 | ||
|
|
3f29d985fe | ||
|
|
2f4a7bbced | ||
|
|
a0522e4c21 | ||
|
|
f461d91cd2 | ||
|
|
ef54e0c4f4 | ||
|
|
863f39fb9f | ||
|
|
d33b28c9fe | ||
|
|
c15a87a614 | ||
|
|
45de0635ac | ||
|
|
bca314c339 | ||
|
|
f05490d0e2 | ||
|
|
442e201705 | ||
|
|
9c346b2321 | ||
|
|
a6b684d05a | ||
|
|
8fb82da226 | ||
|
|
0949f89028 | ||
|
|
350a49e1cc | ||
|
|
bc19e38728 | ||
|
|
228a2954d7 | ||
|
|
3d6d4ca2cd | ||
|
|
4c3e5cf1d1 | ||
|
|
27b1b6d4eb | ||
|
|
24269007d8 | ||
|
|
d849036927 | ||
|
|
5be47255ba | ||
|
|
8f860b3698 | ||
|
|
35992597ae | ||
|
|
3f0d7a2937 | ||
|
|
dae1232489 | ||
|
|
8e388843b8 | ||
|
|
5adbf3765a | ||
|
|
e910e6f13d | ||
|
|
2f2cca8ac6 | ||
|
|
a2f39399a1 | ||
|
|
c1149f88b6 | ||
|
|
54adba6a31 | ||
|
|
b48106f8a8 | ||
|
|
f345428367 | ||
|
|
e4287595c1 | ||
|
|
73efbf2e14 | ||
|
|
ad342dfca9 | ||
|
|
f13d6d4b0f | ||
|
|
dfb8241317 | ||
|
|
c67f10e43f | ||
|
|
932eea513e | ||
|
|
5e51a37518 | ||
|
|
372564299e | ||
|
|
c397fe0c51 | ||
|
|
95227e2732 | ||
|
|
6f8d6da77f | ||
|
|
6f15aec644 | ||
|
|
9bed177f10 | ||
|
|
7de4f16710 | ||
|
|
beac43f41f | ||
|
|
8538d5dcf1 | ||
|
|
0fb294ade4 | ||
|
|
0f6a682ea6 | ||
|
|
c4fc20a033 | ||
|
|
a24e2bfc76 | ||
|
|
6a83588fdd | ||
|
|
0092b3629e | ||
|
|
c0eedcd4ce | ||
|
|
d1b6d5f33d | ||
|
|
fe297fc6d8 | ||
|
|
384fcea585 | ||
|
|
2f2b44a1bd | ||
|
|
8386daddcb | ||
|
|
739a23e506 | ||
|
|
5a59155a05 | ||
|
|
1ad917e2f6 | ||
|
|
859844eae3 | ||
|
|
857b9848d2 | ||
|
|
5f98fcf00b | ||
|
|
5a492e8196 | ||
|
|
80cb52c944 | ||
|
|
4436c09c9d | ||
|
|
23cf7a2e0d | ||
|
|
4a62e1c0ca | ||
|
|
173afd8564 | ||
|
|
f6b9ebb838 | ||
|
|
f1b109005c | ||
|
|
0bd58cd727 | ||
|
|
de1292f8ac | ||
|
|
a6d5c1fe05 | ||
|
|
fc5bd11dac | ||
|
|
e767840874 | ||
|
|
fd08ca3823 | ||
|
|
3bf60755cb | ||
|
|
aac7d1c2ae | ||
|
|
55caed2011 | ||
|
|
53058af284 | ||
|
|
ad1a11164c | ||
|
|
5f6a4fe643 | ||
|
|
c85ea238ca | ||
|
|
5c0b2d04f4 | ||
|
|
76e64053c3 | ||
|
|
ddfa59a52b | ||
|
|
e3fb974fc7 | ||
|
|
9120fbd501 | ||
|
|
52181848da | ||
|
|
10cbe04fc5 | ||
|
|
8367b00e8c | ||
|
|
4a4f289adc | ||
|
|
467f1d52e4 |
No files matched your search
@@ -15,7 +15,7 @@ jobs:
|
|||||||
- { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64" }
|
- { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64" }
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: nttld/setup-ndk@v1
|
- uses: nttld/setup-ndk@v1
|
||||||
id: setup_ndk
|
id: setup_ndk
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ jobs:
|
|||||||
name: FreeBSD
|
name: FreeBSD
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: cross-platform-actions/action@v0.19.1
|
uses: cross-platform-actions/action@v0.24.0
|
||||||
with:
|
with:
|
||||||
operating_system: freebsd
|
operating_system: freebsd
|
||||||
version: '13.2'
|
version: '13.3'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
sudo pkg update
|
sudo pkg update
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ jobs:
|
|||||||
emscripten:
|
emscripten:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: mymindstorm/setup-emsdk@v12
|
- uses: mymindstorm/setup-emsdk@v14
|
||||||
with:
|
with:
|
||||||
version: 3.1.35
|
version: 3.1.35
|
||||||
- name: Install ninja
|
- name: Install ninja
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ jobs:
|
|||||||
- { name: tvOS, target: Static Library-tvOS, sdk: appletvos }
|
- { name: tvOS, target: Static Library-tvOS, sdk: appletvos }
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Build
|
- name: Build
|
||||||
run: xcodebuild -project Xcode/SDL/SDL.xcodeproj -target '${{ matrix.platform.target }}' -configuration Release -sdk ${{ matrix.platform.sdk }} clean build
|
run: xcodebuild -project Xcode/SDL/SDL.xcodeproj -target '${{ matrix.platform.target }}' -configuration Release -sdk ${{ matrix.platform.sdk }} clean build
|
||||||
@@ -64,6 +64,7 @@ jobs:
|
|||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
run: |
|
run: |
|
||||||
brew install \
|
brew install \
|
||||||
|
autoconf \
|
||||||
ninja \
|
ninja \
|
||||||
pkg-config
|
pkg-config
|
||||||
|
|
||||||
@@ -83,7 +84,7 @@ jobs:
|
|||||||
# Install oneAPI
|
# Install oneAPI
|
||||||
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
|
sudo apt-get install -y intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Check that versioning is consistent
|
- name: Check that versioning is consistent
|
||||||
# We only need to run this once: arbitrarily use the Linux/CMake build
|
# We only need to run this once: arbitrarily use the Linux/CMake build
|
||||||
if: "runner.os == 'Linux' && ! matrix.platform.autotools"
|
if: "runner.os == 'Linux' && ! matrix.platform.autotools"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0' }
|
project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0' }
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Create CMake project using SDL as a subproject
|
- name: Create CMake project using SDL as a subproject
|
||||||
shell: python
|
shell: python
|
||||||
run: |
|
run: |
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Add msbuild to PATH
|
- name: Add msbuild to PATH
|
||||||
if: ${{ matrix.platform.project != '' }}
|
if: ${{ matrix.platform.project != '' }}
|
||||||
uses: microsoft/setup-msbuild@v1.1.3
|
uses: microsoft/setup-msbuild@v2
|
||||||
- name: Build msbuild
|
- name: Build msbuild
|
||||||
if: ${{ matrix.platform.project != '' }}
|
if: ${{ matrix.platform.project != '' }}
|
||||||
run: msbuild ${{ matrix.platform.project }} /m /p:BuildInParallel=true /p:Configuration=Release ${{ matrix.platform.projectflags }}
|
run: msbuild ${{ matrix.platform.project }} /m /p:BuildInParallel=true /p:Configuration=Release ${{ matrix.platform.projectflags }}
|
||||||
@@ -8,7 +8,7 @@ jobs:
|
|||||||
container:
|
container:
|
||||||
image: devkitpro/devkitarm:latest
|
image: devkitpro/devkitarm:latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Install build requirements
|
- name: Install build requirements
|
||||||
run: |
|
run: |
|
||||||
apt update
|
apt update
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: ps2dev/ps2dev:latest
|
container: ps2dev/ps2dev:latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Setup dependencies
|
- name: Setup dependencies
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: pspdev/pspdev:latest
|
container: pspdev/pspdev:latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Setup dependencies
|
- name: Setup dependencies
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Setup dependencies
|
- name: Setup dependencies
|
||||||
run: apt-get update && apt-get install -y cmake ninja-build
|
run: apt-get update && apt-get install -y cmake ninja-build
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Configure (autotools)
|
- name: Configure (autotools)
|
||||||
if: ${{ contains(matrix.platform.name, 'autotools') }}
|
if: ${{ contains(matrix.platform.name, 'autotools') }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
- { name: GLES (pib), os: windows-latest, pib: true }
|
- { name: GLES (pib), os: windows-latest, pib: true }
|
||||||
- { name: GLES (PVR_PSP2 + gl4es4vita), os: windows-latest, pvr: true }
|
- { name: GLES (PVR_PSP2 + gl4es4vita), os: windows-latest, pvr: true }
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Install build requirements
|
- name: Install build requirements
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ jobs:
|
|||||||
- { name: OS/2, makefile: Makefile.os2 }
|
- { name: OS/2, makefile: Makefile.os2 }
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: open-watcom/setup-watcom@v0
|
- uses: open-watcom/setup-watcom@v0
|
||||||
- name: Build SDL2
|
- name: Build SDL2
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
+23
-33
@@ -86,8 +86,8 @@ endif()
|
|||||||
|
|
||||||
# See docs/release_checklist.md
|
# See docs/release_checklist.md
|
||||||
set(SDL_MAJOR_VERSION 2)
|
set(SDL_MAJOR_VERSION 2)
|
||||||
set(SDL_MINOR_VERSION 29)
|
set(SDL_MINOR_VERSION 30)
|
||||||
set(SDL_MICRO_VERSION 2)
|
set(SDL_MICRO_VERSION 6)
|
||||||
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
|
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
|
||||||
|
|
||||||
# Set defaults preventing destination file conflicts
|
# Set defaults preventing destination file conflicts
|
||||||
@@ -241,7 +241,7 @@ endif()
|
|||||||
if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA OR PSP OR PS2 OR N3DS)
|
if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA OR PSP OR PS2 OR N3DS)
|
||||||
set(OPT_DEF_LIBC ON)
|
set(OPT_DEF_LIBC ON)
|
||||||
endif()
|
endif()
|
||||||
if(WINDOWS)
|
if(WINDOWS OR DARWIN OR MACOSX OR IOS OR TVOS)
|
||||||
set(SDL_SYSTEM_ICONV_DEFAULT OFF)
|
set(SDL_SYSTEM_ICONV_DEFAULT OFF)
|
||||||
else()
|
else()
|
||||||
set(SDL_SYSTEM_ICONV_DEFAULT ON)
|
set(SDL_SYSTEM_ICONV_DEFAULT ON)
|
||||||
@@ -926,22 +926,6 @@ if(SDL_ASSEMBLY)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SDL_LASX)
|
|
||||||
cmake_push_check_state()
|
|
||||||
set(CMAKE_REQUIRED_FLAGS "-mlasx")
|
|
||||||
check_c_source_compiles("
|
|
||||||
#ifndef __loongarch_asx
|
|
||||||
#error Assembler CPP flag not enabled
|
|
||||||
#endif
|
|
||||||
int main(int argc, char **argv) { return 0; }" CPU_SUPPORTS_LASX)
|
|
||||||
check_include_file("lasxintrin.h" HAVE_LASXINTRIN_H)
|
|
||||||
cmake_pop_check_state()
|
|
||||||
if(CPU_SUPPORTS_LASX AND HAVE_LASXINTRIN_H)
|
|
||||||
list(APPEND EXTRA_CFLAGS "-mlasx")
|
|
||||||
set(HAVE_LASX TRUE)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(SDL_ARMSIMD)
|
if(SDL_ARMSIMD)
|
||||||
set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
||||||
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -x assembler-with-cpp")
|
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -x assembler-with-cpp")
|
||||||
@@ -1107,6 +1091,8 @@ if(SDL_LIBC)
|
|||||||
check_symbol_exists(getauxval "sys/auxv.h" HAVE_GETAUXVAL)
|
check_symbol_exists(getauxval "sys/auxv.h" HAVE_GETAUXVAL)
|
||||||
check_symbol_exists(elf_aux_info "sys/auxv.h" HAVE_ELF_AUX_INFO)
|
check_symbol_exists(elf_aux_info "sys/auxv.h" HAVE_ELF_AUX_INFO)
|
||||||
check_symbol_exists(poll "poll.h" HAVE_POLL)
|
check_symbol_exists(poll "poll.h" HAVE_POLL)
|
||||||
|
check_symbol_exists(memfd_create "sys/mman.h" HAVE_MEMFD_CREATE)
|
||||||
|
check_symbol_exists(posix_fallocate "fcntl.h" HAVE_POSIX_FALLOCATE)
|
||||||
|
|
||||||
check_library_exists(m pow "" HAVE_LIBM)
|
check_library_exists(m pow "" HAVE_LIBM)
|
||||||
if(HAVE_LIBM)
|
if(HAVE_LIBM)
|
||||||
@@ -1688,7 +1674,7 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
|
|||||||
if(FREEBSD OR NETBSD OR OPENBSD OR BSDI)
|
if(FREEBSD OR NETBSD OR OPENBSD OR BSDI)
|
||||||
CheckUSBHID()
|
CheckUSBHID()
|
||||||
endif()
|
endif()
|
||||||
if(LINUX AND HAVE_LINUX_INPUT_H AND NOT ANDROID)
|
if((LINUX OR FREEBSD) AND HAVE_LINUX_INPUT_H AND NOT ANDROID)
|
||||||
set(SDL_JOYSTICK_LINUX 1)
|
set(SDL_JOYSTICK_LINUX 1)
|
||||||
file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/linux/*.c ${SDL2_SOURCE_DIR}/src/joystick/steam/*.c)
|
file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/linux/*.c ${SDL2_SOURCE_DIR}/src/joystick/steam/*.c)
|
||||||
list(APPEND SOURCE_FILES ${JOYSTICK_SOURCES})
|
list(APPEND SOURCE_FILES ${JOYSTICK_SOURCES})
|
||||||
@@ -1791,14 +1777,6 @@ elseif(WINDOWS)
|
|||||||
list(APPEND SOURCE_FILES ${WINRT_SOURCE_FILES})
|
list(APPEND SOURCE_FILES ${WINRT_SOURCE_FILES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC AND NOT SDL_LIBC)
|
|
||||||
# Prevent codegen that would use the VC runtime libraries.
|
|
||||||
set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/GS-;/Gs1048576")
|
|
||||||
if(NOT ARCH_64 AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
|
|
||||||
set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/arch:SSE")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(SDL_MISC)
|
if(SDL_MISC)
|
||||||
if(WINDOWS_STORE)
|
if(WINDOWS_STORE)
|
||||||
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/winrt/*.cpp)
|
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/winrt/*.cpp)
|
||||||
@@ -1824,13 +1802,11 @@ elseif(WINDOWS)
|
|||||||
check_include_file(d3d9.h HAVE_D3D_H)
|
check_include_file(d3d9.h HAVE_D3D_H)
|
||||||
check_include_file(d3d11_1.h HAVE_D3D11_H)
|
check_include_file(d3d11_1.h HAVE_D3D11_H)
|
||||||
check_c_source_compiles("
|
check_c_source_compiles("
|
||||||
#include <winsdkver.h>
|
|
||||||
#include <sdkddkver.h>
|
|
||||||
#include <d3d12.h>
|
#include <d3d12.h>
|
||||||
|
#include <d3d12sdklayers.h>
|
||||||
ID3D12Device1 *device;
|
ID3D12Device1 *device;
|
||||||
#if WDK_NTDDI_VERSION > 0x0A000008
|
int main(int argc, char **argv) {return 0; }
|
||||||
int main(int argc, char **argv) { return 0; }
|
" HAVE_D3D12_H)
|
||||||
#endif" HAVE_D3D12_H)
|
|
||||||
check_include_file(ddraw.h HAVE_DDRAW_H)
|
check_include_file(ddraw.h HAVE_DDRAW_H)
|
||||||
check_include_file(dsound.h HAVE_DSOUND_H)
|
check_include_file(dsound.h HAVE_DSOUND_H)
|
||||||
check_include_file(dinput.h HAVE_DINPUT_H)
|
check_include_file(dinput.h HAVE_DINPUT_H)
|
||||||
@@ -3543,6 +3519,20 @@ if(SDL_TEST)
|
|||||||
set_property(TARGET SDL2_test PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
set_property(TARGET SDL2_test PROPERTY INTERFACE_SDL_VERSION "SDL2")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(MSVC AND NOT SDL_LIBC)
|
||||||
|
set(targets SDL2)
|
||||||
|
if(TARGET SDL2-static)
|
||||||
|
list(APPEND targets SDL2-static)
|
||||||
|
endif()
|
||||||
|
if(TARGET SDL2_test)
|
||||||
|
list(APPEND targets SDL2_test)
|
||||||
|
endif()
|
||||||
|
set_property(TARGET ${targets} APPEND PROPERTY COMPILE_OPTIONS "/GS-;/Gs1048576")
|
||||||
|
if(NOT ARCH_64 AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
|
||||||
|
set_property(TARGET ${targets} APPEND PROPERTY COMPILE_OPTIONS "/arch:SSE")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
##### Installation targets #####
|
##### Installation targets #####
|
||||||
if(NOT SDL2_DISABLE_INSTALL)
|
if(NOT SDL2_DISABLE_INSTALL)
|
||||||
if(SDL_SHARED)
|
if(SDL_SHARED)
|
||||||
|
|||||||
+1
-1
@@ -52,7 +52,7 @@ WAYLAND_SCANNER_CODE_MODE = @WAYLAND_SCANNER_CODE_MODE@
|
|||||||
|
|
||||||
INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
|
INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
|
||||||
|
|
||||||
SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac docs include Makefile.* mingw sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake.in src test VisualC VisualC-WinRT Xcode Xcode-iOS wayland-protocols
|
SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac docs include Makefile.* mingw sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake.in src test VisualC VisualC-GDK VisualC-WinRT Xcode Xcode-iOS wayland-protocols
|
||||||
GEN_DIST = SDL2.spec
|
GEN_DIST = SDL2.spec
|
||||||
|
|
||||||
ifneq ($V,1)
|
ifneq ($V,1)
|
||||||
|
|||||||
+2
-2
@@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
LIBNAME = SDL2
|
LIBNAME = SDL2
|
||||||
MAJOR_VERSION = 2
|
MAJOR_VERSION = 2
|
||||||
MINOR_VERSION = 29
|
MINOR_VERSION = 30
|
||||||
MICRO_VERSION = 2
|
MICRO_VERSION = 6
|
||||||
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
||||||
DESCRIPTION = Simple DirectMedia Layer 2
|
DESCRIPTION = Simple DirectMedia Layer 2
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
LIBNAME = SDL2
|
LIBNAME = SDL2
|
||||||
MAJOR_VERSION = 2
|
MAJOR_VERSION = 2
|
||||||
MINOR_VERSION = 29
|
MINOR_VERSION = 30
|
||||||
MICRO_VERSION = 2
|
MICRO_VERSION = 6
|
||||||
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
|
||||||
|
|
||||||
LIBHOME = .
|
LIBHOME = .
|
||||||
|
|||||||
@@ -499,7 +499,6 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp" />
|
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
||||||
|
|||||||
@@ -780,9 +780,6 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
|
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.Scarlett.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Gaming.Xbox.Scarlett.x64'">
|
||||||
@@ -211,7 +211,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">
|
||||||
@@ -409,7 +409,7 @@
|
|||||||
<CopyFileToFolders Include="..\..\logos\Logo480x480.png" />
|
<CopyFileToFolders Include="..\..\logos\Logo480x480.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll">
|
<CopyFileToFolders Include="$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.GDK.C.Thunks.dll">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'">true</ExcludedFromBuild>
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.XboxOne.x64'">true</ExcludedFromBuild>
|
||||||
|
|||||||
@@ -394,7 +394,6 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp" />
|
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
|
||||||
|
|||||||
@@ -780,9 +780,6 @@
|
|||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
|
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
|
||||||
<Filter>video\khronos\vulkan</Filter>
|
<Filter>video\khronos\vulkan</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|||||||
@@ -210,6 +210,7 @@
|
|||||||
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
|
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_joystick.c" />
|
<ClCompile Include="..\..\..\test\testautomation_joystick.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
|
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
|
||||||
|
<ClCompile Include="..\..\..\test\testautomation_log.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_main.c" />
|
<ClCompile Include="..\..\..\test\testautomation_main.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_math.c" />
|
<ClCompile Include="..\..\..\test\testautomation_math.c" />
|
||||||
<ClCompile Include="..\..\..\test\testautomation_mouse.c" />
|
<ClCompile Include="..\..\..\test\testautomation_mouse.c" />
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ General:
|
|||||||
* Added support for 2 bits-per-pixel indexed surface formats
|
* Added support for 2 bits-per-pixel indexed surface formats
|
||||||
* Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available
|
* Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available
|
||||||
* Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller.
|
* Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller.
|
||||||
|
* Added the environment variable SDL_LOGGING to control default log output
|
||||||
|
|
||||||
macOS:
|
macOS:
|
||||||
* Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used
|
* Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ void spawnTrailFromEmitter(struct particle *emitter);
|
|||||||
void spawnEmitterParticle(GLfloat x, GLfloat y);
|
void spawnEmitterParticle(GLfloat x, GLfloat y);
|
||||||
void explodeEmitter(struct particle *emitter);
|
void explodeEmitter(struct particle *emitter);
|
||||||
void initializeParticles(void);
|
void initializeParticles(void);
|
||||||
void initializeTexture();
|
void initializeTexture(void);
|
||||||
int nextPowerOfTwo(int x);
|
int nextPowerOfTwo(int x);
|
||||||
void drawParticles();
|
void drawParticles(void);
|
||||||
void stepParticles(double deltaTime);
|
void stepParticles(double deltaTime);
|
||||||
|
|
||||||
/* helper function (used in texture loading)
|
/* helper function (used in texture loading)
|
||||||
@@ -159,7 +159,7 @@ stepParticles(double deltaTime)
|
|||||||
This draws all the particles shown on screen
|
This draws all the particles shown on screen
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
drawParticles()
|
drawParticles(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* draw the background */
|
/* draw the background */
|
||||||
@@ -324,7 +324,7 @@ initializeParticles(void)
|
|||||||
loads the particle texture
|
loads the particle texture
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
initializeTexture()
|
initializeTexture(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
int bpp; /* texture bits per pixel */
|
int bpp; /* texture bits per pixel */
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ loadFont(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
draw()
|
draw(void)
|
||||||
{
|
{
|
||||||
SDL_SetRenderDrawColor(renderer, bg_color.r, bg_color.g, bg_color.b, bg_color.a);
|
SDL_SetRenderDrawColor(renderer, bg_color.r, bg_color.g, bg_color.b, bg_color.a);
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.29.2</string>
|
<string>2.30.6</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>SDLX</string>
|
<string>SDLX</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>2.29.2</string>
|
<string>2.30.6</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -206,7 +206,6 @@
|
|||||||
A75FCD4823E25AB700529352 /* SDL_keycode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DB1595D4D800BBD41B /* SDL_keycode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCD4823E25AB700529352 /* SDL_keycode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DB1595D4D800BBD41B /* SDL_keycode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCD4A23E25AB700529352 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
A75FCD4A23E25AB700529352 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
||||||
A75FCD4B23E25AB700529352 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
A75FCD4B23E25AB700529352 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
||||||
A75FCD4E23E25AB700529352 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A75FCD4F23E25AB700529352 /* SDL_loadso.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DC1595D4D800BBD41B /* SDL_loadso.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCD4F23E25AB700529352 /* SDL_loadso.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DC1595D4D800BBD41B /* SDL_loadso.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCD5023E25AB700529352 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
A75FCD5023E25AB700529352 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
||||||
A75FCD5123E25AB700529352 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
A75FCD5123E25AB700529352 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
||||||
@@ -282,7 +281,6 @@
|
|||||||
A75FCDA123E25AB700529352 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A75FCDA123E25AB700529352 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
A75FCDA223E25AB700529352 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
A75FCDA223E25AB700529352 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
||||||
A75FCDA323E25AB700529352 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
A75FCDA323E25AB700529352 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
||||||
A75FCDA423E25AB700529352 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A75FCDA523E25AB700529352 /* SDL_quit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557E81595D4D800BBD41B /* SDL_quit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCDA523E25AB700529352 /* SDL_quit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557E81595D4D800BBD41B /* SDL_quit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCDA623E25AB700529352 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
A75FCDA623E25AB700529352 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
||||||
A75FCDA723E25AB700529352 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
A75FCDA723E25AB700529352 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
||||||
@@ -580,7 +578,6 @@
|
|||||||
A75FCF0123E25AC700529352 /* SDL_keycode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DB1595D4D800BBD41B /* SDL_keycode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCF0123E25AC700529352 /* SDL_keycode.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DB1595D4D800BBD41B /* SDL_keycode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCF0323E25AC700529352 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
A75FCF0323E25AC700529352 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
||||||
A75FCF0423E25AC700529352 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
A75FCF0423E25AC700529352 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
||||||
A75FCF0723E25AC700529352 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A75FCF0823E25AC700529352 /* SDL_loadso.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DC1595D4D800BBD41B /* SDL_loadso.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCF0823E25AC700529352 /* SDL_loadso.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557DC1595D4D800BBD41B /* SDL_loadso.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCF0923E25AC700529352 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
A75FCF0923E25AC700529352 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
||||||
A75FCF0A23E25AC700529352 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
A75FCF0A23E25AC700529352 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
||||||
@@ -656,7 +653,6 @@
|
|||||||
A75FCF5A23E25AC700529352 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A75FCF5A23E25AC700529352 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
A75FCF5B23E25AC700529352 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
A75FCF5B23E25AC700529352 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
||||||
A75FCF5C23E25AC700529352 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
A75FCF5C23E25AC700529352 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
||||||
A75FCF5D23E25AC700529352 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A75FCF5E23E25AC700529352 /* SDL_quit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557E81595D4D800BBD41B /* SDL_quit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A75FCF5E23E25AC700529352 /* SDL_quit.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7557E81595D4D800BBD41B /* SDL_quit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
A75FCF5F23E25AC700529352 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
A75FCF5F23E25AC700529352 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
||||||
A75FCF6023E25AC700529352 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
A75FCF6023E25AC700529352 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
||||||
@@ -974,7 +970,6 @@
|
|||||||
A769B0CD23E259AE00872273 /* SDL_systhread_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A78423E2513E00DCD162 /* SDL_systhread_c.h */; };
|
A769B0CD23E259AE00872273 /* SDL_systhread_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A78423E2513E00DCD162 /* SDL_systhread_c.h */; };
|
||||||
A769B0D023E259AE00872273 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
A769B0D023E259AE00872273 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; };
|
||||||
A769B0D123E259AE00872273 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
A769B0D123E259AE00872273 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; };
|
||||||
A769B0D423E259AE00872273 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A769B0D623E259AE00872273 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
A769B0D623E259AE00872273 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; };
|
||||||
A769B0D723E259AE00872273 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
A769B0D723E259AE00872273 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; };
|
||||||
A769B0D923E259AE00872273 /* SDL_syshaptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5CF23E2513D00DCD162 /* SDL_syshaptic_c.h */; };
|
A769B0D923E259AE00872273 /* SDL_syshaptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5CF23E2513D00DCD162 /* SDL_syshaptic_c.h */; };
|
||||||
@@ -1036,7 +1031,6 @@
|
|||||||
A769B12923E259AE00872273 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A769B12923E259AE00872273 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
A769B12A23E259AE00872273 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
A769B12A23E259AE00872273 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; };
|
||||||
A769B12B23E259AE00872273 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
A769B12B23E259AE00872273 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; };
|
||||||
A769B12C23E259AE00872273 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A769B12E23E259AE00872273 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
A769B12E23E259AE00872273 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; };
|
||||||
A769B12F23E259AE00872273 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
A769B12F23E259AE00872273 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; };
|
||||||
A769B13223E259AE00872273 /* SDL_nullvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60A23E2513D00DCD162 /* SDL_nullvideo.h */; };
|
A769B13223E259AE00872273 /* SDL_nullvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60A23E2513D00DCD162 /* SDL_nullvideo.h */; };
|
||||||
@@ -2110,12 +2104,6 @@
|
|||||||
A7D8B26923E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
A7D8B26923E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
||||||
A7D8B26A23E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
A7D8B26A23E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
||||||
A7D8B26B23E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
A7D8B26B23E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; };
|
||||||
A7D8B26C23E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B26D23E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B26E23E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B26F23E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B27023E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B27123E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; };
|
|
||||||
A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
||||||
A7D8B27323E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
A7D8B27323E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
||||||
A7D8B27423E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
A7D8B27423E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; };
|
||||||
@@ -2152,12 +2140,6 @@
|
|||||||
A7D8B29323E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
A7D8B29323E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
||||||
A7D8B29423E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
A7D8B29423E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
||||||
A7D8B29523E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
A7D8B29523E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; };
|
||||||
A7D8B29623E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29723E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29823E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29923E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29A23E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29B23E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; };
|
|
||||||
A7D8B29C23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A7D8B29C23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
A7D8B29D23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A7D8B29D23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
A7D8B29E23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
A7D8B29E23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; };
|
||||||
@@ -3968,14 +3950,12 @@
|
|||||||
A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = "<group>"; };
|
A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = "<group>"; };
|
||||||
A7D8A73023E2513E00DCD162 /* vulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = "<group>"; };
|
A7D8A73023E2513E00DCD162 /* vulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = "<group>"; };
|
||||||
A7D8A73123E2513E00DCD162 /* vk_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = "<group>"; };
|
A7D8A73123E2513E00DCD162 /* vk_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = "<group>"; };
|
||||||
A7D8A73223E2513E00DCD162 /* vulkan.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = vulkan.hpp; sourceTree = "<group>"; };
|
|
||||||
A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = "<group>"; };
|
A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = "<group>"; };
|
||||||
A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = "<group>"; };
|
A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = "<group>"; };
|
||||||
A7D8A73523E2513E00DCD162 /* vulkan_win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = "<group>"; };
|
A7D8A73523E2513E00DCD162 /* vulkan_win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = "<group>"; };
|
||||||
A7D8A73623E2513E00DCD162 /* vulkan_macos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = "<group>"; };
|
A7D8A73623E2513E00DCD162 /* vulkan_macos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = "<group>"; };
|
||||||
A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = "<group>"; };
|
A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = "<group>"; };
|
||||||
A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = "<group>"; };
|
A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = "<group>"; };
|
||||||
A7D8A73923E2513E00DCD162 /* vulkan_mir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_mir.h; sourceTree = "<group>"; };
|
|
||||||
A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = "<group>"; };
|
A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = "<group>"; };
|
||||||
A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = "<group>"; };
|
A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = "<group>"; };
|
||||||
A7D8A73C23E2513E00DCD162 /* vulkan_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = "<group>"; };
|
A7D8A73C23E2513E00DCD162 /* vulkan_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = "<group>"; };
|
||||||
@@ -5003,7 +4983,6 @@
|
|||||||
A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */,
|
A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */,
|
||||||
A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */,
|
A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */,
|
||||||
A7D8A73623E2513E00DCD162 /* vulkan_macos.h */,
|
A7D8A73623E2513E00DCD162 /* vulkan_macos.h */,
|
||||||
A7D8A73923E2513E00DCD162 /* vulkan_mir.h */,
|
|
||||||
A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */,
|
A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */,
|
||||||
A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */,
|
A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */,
|
||||||
A7D8A73523E2513E00DCD162 /* vulkan_win32.h */,
|
A7D8A73523E2513E00DCD162 /* vulkan_win32.h */,
|
||||||
@@ -5011,7 +4990,6 @@
|
|||||||
A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */,
|
A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */,
|
||||||
A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */,
|
A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */,
|
||||||
A7D8A73023E2513E00DCD162 /* vulkan.h */,
|
A7D8A73023E2513E00DCD162 /* vulkan.h */,
|
||||||
A7D8A73223E2513E00DCD162 /* vulkan.hpp */,
|
|
||||||
);
|
);
|
||||||
path = vulkan;
|
path = vulkan;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -5596,7 +5574,6 @@
|
|||||||
5616CA63252BB35F005D5928 /* SDL_sysurl.h in Headers */,
|
5616CA63252BB35F005D5928 /* SDL_sysurl.h in Headers */,
|
||||||
A75FCD4A23E25AB700529352 /* SDL_cocoakeyboard.h in Headers */,
|
A75FCD4A23E25AB700529352 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
A75FCD4B23E25AB700529352 /* SDL_uikitvulkan.h in Headers */,
|
A75FCD4B23E25AB700529352 /* SDL_uikitvulkan.h in Headers */,
|
||||||
A75FCD4E23E25AB700529352 /* vulkan.hpp in Headers */,
|
|
||||||
A75FCD4F23E25AB700529352 /* SDL_loadso.h in Headers */,
|
A75FCD4F23E25AB700529352 /* SDL_loadso.h in Headers */,
|
||||||
A75FCD5023E25AB700529352 /* gl2ext.h in Headers */,
|
A75FCD5023E25AB700529352 /* gl2ext.h in Headers */,
|
||||||
A75FCD5123E25AB700529352 /* SDL_clipboardevents_c.h in Headers */,
|
A75FCD5123E25AB700529352 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
@@ -5680,7 +5657,6 @@
|
|||||||
A75FCDA123E25AB700529352 /* vulkan_xlib.h in Headers */,
|
A75FCDA123E25AB700529352 /* vulkan_xlib.h in Headers */,
|
||||||
A75FCDA223E25AB700529352 /* SDL_uikitwindow.h in Headers */,
|
A75FCDA223E25AB700529352 /* SDL_uikitwindow.h in Headers */,
|
||||||
A75FCDA323E25AB700529352 /* vulkan_vi.h in Headers */,
|
A75FCDA323E25AB700529352 /* vulkan_vi.h in Headers */,
|
||||||
A75FCDA423E25AB700529352 /* vulkan_mir.h in Headers */,
|
|
||||||
A75FCDA523E25AB700529352 /* SDL_quit.h in Headers */,
|
A75FCDA523E25AB700529352 /* SDL_quit.h in Headers */,
|
||||||
A75FCDA623E25AB700529352 /* default_cursor.h in Headers */,
|
A75FCDA623E25AB700529352 /* default_cursor.h in Headers */,
|
||||||
A75FCDA723E25AB700529352 /* SDL_render_sw_c.h in Headers */,
|
A75FCDA723E25AB700529352 /* SDL_render_sw_c.h in Headers */,
|
||||||
@@ -5833,7 +5809,6 @@
|
|||||||
5616CA66252BB361005D5928 /* SDL_sysurl.h in Headers */,
|
5616CA66252BB361005D5928 /* SDL_sysurl.h in Headers */,
|
||||||
A75FCF0323E25AC700529352 /* SDL_cocoakeyboard.h in Headers */,
|
A75FCF0323E25AC700529352 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
A75FCF0423E25AC700529352 /* SDL_uikitvulkan.h in Headers */,
|
A75FCF0423E25AC700529352 /* SDL_uikitvulkan.h in Headers */,
|
||||||
A75FCF0723E25AC700529352 /* vulkan.hpp in Headers */,
|
|
||||||
A75FCF0823E25AC700529352 /* SDL_loadso.h in Headers */,
|
A75FCF0823E25AC700529352 /* SDL_loadso.h in Headers */,
|
||||||
A75FCF0923E25AC700529352 /* gl2ext.h in Headers */,
|
A75FCF0923E25AC700529352 /* gl2ext.h in Headers */,
|
||||||
A75FCF0A23E25AC700529352 /* SDL_clipboardevents_c.h in Headers */,
|
A75FCF0A23E25AC700529352 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
@@ -5917,7 +5892,6 @@
|
|||||||
A75FCF5A23E25AC700529352 /* vulkan_xlib.h in Headers */,
|
A75FCF5A23E25AC700529352 /* vulkan_xlib.h in Headers */,
|
||||||
A75FCF5B23E25AC700529352 /* SDL_uikitwindow.h in Headers */,
|
A75FCF5B23E25AC700529352 /* SDL_uikitwindow.h in Headers */,
|
||||||
A75FCF5C23E25AC700529352 /* vulkan_vi.h in Headers */,
|
A75FCF5C23E25AC700529352 /* vulkan_vi.h in Headers */,
|
||||||
A75FCF5D23E25AC700529352 /* vulkan_mir.h in Headers */,
|
|
||||||
A75FCF5E23E25AC700529352 /* SDL_quit.h in Headers */,
|
A75FCF5E23E25AC700529352 /* SDL_quit.h in Headers */,
|
||||||
A75FCF5F23E25AC700529352 /* default_cursor.h in Headers */,
|
A75FCF5F23E25AC700529352 /* default_cursor.h in Headers */,
|
||||||
A75FCF6023E25AC700529352 /* SDL_render_sw_c.h in Headers */,
|
A75FCF6023E25AC700529352 /* SDL_render_sw_c.h in Headers */,
|
||||||
@@ -6043,7 +6017,6 @@
|
|||||||
A769B0D023E259AE00872273 /* SDL_cocoakeyboard.h in Headers */,
|
A769B0D023E259AE00872273 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
5616CA5D252BB35E005D5928 /* SDL_sysurl.h in Headers */,
|
5616CA5D252BB35E005D5928 /* SDL_sysurl.h in Headers */,
|
||||||
A769B0D123E259AE00872273 /* SDL_uikitvulkan.h in Headers */,
|
A769B0D123E259AE00872273 /* SDL_uikitvulkan.h in Headers */,
|
||||||
A769B0D423E259AE00872273 /* vulkan.hpp in Headers */,
|
|
||||||
A769B0D623E259AE00872273 /* gl2ext.h in Headers */,
|
A769B0D623E259AE00872273 /* gl2ext.h in Headers */,
|
||||||
A769B0D723E259AE00872273 /* SDL_clipboardevents_c.h in Headers */,
|
A769B0D723E259AE00872273 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
A769B0D923E259AE00872273 /* SDL_syshaptic_c.h in Headers */,
|
A769B0D923E259AE00872273 /* SDL_syshaptic_c.h in Headers */,
|
||||||
@@ -6114,7 +6087,6 @@
|
|||||||
F386F6F52884663E001840AA /* SDL_utils_c.h in Headers */,
|
F386F6F52884663E001840AA /* SDL_utils_c.h in Headers */,
|
||||||
A769B12A23E259AE00872273 /* SDL_uikitwindow.h in Headers */,
|
A769B12A23E259AE00872273 /* SDL_uikitwindow.h in Headers */,
|
||||||
A769B12B23E259AE00872273 /* vulkan_vi.h in Headers */,
|
A769B12B23E259AE00872273 /* vulkan_vi.h in Headers */,
|
||||||
A769B12C23E259AE00872273 /* vulkan_mir.h in Headers */,
|
|
||||||
A769B12E23E259AE00872273 /* default_cursor.h in Headers */,
|
A769B12E23E259AE00872273 /* default_cursor.h in Headers */,
|
||||||
A769B12F23E259AE00872273 /* SDL_render_sw_c.h in Headers */,
|
A769B12F23E259AE00872273 /* SDL_render_sw_c.h in Headers */,
|
||||||
A769B13223E259AE00872273 /* SDL_nullvideo.h in Headers */,
|
A769B13223E259AE00872273 /* SDL_nullvideo.h in Headers */,
|
||||||
@@ -6387,13 +6359,11 @@
|
|||||||
A7D8B26723E2514200DCD162 /* vk_platform.h in Headers */,
|
A7D8B26723E2514200DCD162 /* vk_platform.h in Headers */,
|
||||||
A7D8B2AF23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
A7D8B2AF23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
||||||
A7D8B26123E2514200DCD162 /* vulkan.h in Headers */,
|
A7D8B26123E2514200DCD162 /* vulkan.h in Headers */,
|
||||||
A7D8B26D23E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
A7D8B2B523E2514200DCD162 /* vulkan_android.h in Headers */,
|
A7D8B2B523E2514200DCD162 /* vulkan_android.h in Headers */,
|
||||||
A7D8B2A923E2514200DCD162 /* vulkan_core.h in Headers */,
|
A7D8B2A923E2514200DCD162 /* vulkan_core.h in Headers */,
|
||||||
A7D8B27323E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
A7D8B27323E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
||||||
A7D8B2A323E2514200DCD162 /* vulkan_ios.h in Headers */,
|
A7D8B2A323E2514200DCD162 /* vulkan_ios.h in Headers */,
|
||||||
A7D8B28523E2514200DCD162 /* vulkan_macos.h in Headers */,
|
A7D8B28523E2514200DCD162 /* vulkan_macos.h in Headers */,
|
||||||
A7D8B29723E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
A7D8B25B23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25B23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
A7D8B27923E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
A7D8B27923E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
||||||
A7D8B27F23E2514200DCD162 /* vulkan_win32.h in Headers */,
|
A7D8B27F23E2514200DCD162 /* vulkan_win32.h in Headers */,
|
||||||
@@ -6629,13 +6599,11 @@
|
|||||||
A7D8B26823E2514200DCD162 /* vk_platform.h in Headers */,
|
A7D8B26823E2514200DCD162 /* vk_platform.h in Headers */,
|
||||||
A7D8B2B023E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
A7D8B2B023E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
||||||
A7D8B26223E2514200DCD162 /* vulkan.h in Headers */,
|
A7D8B26223E2514200DCD162 /* vulkan.h in Headers */,
|
||||||
A7D8B26E23E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
A7D8B2B623E2514200DCD162 /* vulkan_android.h in Headers */,
|
A7D8B2B623E2514200DCD162 /* vulkan_android.h in Headers */,
|
||||||
A7D8B2AA23E2514200DCD162 /* vulkan_core.h in Headers */,
|
A7D8B2AA23E2514200DCD162 /* vulkan_core.h in Headers */,
|
||||||
A7D8B27423E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
A7D8B27423E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
||||||
A7D8B2A423E2514200DCD162 /* vulkan_ios.h in Headers */,
|
A7D8B2A423E2514200DCD162 /* vulkan_ios.h in Headers */,
|
||||||
A7D8B28623E2514200DCD162 /* vulkan_macos.h in Headers */,
|
A7D8B28623E2514200DCD162 /* vulkan_macos.h in Headers */,
|
||||||
A7D8B29823E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
A7D8B25C23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25C23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
A7D8B27A23E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
A7D8B27A23E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
||||||
A7D8B28023E2514200DCD162 /* vulkan_win32.h in Headers */,
|
A7D8B28023E2514200DCD162 /* vulkan_win32.h in Headers */,
|
||||||
@@ -6704,7 +6672,6 @@
|
|||||||
A7D8AE9223E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
A7D8AE9223E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
5616CA5A252BB35D005D5928 /* SDL_sysurl.h in Headers */,
|
5616CA5A252BB35D005D5928 /* SDL_sysurl.h in Headers */,
|
||||||
A7D8ACE523E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
|
A7D8ACE523E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
|
||||||
A7D8B27023E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
A7D8B22823E2514200DCD162 /* gl2ext.h in Headers */,
|
A7D8B22823E2514200DCD162 /* gl2ext.h in Headers */,
|
||||||
A7D8BB7323E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
A7D8BB7323E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
A7D8AAE423E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
|
A7D8AAE423E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
|
||||||
@@ -6775,7 +6742,6 @@
|
|||||||
F386F6F42884663E001840AA /* SDL_utils_c.h in Headers */,
|
F386F6F42884663E001840AA /* SDL_utils_c.h in Headers */,
|
||||||
A7D8AC9D23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
|
A7D8AC9D23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
|
||||||
A7D8B25E23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25E23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
A7D8B29A23E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
A7D8BB4F23E2514500DCD162 /* default_cursor.h in Headers */,
|
A7D8BB4F23E2514500DCD162 /* default_cursor.h in Headers */,
|
||||||
A7D8B9FF23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
A7D8B9FF23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
||||||
A7D8ABFB23E2514100DCD162 /* SDL_nullvideo.h in Headers */,
|
A7D8ABFB23E2514100DCD162 /* SDL_nullvideo.h in Headers */,
|
||||||
@@ -7048,13 +7014,11 @@
|
|||||||
A7D8B26623E2514200DCD162 /* vk_platform.h in Headers */,
|
A7D8B26623E2514200DCD162 /* vk_platform.h in Headers */,
|
||||||
A7D8B2AE23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
A7D8B2AE23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
|
||||||
A7D8B26023E2514200DCD162 /* vulkan.h in Headers */,
|
A7D8B26023E2514200DCD162 /* vulkan.h in Headers */,
|
||||||
A7D8B26C23E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
A7D8B2B423E2514200DCD162 /* vulkan_android.h in Headers */,
|
A7D8B2B423E2514200DCD162 /* vulkan_android.h in Headers */,
|
||||||
A7D8B2A823E2514200DCD162 /* vulkan_core.h in Headers */,
|
A7D8B2A823E2514200DCD162 /* vulkan_core.h in Headers */,
|
||||||
A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
|
||||||
A7D8B2A223E2514200DCD162 /* vulkan_ios.h in Headers */,
|
A7D8B2A223E2514200DCD162 /* vulkan_ios.h in Headers */,
|
||||||
A7D8B28423E2514200DCD162 /* vulkan_macos.h in Headers */,
|
A7D8B28423E2514200DCD162 /* vulkan_macos.h in Headers */,
|
||||||
A7D8B29623E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
A7D8B25A23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25A23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
A7D8B27823E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
A7D8B27823E2514200DCD162 /* vulkan_wayland.h in Headers */,
|
||||||
A7D8B27E23E2514200DCD162 /* vulkan_win32.h in Headers */,
|
A7D8B27E23E2514200DCD162 /* vulkan_win32.h in Headers */,
|
||||||
@@ -7118,7 +7082,6 @@
|
|||||||
A7D8BA7623E2514400DCD162 /* SDL_shaders_gl.h in Headers */,
|
A7D8BA7623E2514400DCD162 /* SDL_shaders_gl.h in Headers */,
|
||||||
A7D8B42B23E2514300DCD162 /* SDL_systhread_c.h in Headers */,
|
A7D8B42B23E2514300DCD162 /* SDL_systhread_c.h in Headers */,
|
||||||
A7D8AE9123E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
A7D8AE9123E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
A7D8B26F23E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
A7D8B22723E2514200DCD162 /* gl2ext.h in Headers */,
|
A7D8B22723E2514200DCD162 /* gl2ext.h in Headers */,
|
||||||
A7D8BB7223E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
A7D8BB7223E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
A7D8AAE323E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
|
A7D8AAE323E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
|
||||||
@@ -7189,7 +7152,6 @@
|
|||||||
A7D8B29F23E2514200DCD162 /* vulkan_xlib.h in Headers */,
|
A7D8B29F23E2514200DCD162 /* vulkan_xlib.h in Headers */,
|
||||||
A7D8B25D23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25D23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
F316AB882B5A02C3002EF551 /* yuv_rgb_common.h in Headers */,
|
F316AB882B5A02C3002EF551 /* yuv_rgb_common.h in Headers */,
|
||||||
A7D8B29923E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
A1BB8B6F27F6CF330057CFA8 /* SDL_list.h in Headers */,
|
A1BB8B6F27F6CF330057CFA8 /* SDL_list.h in Headers */,
|
||||||
A7D8BB4E23E2514500DCD162 /* default_cursor.h in Headers */,
|
A7D8BB4E23E2514500DCD162 /* default_cursor.h in Headers */,
|
||||||
A7D8B9FE23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
A7D8B9FE23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
||||||
@@ -7325,7 +7287,6 @@
|
|||||||
DB313FDB17554B71006C0E22 /* SDL_keycode.h in Headers */,
|
DB313FDB17554B71006C0E22 /* SDL_keycode.h in Headers */,
|
||||||
A7D8AE9323E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
A7D8AE9323E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
|
||||||
A7D8ACE623E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
|
A7D8ACE623E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
|
||||||
A7D8B27123E2514200DCD162 /* vulkan.hpp in Headers */,
|
|
||||||
DB313FDC17554B71006C0E22 /* SDL_loadso.h in Headers */,
|
DB313FDC17554B71006C0E22 /* SDL_loadso.h in Headers */,
|
||||||
A7D8B22923E2514200DCD162 /* gl2ext.h in Headers */,
|
A7D8B22923E2514200DCD162 /* gl2ext.h in Headers */,
|
||||||
A7D8BB7423E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
A7D8BB7423E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
|
||||||
@@ -7409,7 +7370,6 @@
|
|||||||
A7D8B2A123E2514200DCD162 /* vulkan_xlib.h in Headers */,
|
A7D8B2A123E2514200DCD162 /* vulkan_xlib.h in Headers */,
|
||||||
A7D8AC9E23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
|
A7D8AC9E23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
|
||||||
A7D8B25F23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
A7D8B25F23E2514200DCD162 /* vulkan_vi.h in Headers */,
|
||||||
A7D8B29B23E2514200DCD162 /* vulkan_mir.h in Headers */,
|
|
||||||
DB313FE817554B71006C0E22 /* SDL_quit.h in Headers */,
|
DB313FE817554B71006C0E22 /* SDL_quit.h in Headers */,
|
||||||
A7D8BB5023E2514500DCD162 /* default_cursor.h in Headers */,
|
A7D8BB5023E2514500DCD162 /* default_cursor.h in Headers */,
|
||||||
A7D8BA0023E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
A7D8BA0023E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
|
||||||
@@ -9768,8 +9728,8 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
DEPLOYMENT_POSTPROCESSING = YES;
|
DEPLOYMENT_POSTPROCESSING = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
|
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
|
||||||
DYLIB_CURRENT_VERSION = 2903.0.0;
|
DYLIB_CURRENT_VERSION = 3001.6.0;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_ALTIVEC_EXTENSIONS = YES;
|
GCC_ALTIVEC_EXTENSIONS = YES;
|
||||||
@@ -9810,7 +9770,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CLANG_LINK_OBJC_RUNTIME = NO;
|
CLANG_LINK_OBJC_RUNTIME = NO;
|
||||||
MARKETING_VERSION = 2.29.2;
|
MARKETING_VERSION = 2.30.6;
|
||||||
OTHER_LDFLAGS = "-liconv";
|
OTHER_LDFLAGS = "-liconv";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
@@ -9853,8 +9813,8 @@
|
|||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
|
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
|
||||||
DYLIB_CURRENT_VERSION = 2903.0.0;
|
DYLIB_CURRENT_VERSION = 3001.6.0;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@@ -9896,7 +9856,7 @@
|
|||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CLANG_LINK_OBJC_RUNTIME = NO;
|
CLANG_LINK_OBJC_RUNTIME = NO;
|
||||||
MARKETING_VERSION = 2.29.2;
|
MARKETING_VERSION = 2.30.6;
|
||||||
OTHER_LDFLAGS = "-liconv";
|
OTHER_LDFLAGS = "-liconv";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -10102,8 +10062,8 @@
|
|||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
|
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
|
||||||
DYLIB_CURRENT_VERSION = 2903.0.0;
|
DYLIB_CURRENT_VERSION = 3001.6.0;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
@@ -10154,8 +10114,8 @@
|
|||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
|
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
|
||||||
DYLIB_CURRENT_VERSION = 2903.0.0;
|
DYLIB_CURRENT_VERSION = 3001.6.0;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Title SDL 2.29.2
|
Title SDL 2.30.6
|
||||||
Version 1
|
Version 1
|
||||||
Description SDL Library for Mac OS X (http://www.libsdl.org)
|
Description SDL Library for Mac OS X (http://www.libsdl.org)
|
||||||
DefaultLocation /Library/Frameworks
|
DefaultLocation /Library/Frameworks
|
||||||
|
|||||||
Vendored
+56
-63
@@ -219,8 +219,8 @@ esac
|
|||||||
ofile=libtool
|
ofile=libtool
|
||||||
can_build_shared=yes
|
can_build_shared=yes
|
||||||
|
|
||||||
# All known linkers require a '.a' archive for static linking (except MSVC,
|
# All known linkers require a '.a' archive for static linking (except MSVC and
|
||||||
# which needs '.lib').
|
# ICC, which need '.lib').
|
||||||
libext=a
|
libext=a
|
||||||
|
|
||||||
with_gnu_ld=$lt_cv_prog_gnu_ld
|
with_gnu_ld=$lt_cv_prog_gnu_ld
|
||||||
@@ -1365,7 +1365,7 @@ mips64*-*linux*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
||||||
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
|
||||||
# Find out what ABI is being produced by ac_compile, and set linker
|
# Find out what ABI is being produced by ac_compile, and set linker
|
||||||
# options accordingly. Note that the listed cases only cover the
|
# options accordingly. Note that the listed cases only cover the
|
||||||
# situations where additional linker options are needed (such as when
|
# situations where additional linker options are needed (such as when
|
||||||
@@ -1380,7 +1380,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_i386_fbsd"
|
LD="${LD-ld} -m elf_i386_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*)
|
x86_64-*linux*|x86_64-gnu*)
|
||||||
case `/usr/bin/file conftest.o` in
|
case `/usr/bin/file conftest.o` in
|
||||||
*x86-64*)
|
*x86-64*)
|
||||||
LD="${LD-ld} -m elf32_x86_64"
|
LD="${LD-ld} -m elf32_x86_64"
|
||||||
@@ -1409,7 +1409,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_x86_64_fbsd"
|
LD="${LD-ld} -m elf_x86_64_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*)
|
x86_64-*linux*|x86_64-gnu*)
|
||||||
LD="${LD-ld} -m elf_x86_64"
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
;;
|
;;
|
||||||
powerpcle-*linux*|powerpc64le-*linux*)
|
powerpcle-*linux*|powerpc64le-*linux*)
|
||||||
@@ -1540,15 +1540,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
|
|||||||
old_postuninstall_cmds=
|
old_postuninstall_cmds=
|
||||||
|
|
||||||
if test -n "$RANLIB"; then
|
if test -n "$RANLIB"; then
|
||||||
case $host_os in
|
|
||||||
bitrig* | openbsd*)
|
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
||||||
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@@ -1687,7 +1680,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
|
|||||||
lt_cv_sys_max_cmd_len=-1;
|
lt_cv_sys_max_cmd_len=-1;
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | windows* | cegcc*)
|
||||||
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
||||||
# about 5 minutes as the teststring grows exponentially.
|
# about 5 minutes as the teststring grows exponentially.
|
||||||
# Worse, since 9x/ME are not pre-emptively multitasking,
|
# Worse, since 9x/ME are not pre-emptively multitasking,
|
||||||
@@ -1930,7 +1923,7 @@ else
|
|||||||
lt_cv_dlopen_self=yes
|
lt_cv_dlopen_self=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | pw32* | cegcc*)
|
mingw* | windows* | pw32* | cegcc*)
|
||||||
lt_cv_dlopen=LoadLibrary
|
lt_cv_dlopen=LoadLibrary
|
||||||
lt_cv_dlopen_libs=
|
lt_cv_dlopen_libs=
|
||||||
;;
|
;;
|
||||||
@@ -2298,7 +2291,7 @@ if test yes = "$GCC"; then
|
|||||||
*) lt_awk_arg='/^libraries:/' ;;
|
*) lt_awk_arg='/^libraries:/' ;;
|
||||||
esac
|
esac
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
|
mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
|
||||||
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
||||||
esac
|
esac
|
||||||
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
||||||
@@ -2356,7 +2349,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
|
|||||||
# AWK program above erroneously prepends '/' to C:/dos/paths
|
# AWK program above erroneously prepends '/' to C:/dos/paths
|
||||||
# for these hosts.
|
# for these hosts.
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
||||||
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
|
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
|
||||||
esac
|
esac
|
||||||
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
||||||
@@ -2525,7 +2518,7 @@ bsdi[[45]]*)
|
|||||||
# libtool to hard-code these into programs
|
# libtool to hard-code these into programs
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
version_type=windows
|
version_type=windows
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
need_version=no
|
need_version=no
|
||||||
@@ -2558,7 +2551,7 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
m4_if([$1], [],[
|
m4_if([$1], [],[
|
||||||
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
|
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
|
||||||
;;
|
;;
|
||||||
mingw* | cegcc*)
|
mingw* | windows* | cegcc*)
|
||||||
# MinGW DLLs use traditional 'lib' prefix
|
# MinGW DLLs use traditional 'lib' prefix
|
||||||
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
@@ -2571,14 +2564,14 @@ m4_if([$1], [],[
|
|||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*,cl*)
|
*,cl* | *,icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
libname_spec='$name'
|
libname_spec='$name'
|
||||||
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
library_names_spec='$libname.dll.lib'
|
library_names_spec='$libname.dll.lib'
|
||||||
|
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
sys_lib_search_path_spec=
|
sys_lib_search_path_spec=
|
||||||
lt_save_ifs=$IFS
|
lt_save_ifs=$IFS
|
||||||
IFS=';'
|
IFS=';'
|
||||||
@@ -2628,7 +2621,7 @@ m4_if([$1], [],[
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
# Assume MSVC wrapper
|
# Assume MSVC and ICC wrapper
|
||||||
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
|
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
|
||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
@@ -3267,7 +3260,7 @@ if test yes = "$GCC"; then
|
|||||||
# Check if gcc -print-prog-name=ld gives a path.
|
# Check if gcc -print-prog-name=ld gives a path.
|
||||||
AC_MSG_CHECKING([for ld used by $CC])
|
AC_MSG_CHECKING([for ld used by $CC])
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw*)
|
*-*-mingw* | *-*-windows*)
|
||||||
# gcc leaves a trailing carriage return, which upsets mingw
|
# gcc leaves a trailing carriage return, which upsets mingw
|
||||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||||
*)
|
*)
|
||||||
@@ -3376,7 +3369,7 @@ case $reload_flag in
|
|||||||
esac
|
esac
|
||||||
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
reload_cmds=false
|
reload_cmds=false
|
||||||
fi
|
fi
|
||||||
@@ -3476,7 +3469,7 @@ cygwin*)
|
|||||||
lt_cv_deplibs_check_method=pass_all # SDL customization
|
lt_cv_deplibs_check_method=pass_all # SDL customization
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | pw32*)
|
mingw* | windows* | pw32*)
|
||||||
# Base MSYS/MinGW do not provide the 'file' command needed by
|
# Base MSYS/MinGW do not provide the 'file' command needed by
|
||||||
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
||||||
# unless we find 'file', for example because we are cross-compiling.
|
# unless we find 'file', for example because we are cross-compiling.
|
||||||
@@ -3641,7 +3634,7 @@ file_magic_glob=
|
|||||||
want_nocaseglob=no
|
want_nocaseglob=no
|
||||||
if test "$build" = "$host"; then
|
if test "$build" = "$host"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | pw32*)
|
mingw* | windows* | pw32*)
|
||||||
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
||||||
want_nocaseglob=yes
|
want_nocaseglob=yes
|
||||||
else
|
else
|
||||||
@@ -3693,7 +3686,7 @@ else
|
|||||||
# Tru64's nm complains that /dev/null is an invalid object file
|
# Tru64's nm complains that /dev/null is an invalid object file
|
||||||
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*) lt_bad_file=conftest.nm/nofile ;;
|
mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
|
||||||
*) lt_bad_file=/dev/null ;;
|
*) lt_bad_file=/dev/null ;;
|
||||||
esac
|
esac
|
||||||
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
||||||
@@ -3784,7 +3777,7 @@ lt_cv_sharedlib_from_linklib_cmd,
|
|||||||
[lt_cv_sharedlib_from_linklib_cmd='unknown'
|
[lt_cv_sharedlib_from_linklib_cmd='unknown'
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# two different shell functions defined in ltmain.sh;
|
# two different shell functions defined in ltmain.sh;
|
||||||
# decide which one to use based on capabilities of $DLLTOOL
|
# decide which one to use based on capabilities of $DLLTOOL
|
||||||
case `$DLLTOOL --help 2>&1` in
|
case `$DLLTOOL --help 2>&1` in
|
||||||
@@ -3929,7 +3922,7 @@ case $host_os in
|
|||||||
aix*)
|
aix*)
|
||||||
symcode='[[BCDT]]'
|
symcode='[[BCDT]]'
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
symcode='[[ABCDGISTW]]'
|
symcode='[[ABCDGISTW]]'
|
||||||
;;
|
;;
|
||||||
hpux*)
|
hpux*)
|
||||||
@@ -4008,7 +4001,7 @@ $lt_c_name_lib_hook\
|
|||||||
# Handle CRLF in mingw tool chain
|
# Handle CRLF in mingw tool chain
|
||||||
opt_cr=
|
opt_cr=
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -4023,7 +4016,7 @@ for ac_symprfx in "" "_"; do
|
|||||||
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
||||||
# Fake it for dumpbin and say T for any non-static function,
|
# Fake it for dumpbin and say T for any non-static function,
|
||||||
# D for any global variable and I for any imported variable.
|
# D for any global variable and I for any imported variable.
|
||||||
# Also find C++ and __fastcall symbols from MSVC++,
|
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
|
||||||
# which start with @ or ?.
|
# which start with @ or ?.
|
||||||
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
||||||
" {last_section=section; section=\$ 3};"\
|
" {last_section=section; section=\$ 3};"\
|
||||||
@@ -4235,7 +4228,7 @@ m4_if([$1], [CXX], [
|
|||||||
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -4311,7 +4304,7 @@ m4_if([$1], [CXX], [
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
m4_if([$1], [GCJ], [],
|
m4_if([$1], [GCJ], [],
|
||||||
@@ -4559,7 +4552,7 @@ m4_if([$1], [CXX], [
|
|||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -4663,7 +4656,7 @@ m4_if([$1], [CXX], [
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
m4_if([$1], [GCJ], [],
|
m4_if([$1], [GCJ], [],
|
||||||
@@ -4938,9 +4931,9 @@ m4_if([$1], [CXX], [
|
|||||||
pw32*)
|
pw32*)
|
||||||
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
|
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | windows* | cegcc*)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*)
|
cl* | icl*)
|
||||||
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -4996,16 +4989,16 @@ dnl Note also adjust exclude_expsyms for C++ above.
|
|||||||
extract_expsyms_cmds=
|
extract_expsyms_cmds=
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++ or Intel C++ Compiler.
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
with_gnu_ld=no
|
with_gnu_ld=no
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
interix*)
|
interix*)
|
||||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
|
||||||
with_gnu_ld=yes
|
with_gnu_ld=yes
|
||||||
;;
|
;;
|
||||||
openbsd* | bitrig*)
|
openbsd* | bitrig*)
|
||||||
@@ -5111,7 +5104,7 @@ _LT_EOF
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
|
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
|
||||||
# as there is no search path for DLLs.
|
# as there is no search path for DLLs.
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
|
||||||
@@ -5568,14 +5561,14 @@ _LT_EOF
|
|||||||
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
|
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++ or Intel C++ Compiler.
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*)
|
cl* | icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
||||||
_LT_TAGVAR(always_export_symbols, $1)=yes
|
_LT_TAGVAR(always_export_symbols, $1)=yes
|
||||||
@@ -5585,14 +5578,14 @@ _LT_EOF
|
|||||||
# Tell ltmain to make .dll files, not .so files.
|
# Tell ltmain to make .dll files, not .so files.
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
# FIXME: Setting linknames here is a bad hack.
|
# FIXME: Setting linknames here is a bad hack.
|
||||||
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
_LT_TAGVAR(archive_cmds, $1)='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
|
||||||
cp "$export_symbols" "$output_objdir/$soname.def";
|
cp "$export_symbols" "$output_objdir/$soname.def";
|
||||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
||||||
else
|
else
|
||||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
fi~
|
fi~
|
||||||
$CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
$CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
||||||
linknames='
|
linknames='
|
||||||
# The linker will not automatically build a static lib if we build a DLL.
|
# The linker will not automatically build a static lib if we build a DLL.
|
||||||
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
||||||
@@ -5616,7 +5609,7 @@ _LT_EOF
|
|||||||
fi'
|
fi'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Assume MSVC wrapper
|
# Assume MSVC and ICC wrapper
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
|
||||||
# Tell ltmain to make .lib files, not .a files.
|
# Tell ltmain to make .lib files, not .a files.
|
||||||
@@ -6435,7 +6428,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
GXX=no
|
GXX=no
|
||||||
@@ -6644,10 +6637,10 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
case $GXX,$cc_basename in
|
case $GXX,$cc_basename in
|
||||||
,cl* | no,cl*)
|
,cl* | no,cl* | ,icl* | no,icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
|
||||||
@@ -6811,7 +6804,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -6876,7 +6869,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -7215,7 +7208,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
# FIXME: insert proper C++ library support
|
# FIXME: insert proper C++ library support
|
||||||
@@ -7299,7 +7292,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
||||||
else
|
else
|
||||||
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
||||||
# platform.
|
# platform.
|
||||||
@@ -7310,7 +7303,7 @@ if test yes != "$_lt_caught_CXX_error"; then
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
|
||||||
@@ -8331,7 +8324,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
|
|||||||
[case $host in
|
[case $host in
|
||||||
*-*-mingw* )
|
*-*-mingw* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -8344,7 +8337,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
|
|||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -8370,9 +8363,9 @@ AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
|
|||||||
[#assume ordinary cross tools, or native build.
|
[#assume ordinary cross tools, or native build.
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw* )
|
*-*-mingw* | *-*-windows* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Vendored
+1
-1
@@ -128,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
|||||||
[enable_win32_dll=yes
|
[enable_win32_dll=yes
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
|
||||||
AC_CHECK_TOOL(AS, as, false)
|
AC_CHECK_TOOL(AS, as, false)
|
||||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<application android:label="@string/app_name"
|
<application android:label="@string/app_name"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
android:theme="@style/AppTheme"
|
||||||
android:hardwareAccelerated="true" >
|
android:hardwareAccelerated="true" >
|
||||||
|
|
||||||
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
||||||
|
|||||||
@@ -277,6 +277,7 @@ public class HIDDeviceManager {
|
|||||||
0x044f, // Thrustmaster
|
0x044f, // Thrustmaster
|
||||||
0x045e, // Microsoft
|
0x045e, // Microsoft
|
||||||
0x0738, // Mad Catz
|
0x0738, // Mad Catz
|
||||||
|
0x0b05, // ASUS
|
||||||
0x0e6f, // PDP
|
0x0e6f, // PDP
|
||||||
0x0f0d, // Hori
|
0x0f0d, // Hori
|
||||||
0x10f5, // Turtle Beach
|
0x10f5, // Turtle Beach
|
||||||
@@ -590,7 +591,13 @@ public class HIDDeviceManager {
|
|||||||
} else {
|
} else {
|
||||||
flags = 0;
|
flags = 0;
|
||||||
}
|
}
|
||||||
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
|
if (Build.VERSION.SDK_INT >= 33 /* Android 14.0 (U) */) {
|
||||||
|
Intent intent = new Intent(HIDDeviceManager.ACTION_USB_PERMISSION);
|
||||||
|
intent.setPackage(mContext.getPackageName());
|
||||||
|
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, intent, flags));
|
||||||
|
} else {
|
||||||
|
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
|
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
|
||||||
HIDDeviceOpenResult(deviceID, false);
|
HIDDeviceOpenResult(deviceID, false);
|
||||||
|
|||||||
@@ -38,6 +38,10 @@ public class SDL {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
||||||
|
loadLibrary(libraryName, mContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void loadLibrary(String libraryName, Context context) throws UnsatisfiedLinkError, SecurityException, NullPointerException {
|
||||||
|
|
||||||
if (libraryName == null) {
|
if (libraryName == null) {
|
||||||
throw new NullPointerException("No library name provided.");
|
throw new NullPointerException("No library name provided.");
|
||||||
@@ -53,10 +57,10 @@ public class SDL {
|
|||||||
// To use ReLinker, just add it as a dependency. For more information, see
|
// To use ReLinker, just add it as a dependency. For more information, see
|
||||||
// https://github.com/KeepSafe/ReLinker for ReLinker's repository.
|
// https://github.com/KeepSafe/ReLinker for ReLinker's repository.
|
||||||
//
|
//
|
||||||
Class<?> relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
|
Class<?> relinkClass = context.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker");
|
||||||
Class<?> relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
|
Class<?> relinkListenerClass = context.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener");
|
||||||
Class<?> contextClass = mContext.getClassLoader().loadClass("android.content.Context");
|
Class<?> contextClass = context.getClassLoader().loadClass("android.content.Context");
|
||||||
Class<?> stringClass = mContext.getClassLoader().loadClass("java.lang.String");
|
Class<?> stringClass = context.getClassLoader().loadClass("java.lang.String");
|
||||||
|
|
||||||
// Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
|
// Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if
|
||||||
// they've changed during updates.
|
// they've changed during updates.
|
||||||
@@ -66,7 +70,7 @@ public class SDL {
|
|||||||
|
|
||||||
// Actually load the library!
|
// Actually load the library!
|
||||||
Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
|
Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass);
|
||||||
loadMethod.invoke(relinkInstance, mContext, libraryName, null, null);
|
loadMethod.invoke(relinkInstance, context, libraryName, null, null);
|
||||||
}
|
}
|
||||||
catch (final Throwable e) {
|
catch (final Throwable e) {
|
||||||
// Fall back
|
// Fall back
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ import java.util.Locale;
|
|||||||
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
||||||
private static final String TAG = "SDL";
|
private static final String TAG = "SDL";
|
||||||
private static final int SDL_MAJOR_VERSION = 2;
|
private static final int SDL_MAJOR_VERSION = 2;
|
||||||
private static final int SDL_MINOR_VERSION = 29;
|
private static final int SDL_MINOR_VERSION = 30;
|
||||||
private static final int SDL_MICRO_VERSION = 2;
|
private static final int SDL_MICRO_VERSION = 6;
|
||||||
/*
|
/*
|
||||||
// Display InputType.SOURCE/CLASS of events and devices
|
// Display InputType.SOURCE/CLASS of events and devices
|
||||||
//
|
//
|
||||||
@@ -281,7 +281,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
// Load the .so
|
// Load the .so
|
||||||
public void loadLibraries() {
|
public void loadLibraries() {
|
||||||
for (String lib : getLibraries()) {
|
for (String lib : getLibraries()) {
|
||||||
SDL.loadLibrary(lib);
|
SDL.loadLibrary(lib, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -995,8 +995,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
/* No valid hint, nothing is explicitly allowed */
|
/* No valid hint, nothing is explicitly allowed */
|
||||||
if (!is_portrait_allowed && !is_landscape_allowed) {
|
if (!is_portrait_allowed && !is_landscape_allowed) {
|
||||||
if (resizable) {
|
if (resizable) {
|
||||||
/* All orientations are allowed */
|
/* All orientations are allowed, respecting user orientation lock setting */
|
||||||
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
req = ActivityInfo.SCREEN_ORIENTATION_FULL_USER;
|
||||||
} else {
|
} else {
|
||||||
/* Fixed window and nothing specified. Get orientation from w/h of created window */
|
/* Fixed window and nothing specified. Get orientation from w/h of created window */
|
||||||
req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
|
req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
|
||||||
@@ -1005,8 +1005,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
/* At least one orientation is allowed */
|
/* At least one orientation is allowed */
|
||||||
if (resizable) {
|
if (resizable) {
|
||||||
if (is_portrait_allowed && is_landscape_allowed) {
|
if (is_portrait_allowed && is_landscape_allowed) {
|
||||||
/* hint allows both landscape and portrait, promote to full sensor */
|
/* hint allows both landscape and portrait, promote to full user */
|
||||||
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
|
req = ActivityInfo.SCREEN_ORIENTATION_FULL_USER;
|
||||||
} else {
|
} else {
|
||||||
/* Use the only one allowed "orientation" */
|
/* Use the only one allowed "orientation" */
|
||||||
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
|
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
|
||||||
|
|||||||
@@ -546,13 +546,15 @@ class SDLHapticHandler {
|
|||||||
if (haptic == null) {
|
if (haptic == null) {
|
||||||
InputDevice device = InputDevice.getDevice(deviceIds[i]);
|
InputDevice device = InputDevice.getDevice(deviceIds[i]);
|
||||||
Vibrator vib = device.getVibrator();
|
Vibrator vib = device.getVibrator();
|
||||||
if (vib.hasVibrator()) {
|
if (vib != null) {
|
||||||
haptic = new SDLHaptic();
|
if (vib.hasVibrator()) {
|
||||||
haptic.device_id = deviceIds[i];
|
haptic = new SDLHaptic();
|
||||||
haptic.name = device.getName();
|
haptic.device_id = deviceIds[i];
|
||||||
haptic.vib = vib;
|
haptic.name = device.getName();
|
||||||
mHaptics.add(haptic);
|
haptic.vib = vib;
|
||||||
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
mHaptics.add(haptic);
|
||||||
|
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
|
<style name="AppTheme" parent="android:Theme.NoTitleBar.Fullscreen">
|
||||||
<!-- Customize your theme here. -->
|
<!-- Customize your theme here. -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
+51
-37
@@ -2418,7 +2418,7 @@ libtool_validate_options ()
|
|||||||
case $host in
|
case $host in
|
||||||
# Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
|
# Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
|
||||||
# see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
|
# see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
|
||||||
*cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
|
*cygwin* | *mingw* | *windows* | *pw32* | *cegcc* | *solaris2* | *os2*)
|
||||||
# don't eliminate duplications in $postdeps and $predeps
|
# don't eliminate duplications in $postdeps and $predeps
|
||||||
opt_duplicate_compiler_generated_deps=:
|
opt_duplicate_compiler_generated_deps=:
|
||||||
;;
|
;;
|
||||||
@@ -2750,7 +2750,7 @@ EOF
|
|||||||
|
|
||||||
# func_convert_core_file_wine_to_w32 ARG
|
# func_convert_core_file_wine_to_w32 ARG
|
||||||
# Helper function used by file name conversion functions when $build is *nix,
|
# Helper function used by file name conversion functions when $build is *nix,
|
||||||
# and $host is mingw, cygwin, or some other w32 environment. Relies on a
|
# and $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
|
||||||
# correctly configured wine environment available, with the winepath program
|
# correctly configured wine environment available, with the winepath program
|
||||||
# in $build's $PATH.
|
# in $build's $PATH.
|
||||||
#
|
#
|
||||||
@@ -2782,9 +2782,10 @@ func_convert_core_file_wine_to_w32 ()
|
|||||||
|
|
||||||
# func_convert_core_path_wine_to_w32 ARG
|
# func_convert_core_path_wine_to_w32 ARG
|
||||||
# Helper function used by path conversion functions when $build is *nix, and
|
# Helper function used by path conversion functions when $build is *nix, and
|
||||||
# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
|
# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
|
||||||
# configured wine environment available, with the winepath program in $build's
|
# correctly configured wine environment available, with the winepath program
|
||||||
# $PATH. Assumes ARG has no leading or trailing path separator characters.
|
# in $build's $PATH. Assumes ARG has no leading or trailing path separator
|
||||||
|
# characters.
|
||||||
#
|
#
|
||||||
# ARG is path to be converted from $build format to win32.
|
# ARG is path to be converted from $build format to win32.
|
||||||
# Result is available in $func_convert_core_path_wine_to_w32_result.
|
# Result is available in $func_convert_core_path_wine_to_w32_result.
|
||||||
@@ -3439,7 +3440,7 @@ func_mode_compile ()
|
|||||||
|
|
||||||
# On Cygwin there's no "real" PIC flag so we must build both object types
|
# On Cygwin there's no "real" PIC flag so we must build both object types
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | os2* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | os2* | cegcc*)
|
||||||
pic_mode=default
|
pic_mode=default
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -4316,7 +4317,7 @@ func_mode_install ()
|
|||||||
'exit $?'
|
'exit $?'
|
||||||
tstripme=$stripme
|
tstripme=$stripme
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
case $realname in
|
case $realname in
|
||||||
*.dll.a)
|
*.dll.a)
|
||||||
tstripme=
|
tstripme=
|
||||||
@@ -4429,7 +4430,7 @@ func_mode_install ()
|
|||||||
|
|
||||||
# Do a test to see if this is really a libtool program.
|
# Do a test to see if this is really a libtool program.
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw*)
|
*cygwin* | *mingw* | *windows*)
|
||||||
if func_ltwrapper_executable_p "$file"; then
|
if func_ltwrapper_executable_p "$file"; then
|
||||||
func_ltwrapper_scriptname "$file"
|
func_ltwrapper_scriptname "$file"
|
||||||
wrapper=$func_ltwrapper_scriptname_result
|
wrapper=$func_ltwrapper_scriptname_result
|
||||||
@@ -4657,7 +4658,7 @@ extern \"C\" {
|
|||||||
$RM $export_symbols
|
$RM $export_symbols
|
||||||
eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
|
eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *cegcc* )
|
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||||
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
||||||
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
|
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
|
||||||
;;
|
;;
|
||||||
@@ -4669,7 +4670,7 @@ extern \"C\" {
|
|||||||
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
|
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
|
||||||
eval '$MV "$nlist"T "$nlist"'
|
eval '$MV "$nlist"T "$nlist"'
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *cegcc* )
|
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||||
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
||||||
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
|
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
|
||||||
;;
|
;;
|
||||||
@@ -4683,7 +4684,7 @@ extern \"C\" {
|
|||||||
func_basename "$dlprefile"
|
func_basename "$dlprefile"
|
||||||
name=$func_basename_result
|
name=$func_basename_result
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *cegcc* )
|
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||||
# if an import library, we need to obtain dlname
|
# if an import library, we need to obtain dlname
|
||||||
if func_win32_import_lib_p "$dlprefile"; then
|
if func_win32_import_lib_p "$dlprefile"; then
|
||||||
func_tr_sh "$dlprefile"
|
func_tr_sh "$dlprefile"
|
||||||
@@ -4858,7 +4859,7 @@ static const void *lt_preloaded_setup() {
|
|||||||
# Transform the symbol file into the correct name.
|
# Transform the symbol file into the correct name.
|
||||||
symfileobj=$output_objdir/${my_outputname}S.$objext
|
symfileobj=$output_objdir/${my_outputname}S.$objext
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *cegcc* )
|
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||||
if test -f "$output_objdir/$my_outputname.def"; then
|
if test -f "$output_objdir/$my_outputname.def"; then
|
||||||
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
|
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
|
||||||
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
|
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
|
||||||
@@ -5201,7 +5202,7 @@ func_extract_archives ()
|
|||||||
#
|
#
|
||||||
# Emit a libtool wrapper script on stdout.
|
# Emit a libtool wrapper script on stdout.
|
||||||
# Don't directly open a file because we may want to
|
# Don't directly open a file because we may want to
|
||||||
# incorporate the script contents within a cygwin/mingw
|
# incorporate the script contents within a cygwin/mingw/windows
|
||||||
# wrapper executable. Must ONLY be called from within
|
# wrapper executable. Must ONLY be called from within
|
||||||
# func_mode_link because it depends on a number of variables
|
# func_mode_link because it depends on a number of variables
|
||||||
# set therein.
|
# set therein.
|
||||||
@@ -5209,7 +5210,7 @@ func_extract_archives ()
|
|||||||
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
|
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
|
||||||
# variable will take. If 'yes', then the emitted script
|
# variable will take. If 'yes', then the emitted script
|
||||||
# will assume that the directory where it is stored is
|
# will assume that the directory where it is stored is
|
||||||
# the $objdir directory. This is a cygwin/mingw-specific
|
# the $objdir directory. This is a cygwin/mingw/windows-specific
|
||||||
# behavior.
|
# behavior.
|
||||||
func_emit_wrapper ()
|
func_emit_wrapper ()
|
||||||
{
|
{
|
||||||
@@ -5333,7 +5334,7 @@ func_exec_program_core ()
|
|||||||
"
|
"
|
||||||
case $host in
|
case $host in
|
||||||
# Backslashes separate directories on plain windows
|
# Backslashes separate directories on plain windows
|
||||||
*-*-mingw | *-*-os2* | *-cegcc*)
|
*-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*)
|
||||||
$ECHO "\
|
$ECHO "\
|
||||||
if test -n \"\$lt_option_debug\"; then
|
if test -n \"\$lt_option_debug\"; then
|
||||||
\$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
|
\$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
|
||||||
@@ -5401,7 +5402,7 @@ func_exec_program ()
|
|||||||
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
|
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
|
||||||
done
|
done
|
||||||
|
|
||||||
# Usually 'no', except on cygwin/mingw when embedded into
|
# Usually 'no', except on cygwin/mingw/windows when embedded into
|
||||||
# the cwrapper.
|
# the cwrapper.
|
||||||
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
|
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
|
||||||
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
|
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
|
||||||
@@ -5558,7 +5559,7 @@ EOF
|
|||||||
/* declarations of non-ANSI functions */
|
/* declarations of non-ANSI functions */
|
||||||
#if defined __MINGW32__
|
#if defined __MINGW32__
|
||||||
# ifdef __STRICT_ANSI__
|
# ifdef __STRICT_ANSI__
|
||||||
int _putenv (const char *);
|
_CRTIMP int __cdecl _putenv (const char *);
|
||||||
# endif
|
# endif
|
||||||
#elif defined __CYGWIN__
|
#elif defined __CYGWIN__
|
||||||
# ifdef __STRICT_ANSI__
|
# ifdef __STRICT_ANSI__
|
||||||
@@ -5756,7 +5757,7 @@ main (int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
case $host in
|
case $host in
|
||||||
*mingw* | *cygwin* )
|
*mingw* | *windows* | *cygwin* )
|
||||||
# make stdout use "unix" line endings
|
# make stdout use "unix" line endings
|
||||||
echo " setmode(1,_O_BINARY);"
|
echo " setmode(1,_O_BINARY);"
|
||||||
;;
|
;;
|
||||||
@@ -5859,7 +5860,7 @@ EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
{
|
{
|
||||||
char* p;
|
char* p;
|
||||||
@@ -5901,7 +5902,7 @@ EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
/* execv doesn't actually work on mingw as expected on unix */
|
/* execv doesn't actually work on mingw as expected on unix */
|
||||||
newargz = prepare_spawn (newargz);
|
newargz = prepare_spawn (newargz);
|
||||||
@@ -6320,7 +6321,7 @@ lt_update_lib_path (const char *name, const char *value)
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
|
|
||||||
/* Prepares an argument vector before calling spawn().
|
/* Prepares an argument vector before calling spawn().
|
||||||
@@ -6495,7 +6496,7 @@ func_mode_link ()
|
|||||||
$debug_cmd
|
$debug_cmd
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
||||||
# It is impossible to link a dll without this setting, and
|
# It is impossible to link a dll without this setting, and
|
||||||
# we shouldn't force the makefile maintainer to figure out
|
# we shouldn't force the makefile maintainer to figure out
|
||||||
# what system we are compiling for in order to pass an extra
|
# what system we are compiling for in order to pass an extra
|
||||||
@@ -7003,7 +7004,7 @@ func_mode_link ()
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
||||||
testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
|
testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
|
||||||
case :$dllsearchpath: in
|
case :$dllsearchpath: in
|
||||||
*":$dir:"*) ;;
|
*":$dir:"*) ;;
|
||||||
@@ -7023,7 +7024,7 @@ func_mode_link ()
|
|||||||
-l*)
|
-l*)
|
||||||
if test X-lc = "X$arg" || test X-lm = "X$arg"; then
|
if test X-lc = "X$arg" || test X-lm = "X$arg"; then
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
|
||||||
# These systems don't actually have a C or math library (as such)
|
# These systems don't actually have a C or math library (as such)
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
@@ -7118,7 +7119,7 @@ func_mode_link ()
|
|||||||
|
|
||||||
-no-install)
|
-no-install)
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
|
||||||
# The PATH hackery in wrapper scripts is required on Windows
|
# The PATH hackery in wrapper scripts is required on Windows
|
||||||
# and Darwin in order for the loader to find any dlls it needs.
|
# and Darwin in order for the loader to find any dlls it needs.
|
||||||
func_warning "'-no-install' is ignored for $host"
|
func_warning "'-no-install' is ignored for $host"
|
||||||
@@ -7303,13 +7304,26 @@ func_mode_link ()
|
|||||||
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
|
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
|
||||||
# -specs=* GCC specs files
|
# -specs=* GCC specs files
|
||||||
# -stdlib=* select c++ std lib with clang
|
# -stdlib=* select c++ std lib with clang
|
||||||
|
# -fdiagnostics-color* simply affects output
|
||||||
|
# -frecord-gcc-switches used to verify flags were respected
|
||||||
# -fsanitize=* Clang/GCC memory and address sanitizer
|
# -fsanitize=* Clang/GCC memory and address sanitizer
|
||||||
|
# -fno-sanitize* Clang/GCC memory and address sanitizer
|
||||||
|
# -shared-libsan Link with shared sanitizer runtimes (Clang)
|
||||||
|
# -static-libsan Link with static sanitizer runtimes (Clang)
|
||||||
# -fuse-ld=* Linker select flags for GCC
|
# -fuse-ld=* Linker select flags for GCC
|
||||||
|
# -rtlib=* select c runtime lib with clang
|
||||||
|
# --unwindlib=* select unwinder library with clang
|
||||||
|
# -f{file|debug|macro|profile}-prefix-map=* needed for lto linking
|
||||||
# -Wa,* Pass flags directly to the assembler
|
# -Wa,* Pass flags directly to the assembler
|
||||||
|
# -Werror, -Werror=* Report (specified) warnings as errors
|
||||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
||||||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
|
||||||
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
|
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*| \
|
||||||
-specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
|
-stdlib=*|-rtlib=*|--unwindlib=*| \
|
||||||
|
-specs=*|-fsanitize=*|-fno-sanitize*|-shared-libsan|-static-libsan| \
|
||||||
|
-ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*|-fprofile-prefix-map=*| \
|
||||||
|
-fdiagnostics-color*|-frecord-gcc-switches| \
|
||||||
|
-fuse-ld=*|-Wa,*|-Werror|-Werror=*)
|
||||||
func_quote_for_eval "$arg"
|
func_quote_for_eval "$arg"
|
||||||
arg=$func_quote_for_eval_result
|
arg=$func_quote_for_eval_result
|
||||||
func_append compile_command " $arg"
|
func_append compile_command " $arg"
|
||||||
@@ -8022,7 +8036,7 @@ func_mode_link ()
|
|||||||
fi
|
fi
|
||||||
case $host in
|
case $host in
|
||||||
# special handling for platforms with PE-DLLs.
|
# special handling for platforms with PE-DLLs.
|
||||||
*cygwin* | *mingw* | *cegcc* )
|
*cygwin* | *mingw* | *windows* | *cegcc* )
|
||||||
# Linker will automatically link against shared library if both
|
# Linker will automatically link against shared library if both
|
||||||
# static and shared are present. Therefore, ensure we extract
|
# static and shared are present. Therefore, ensure we extract
|
||||||
# symbols from the import library if a shared library is present
|
# symbols from the import library if a shared library is present
|
||||||
@@ -8166,7 +8180,7 @@ func_mode_link ()
|
|||||||
if test -n "$library_names" &&
|
if test -n "$library_names" &&
|
||||||
{ test no = "$use_static_libs" || test -z "$old_library"; }; then
|
{ test no = "$use_static_libs" || test -z "$old_library"; }; then
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *cegcc* | *os2*)
|
*cygwin* | *mingw* | *windows* | *cegcc* | *os2*)
|
||||||
# No point in relinking DLLs because paths are not encoded
|
# No point in relinking DLLs because paths are not encoded
|
||||||
func_append notinst_deplibs " $lib"
|
func_append notinst_deplibs " $lib"
|
||||||
need_relink=no
|
need_relink=no
|
||||||
@@ -8236,7 +8250,7 @@ func_mode_link ()
|
|||||||
elif test -n "$soname_spec"; then
|
elif test -n "$soname_spec"; then
|
||||||
# bleh windows
|
# bleh windows
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | mingw* | *cegcc*) # | *os2* # SDL customization: removed OS/2 versioning support.
|
*cygwin* | mingw* | *windows* | *cegcc*) # | *os2* # SDL customization: removed OS/2 versioning support.
|
||||||
func_arith $current - $age
|
func_arith $current - $age
|
||||||
major=$func_arith_result
|
major=$func_arith_result
|
||||||
versuffix=-$major
|
versuffix=-$major
|
||||||
@@ -8845,7 +8859,7 @@ func_mode_link ()
|
|||||||
age=$number_minor
|
age=$number_minor
|
||||||
revision=$number_revision
|
revision=$number_revision
|
||||||
;;
|
;;
|
||||||
freebsd-aout|qnx|sunos)
|
freebsd-aout|qnx|sco|sunos)
|
||||||
current=$number_major
|
current=$number_major
|
||||||
revision=$number_minor
|
revision=$number_minor
|
||||||
age=0
|
age=0
|
||||||
@@ -9146,7 +9160,7 @@ func_mode_link ()
|
|||||||
if test yes = "$build_libtool_libs"; then
|
if test yes = "$build_libtool_libs"; then
|
||||||
if test -n "$rpath"; then
|
if test -n "$rpath"; then
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
|
||||||
# these systems don't actually have a c library (as such)!
|
# these systems don't actually have a c library (as such)!
|
||||||
;;
|
;;
|
||||||
*-*-rhapsody* | *-*-darwin1.[012])
|
*-*-rhapsody* | *-*-darwin1.[012])
|
||||||
@@ -9660,7 +9674,7 @@ EOF
|
|||||||
|
|
||||||
orig_export_symbols=
|
orig_export_symbols=
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | windows* | cegcc*)
|
||||||
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
|
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
|
||||||
# exporting using user supplied symfile
|
# exporting using user supplied symfile
|
||||||
func_dll_def_p "$export_symbols" || {
|
func_dll_def_p "$export_symbols" || {
|
||||||
@@ -10330,7 +10344,7 @@ EOF
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
|
||||||
testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
|
testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
|
||||||
case :$dllsearchpath: in
|
case :$dllsearchpath: in
|
||||||
*":$libdir:"*) ;;
|
*":$libdir:"*) ;;
|
||||||
@@ -10408,7 +10422,7 @@ EOF
|
|||||||
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
|
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
|
||||||
wrappers_required=false
|
wrappers_required=false
|
||||||
;;
|
;;
|
||||||
*cygwin* | *mingw* )
|
*cygwin* | *mingw* | *windows* )
|
||||||
test yes = "$build_libtool_libs" || wrappers_required=false
|
test yes = "$build_libtool_libs" || wrappers_required=false
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -10561,7 +10575,7 @@ EOF
|
|||||||
*) exeext= ;;
|
*) exeext= ;;
|
||||||
esac
|
esac
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* )
|
*cygwin* | *mingw* | windows* )
|
||||||
func_dirname_and_basename "$output" "" "."
|
func_dirname_and_basename "$output" "" "."
|
||||||
output_name=$func_basename_result
|
output_name=$func_basename_result
|
||||||
output_path=$func_dirname_result
|
output_path=$func_dirname_result
|
||||||
@@ -10893,7 +10907,7 @@ EOF
|
|||||||
# tests/bindir.at for full details.
|
# tests/bindir.at for full details.
|
||||||
tdlname=$dlname
|
tdlname=$dlname
|
||||||
case $host,$output,$installed,$module,$dlname in
|
case $host,$output,$installed,$module,$dlname in
|
||||||
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
|
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *windows*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
|
||||||
# If a -bindir argument was supplied, place the dll there.
|
# If a -bindir argument was supplied, place the dll there.
|
||||||
if test -n "$bindir"; then
|
if test -n "$bindir"; then
|
||||||
func_relative_path "$install_libdir" "$bindir"
|
func_relative_path "$install_libdir" "$bindir"
|
||||||
|
|||||||
@@ -1352,12 +1352,13 @@ endmacro()
|
|||||||
|
|
||||||
macro(CheckLibUDev)
|
macro(CheckLibUDev)
|
||||||
if(SDL_LIBUDEV)
|
if(SDL_LIBUDEV)
|
||||||
check_include_file("libudev.h" have_libudev_header)
|
check_include_file("libudev.h" HAVE_LIBUDEV_HEADER)
|
||||||
if(have_libudev_header)
|
if(HAVE_LIBUDEV_HEADER)
|
||||||
set(HAVE_LIBUDEV_H TRUE)
|
set(HAVE_LIBUDEV_H TRUE)
|
||||||
FindLibraryAndSONAME(udev)
|
FindLibraryAndSONAME(udev)
|
||||||
if(UDEV_LIB_SONAME)
|
if(UDEV_LIB_SONAME)
|
||||||
set(SDL_UDEV_DYNAMIC "\"${UDEV_LIB_SONAME}\"")
|
set(SDL_UDEV_DYNAMIC "\"${UDEV_LIB_SONAME}\"")
|
||||||
|
set(HAVE_LIBUDEV TRUE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -873,7 +873,6 @@ enable_sse2
|
|||||||
enable_sse3
|
enable_sse3
|
||||||
enable_altivec
|
enable_altivec
|
||||||
enable_lsx
|
enable_lsx
|
||||||
enable_lasx
|
|
||||||
enable_oss
|
enable_oss
|
||||||
enable_alsa
|
enable_alsa
|
||||||
with_alsa_prefix
|
with_alsa_prefix
|
||||||
@@ -1675,7 +1674,6 @@ Optional Features:
|
|||||||
--enable-sse3 use SSE3 assembly routines [default=maybe]
|
--enable-sse3 use SSE3 assembly routines [default=maybe]
|
||||||
--enable-altivec use Altivec assembly routines [default=yes]
|
--enable-altivec use Altivec assembly routines [default=yes]
|
||||||
--enable-lsx use LSX assembly routines [default=yes]
|
--enable-lsx use LSX assembly routines [default=yes]
|
||||||
--enable-lasx use LASX assembly routines [default=yes]
|
|
||||||
--enable-oss support the OSS audio API [default=maybe]
|
--enable-oss support the OSS audio API [default=maybe]
|
||||||
--enable-alsa support the ALSA audio API [default=yes]
|
--enable-alsa support the ALSA audio API [default=yes]
|
||||||
--disable-alsatest Do not try to compile and run a test Alsa program
|
--disable-alsatest Do not try to compile and run a test Alsa program
|
||||||
@@ -3509,8 +3507,8 @@ orig_CFLAGS="$CFLAGS"
|
|||||||
|
|
||||||
# See docs/release_checklist.md
|
# See docs/release_checklist.md
|
||||||
SDL_MAJOR_VERSION=2
|
SDL_MAJOR_VERSION=2
|
||||||
SDL_MINOR_VERSION=29
|
SDL_MINOR_VERSION=30
|
||||||
SDL_MICRO_VERSION=2
|
SDL_MICRO_VERSION=6
|
||||||
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
|
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
|
||||||
|
|
||||||
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
|
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
|
||||||
@@ -5035,7 +5033,7 @@ if test yes = "$GCC"; then
|
|||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
|
||||||
printf %s "checking for ld used by $CC... " >&6; }
|
printf %s "checking for ld used by $CC... " >&6; }
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw*)
|
*-*-mingw* | *-*-windows*)
|
||||||
# gcc leaves a trailing carriage return, which upsets mingw
|
# gcc leaves a trailing carriage return, which upsets mingw
|
||||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||||
*)
|
*)
|
||||||
@@ -5162,7 +5160,7 @@ else
|
|||||||
# Tru64's nm complains that /dev/null is an invalid object file
|
# Tru64's nm complains that /dev/null is an invalid object file
|
||||||
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*) lt_bad_file=conftest.nm/nofile ;;
|
mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
|
||||||
*) lt_bad_file=/dev/null ;;
|
*) lt_bad_file=/dev/null ;;
|
||||||
esac
|
esac
|
||||||
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
|
||||||
@@ -5391,7 +5389,7 @@ else $as_nop
|
|||||||
lt_cv_sys_max_cmd_len=-1;
|
lt_cv_sys_max_cmd_len=-1;
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | windows* | cegcc*)
|
||||||
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
# On Win9x/ME, this test blows up -- it succeeds, but takes
|
||||||
# about 5 minutes as the teststring grows exponentially.
|
# about 5 minutes as the teststring grows exponentially.
|
||||||
# Worse, since 9x/ME are not pre-emptively multitasking,
|
# Worse, since 9x/ME are not pre-emptively multitasking,
|
||||||
@@ -5555,7 +5553,7 @@ else $as_nop
|
|||||||
case $host in
|
case $host in
|
||||||
*-*-mingw* )
|
*-*-mingw* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -5568,7 +5566,7 @@ else $as_nop
|
|||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
|
||||||
;;
|
;;
|
||||||
*-*-cygwin* )
|
*-*-cygwin* )
|
||||||
@@ -5603,9 +5601,9 @@ else $as_nop
|
|||||||
#assume ordinary cross tools, or native build.
|
#assume ordinary cross tools, or native build.
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
lt_cv_to_tool_file_cmd=func_convert_file_noop
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw* )
|
*-*-mingw* | *-*-windows* )
|
||||||
case $build in
|
case $build in
|
||||||
*-*-mingw* ) # actually msys
|
*-*-mingw* | *-*-windows* ) # actually msys
|
||||||
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -5639,7 +5637,7 @@ case $reload_flag in
|
|||||||
esac
|
esac
|
||||||
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
reload_cmds='$LD$reload_flag -o $output$reload_objs'
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
reload_cmds=false
|
reload_cmds=false
|
||||||
fi
|
fi
|
||||||
@@ -5812,7 +5810,7 @@ cygwin*)
|
|||||||
lt_cv_deplibs_check_method=pass_all # SDL customization
|
lt_cv_deplibs_check_method=pass_all # SDL customization
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | pw32*)
|
mingw* | windows* | pw32*)
|
||||||
# Base MSYS/MinGW do not provide the 'file' command needed by
|
# Base MSYS/MinGW do not provide the 'file' command needed by
|
||||||
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
# func_win32_libid shell function, so use a weaker test based on 'objdump',
|
||||||
# unless we find 'file', for example because we are cross-compiling.
|
# unless we find 'file', for example because we are cross-compiling.
|
||||||
@@ -5980,7 +5978,7 @@ file_magic_glob=
|
|||||||
want_nocaseglob=no
|
want_nocaseglob=no
|
||||||
if test "$build" = "$host"; then
|
if test "$build" = "$host"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | pw32*)
|
mingw* | windows* | pw32*)
|
||||||
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
|
||||||
want_nocaseglob=yes
|
want_nocaseglob=yes
|
||||||
else
|
else
|
||||||
@@ -6134,7 +6132,7 @@ else $as_nop
|
|||||||
lt_cv_sharedlib_from_linklib_cmd='unknown'
|
lt_cv_sharedlib_from_linklib_cmd='unknown'
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# two different shell functions defined in ltmain.sh;
|
# two different shell functions defined in ltmain.sh;
|
||||||
# decide which one to use based on capabilities of $DLLTOOL
|
# decide which one to use based on capabilities of $DLLTOOL
|
||||||
case `$DLLTOOL --help 2>&1` in
|
case `$DLLTOOL --help 2>&1` in
|
||||||
@@ -6572,15 +6570,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
|
|||||||
old_postuninstall_cmds=
|
old_postuninstall_cmds=
|
||||||
|
|
||||||
if test -n "$RANLIB"; then
|
if test -n "$RANLIB"; then
|
||||||
case $host_os in
|
|
||||||
bitrig* | openbsd*)
|
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
||||||
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@@ -6707,7 +6698,7 @@ case $host_os in
|
|||||||
aix*)
|
aix*)
|
||||||
symcode='[BCDT]'
|
symcode='[BCDT]'
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
symcode='[ABCDGISTW]'
|
symcode='[ABCDGISTW]'
|
||||||
;;
|
;;
|
||||||
hpux*)
|
hpux*)
|
||||||
@@ -6786,7 +6777,7 @@ $lt_c_name_lib_hook\
|
|||||||
# Handle CRLF in mingw tool chain
|
# Handle CRLF in mingw tool chain
|
||||||
opt_cr=
|
opt_cr=
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -6801,7 +6792,7 @@ for ac_symprfx in "" "_"; do
|
|||||||
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
|
||||||
# Fake it for dumpbin and say T for any non-static function,
|
# Fake it for dumpbin and say T for any non-static function,
|
||||||
# D for any global variable and I for any imported variable.
|
# D for any global variable and I for any imported variable.
|
||||||
# Also find C++ and __fastcall symbols from MSVC++,
|
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
|
||||||
# which start with @ or ?.
|
# which start with @ or ?.
|
||||||
lt_cv_sys_global_symbol_pipe="$AWK '"\
|
lt_cv_sys_global_symbol_pipe="$AWK '"\
|
||||||
" {last_section=section; section=\$ 3};"\
|
" {last_section=section; section=\$ 3};"\
|
||||||
@@ -7235,7 +7226,7 @@ mips64*-*linux*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
||||||
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
|
||||||
# Find out what ABI is being produced by ac_compile, and set linker
|
# Find out what ABI is being produced by ac_compile, and set linker
|
||||||
# options accordingly. Note that the listed cases only cover the
|
# options accordingly. Note that the listed cases only cover the
|
||||||
# situations where additional linker options are needed (such as when
|
# situations where additional linker options are needed (such as when
|
||||||
@@ -7254,7 +7245,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_i386_fbsd"
|
LD="${LD-ld} -m elf_i386_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*)
|
x86_64-*linux*|x86_64-gnu*)
|
||||||
case `/usr/bin/file conftest.o` in
|
case `/usr/bin/file conftest.o` in
|
||||||
*x86-64*)
|
*x86-64*)
|
||||||
LD="${LD-ld} -m elf32_x86_64"
|
LD="${LD-ld} -m elf32_x86_64"
|
||||||
@@ -7283,7 +7274,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*kfreebsd*-gnu)
|
x86_64-*kfreebsd*-gnu)
|
||||||
LD="${LD-ld} -m elf_x86_64_fbsd"
|
LD="${LD-ld} -m elf_x86_64_fbsd"
|
||||||
;;
|
;;
|
||||||
x86_64-*linux*)
|
x86_64-*linux*|x86_64-gnu*)
|
||||||
LD="${LD-ld} -m elf_x86_64"
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
;;
|
;;
|
||||||
powerpcle-*linux*|powerpc64le-*linux*)
|
powerpcle-*linux*|powerpc64le-*linux*)
|
||||||
@@ -8279,7 +8270,7 @@ fi
|
|||||||
enable_win32_dll=yes
|
enable_win32_dll=yes
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
|
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
|
||||||
if test -n "$ac_tool_prefix"; then
|
if test -n "$ac_tool_prefix"; then
|
||||||
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
|
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
|
||||||
set dummy ${ac_tool_prefix}as; ac_word=$2
|
set dummy ${ac_tool_prefix}as; ac_word=$2
|
||||||
@@ -8895,8 +8886,8 @@ esac
|
|||||||
ofile=libtool
|
ofile=libtool
|
||||||
can_build_shared=yes
|
can_build_shared=yes
|
||||||
|
|
||||||
# All known linkers require a '.a' archive for static linking (except MSVC,
|
# All known linkers require a '.a' archive for static linking (except MSVC and
|
||||||
# which needs '.lib').
|
# ICC, which need '.lib').
|
||||||
libext=a
|
libext=a
|
||||||
|
|
||||||
with_gnu_ld=$lt_cv_prog_gnu_ld
|
with_gnu_ld=$lt_cv_prog_gnu_ld
|
||||||
@@ -9220,7 +9211,7 @@ lt_prog_compiler_static=
|
|||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -9323,7 +9314,7 @@ lt_prog_compiler_static=
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
lt_prog_compiler_pic='-DDLL_EXPORT'
|
lt_prog_compiler_pic='-DDLL_EXPORT'
|
||||||
@@ -9830,16 +9821,16 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
|
|||||||
extract_expsyms_cmds=
|
extract_expsyms_cmds=
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++ or Intel C++ Compiler.
|
||||||
if test yes != "$GCC"; then
|
if test yes != "$GCC"; then
|
||||||
with_gnu_ld=no
|
with_gnu_ld=no
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
interix*)
|
interix*)
|
||||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
|
||||||
with_gnu_ld=yes
|
with_gnu_ld=yes
|
||||||
;;
|
;;
|
||||||
openbsd* | bitrig*)
|
openbsd* | bitrig*)
|
||||||
@@ -9945,7 +9936,7 @@ _LT_EOF
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
|
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
|
||||||
# as there is no search path for DLLs.
|
# as there is no search path for DLLs.
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
@@ -10490,14 +10481,14 @@ fi
|
|||||||
export_dynamic_flag_spec=-rdynamic
|
export_dynamic_flag_spec=-rdynamic
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++ or Intel C++ Compiler.
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*)
|
cl* | icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
hardcode_libdir_flag_spec=' '
|
hardcode_libdir_flag_spec=' '
|
||||||
allow_undefined_flag=unsupported
|
allow_undefined_flag=unsupported
|
||||||
always_export_symbols=yes
|
always_export_symbols=yes
|
||||||
@@ -10507,14 +10498,14 @@ fi
|
|||||||
# Tell ltmain to make .dll files, not .so files.
|
# Tell ltmain to make .dll files, not .so files.
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
# FIXME: Setting linknames here is a bad hack.
|
# FIXME: Setting linknames here is a bad hack.
|
||||||
archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
archive_cmds='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
|
||||||
archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
|
archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
|
||||||
cp "$export_symbols" "$output_objdir/$soname.def";
|
cp "$export_symbols" "$output_objdir/$soname.def";
|
||||||
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
|
||||||
else
|
else
|
||||||
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
|
||||||
fi~
|
fi~
|
||||||
$CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
$CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
|
||||||
linknames='
|
linknames='
|
||||||
# The linker will not automatically build a static lib if we build a DLL.
|
# The linker will not automatically build a static lib if we build a DLL.
|
||||||
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
|
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
|
||||||
@@ -10538,7 +10529,7 @@ fi
|
|||||||
fi'
|
fi'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# Assume MSVC wrapper
|
# Assume MSVC and ICC wrapper
|
||||||
hardcode_libdir_flag_spec=' '
|
hardcode_libdir_flag_spec=' '
|
||||||
allow_undefined_flag=unsupported
|
allow_undefined_flag=unsupported
|
||||||
# Tell ltmain to make .lib files, not .a files.
|
# Tell ltmain to make .lib files, not .a files.
|
||||||
@@ -11304,7 +11295,7 @@ if test yes = "$GCC"; then
|
|||||||
*) lt_awk_arg='/^libraries:/' ;;
|
*) lt_awk_arg='/^libraries:/' ;;
|
||||||
esac
|
esac
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
|
mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
|
||||||
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
*) lt_sed_strip_eq='s|=/|/|g' ;;
|
||||||
esac
|
esac
|
||||||
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
|
||||||
@@ -11362,7 +11353,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
|
|||||||
# AWK program above erroneously prepends '/' to C:/dos/paths
|
# AWK program above erroneously prepends '/' to C:/dos/paths
|
||||||
# for these hosts.
|
# for these hosts.
|
||||||
case $host_os in
|
case $host_os in
|
||||||
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
|
||||||
$SED 's|/\([A-Za-z]:\)|\1|g'` ;;
|
$SED 's|/\([A-Za-z]:\)|\1|g'` ;;
|
||||||
esac
|
esac
|
||||||
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
|
||||||
@@ -11530,7 +11521,7 @@ bsdi[45]*)
|
|||||||
# libtool to hard-code these into programs
|
# libtool to hard-code these into programs
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
version_type=windows
|
version_type=windows
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
need_version=no
|
need_version=no
|
||||||
@@ -11563,7 +11554,7 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
|
|
||||||
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
|
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
|
||||||
;;
|
;;
|
||||||
mingw* | cegcc*)
|
mingw* | windows* | cegcc*)
|
||||||
# MinGW DLLs use traditional 'lib' prefix
|
# MinGW DLLs use traditional 'lib' prefix
|
||||||
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
@@ -11576,14 +11567,14 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*,cl*)
|
*,cl* | *,icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
libname_spec='$name'
|
libname_spec='$name'
|
||||||
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
|
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
|
||||||
library_names_spec='$libname.dll.lib'
|
library_names_spec='$libname.dll.lib'
|
||||||
|
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
sys_lib_search_path_spec=
|
sys_lib_search_path_spec=
|
||||||
lt_save_ifs=$IFS
|
lt_save_ifs=$IFS
|
||||||
IFS=';'
|
IFS=';'
|
||||||
@@ -11633,7 +11624,7 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
# Assume MSVC wrapper
|
# Assume MSVC and ICC wrapper
|
||||||
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
|
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
|
||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
@@ -12303,7 +12294,7 @@ else
|
|||||||
lt_cv_dlopen_self=yes
|
lt_cv_dlopen_self=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
mingw* | pw32* | cegcc*)
|
mingw* | windows* | pw32* | cegcc*)
|
||||||
lt_cv_dlopen=LoadLibrary
|
lt_cv_dlopen=LoadLibrary
|
||||||
lt_cv_dlopen_libs=
|
lt_cv_dlopen_libs=
|
||||||
;;
|
;;
|
||||||
@@ -14579,7 +14570,7 @@ if test yes = "$GCC"; then
|
|||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
|
||||||
printf %s "checking for ld used by $CC... " >&6; }
|
printf %s "checking for ld used by $CC... " >&6; }
|
||||||
case $host in
|
case $host in
|
||||||
*-*-mingw*)
|
*-*-mingw* | *-*-windows*)
|
||||||
# gcc leaves a trailing carriage return, which upsets mingw
|
# gcc leaves a trailing carriage return, which upsets mingw
|
||||||
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
||||||
*)
|
*)
|
||||||
@@ -14713,7 +14704,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
GXX=no
|
GXX=no
|
||||||
@@ -15011,10 +15002,10 @@ fi
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
case $GXX,$cc_basename in
|
case $GXX,$cc_basename in
|
||||||
,cl* | no,cl*)
|
,cl* | no,cl* | ,icl* | no,icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
hardcode_libdir_flag_spec_CXX=' '
|
hardcode_libdir_flag_spec_CXX=' '
|
||||||
@@ -15210,7 +15201,7 @@ fi
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -15275,7 +15266,7 @@ fi
|
|||||||
# explicitly linking system object files so we need to strip them
|
# explicitly linking system object files so we need to strip them
|
||||||
# from the output so that they don't get included in the library
|
# from the output so that they don't get included in the library
|
||||||
# dependencies.
|
# dependencies.
|
||||||
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test yes = "$GXX"; then
|
if test yes = "$GXX"; then
|
||||||
@@ -15614,7 +15605,7 @@ fi
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
|
||||||
|
|
||||||
else
|
else
|
||||||
# FIXME: insert proper C++ library support
|
# FIXME: insert proper C++ library support
|
||||||
@@ -15698,7 +15689,7 @@ fi
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
|
||||||
else
|
else
|
||||||
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
# g++ 2.7 appears to require '-G' NOT '-shared' on this
|
||||||
# platform.
|
# platform.
|
||||||
@@ -15709,7 +15700,7 @@ fi
|
|||||||
# Commands to make compiler produce verbose output that lists
|
# Commands to make compiler produce verbose output that lists
|
||||||
# what "hidden" libraries, object files and flags are used when
|
# what "hidden" libraries, object files and flags are used when
|
||||||
# linking a shared library.
|
# linking a shared library.
|
||||||
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
|
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
|
hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
|
||||||
@@ -16023,7 +16014,7 @@ lt_prog_compiler_static_CXX=
|
|||||||
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
||||||
# PIC is the default for these OSes.
|
# PIC is the default for these OSes.
|
||||||
;;
|
;;
|
||||||
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
# Although the cygwin gcc ignores -fPIC, still need this for old-style
|
||||||
@@ -16098,7 +16089,7 @@ lt_prog_compiler_static_CXX=
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
mingw* | cygwin* | os2* | pw32* | cegcc*)
|
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
|
||||||
# This hack is so that the source file can tell whether it is being
|
# This hack is so that the source file can tell whether it is being
|
||||||
# built for inclusion in a dll (and should export symbols for example).
|
# built for inclusion in a dll (and should export symbols for example).
|
||||||
lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
|
lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
|
||||||
@@ -16592,9 +16583,9 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
|
|||||||
pw32*)
|
pw32*)
|
||||||
export_symbols_cmds_CXX=$ltdll_cmds
|
export_symbols_cmds_CXX=$ltdll_cmds
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | windows* | cegcc*)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*)
|
cl* | icl*)
|
||||||
exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -16914,7 +16905,7 @@ bsdi[45]*)
|
|||||||
# libtool to hard-code these into programs
|
# libtool to hard-code these into programs
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin* | mingw* | pw32* | cegcc*)
|
cygwin* | mingw* | windows* | pw32* | cegcc*)
|
||||||
version_type=windows
|
version_type=windows
|
||||||
shrext_cmds=.dll
|
shrext_cmds=.dll
|
||||||
need_version=no
|
need_version=no
|
||||||
@@ -16946,7 +16937,7 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
soname_spec='`echo $libname | sed -e 's/^lib//'`$shared_ext' # SDL customization
|
soname_spec='`echo $libname | sed -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
|
|
||||||
;;
|
;;
|
||||||
mingw* | cegcc*)
|
mingw* | windows* | cegcc*)
|
||||||
# MinGW DLLs use traditional 'lib' prefix
|
# MinGW DLLs use traditional 'lib' prefix
|
||||||
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
|
||||||
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
|
||||||
@@ -16959,14 +16950,14 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*,cl*)
|
*,cl* | *,icl*)
|
||||||
# Native MSVC
|
# Native MSVC or ICC
|
||||||
libname_spec='$name'
|
libname_spec='$name'
|
||||||
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
|
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
|
||||||
library_names_spec='$libname.dll.lib'
|
library_names_spec='$libname.dll.lib'
|
||||||
|
|
||||||
case $build_os in
|
case $build_os in
|
||||||
mingw*)
|
mingw* | windows*)
|
||||||
sys_lib_search_path_spec=
|
sys_lib_search_path_spec=
|
||||||
lt_save_ifs=$IFS
|
lt_save_ifs=$IFS
|
||||||
IFS=';'
|
IFS=';'
|
||||||
@@ -17016,7 +17007,7 @@ cygwin* | mingw* | pw32* | cegcc*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
# Assume MSVC wrapper
|
# Assume MSVC and ICC wrapper
|
||||||
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
|
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
|
||||||
dynamic_linker='Win32 ld.exe'
|
dynamic_linker='Win32 ld.exe'
|
||||||
;;
|
;;
|
||||||
@@ -18825,7 +18816,7 @@ fi
|
|||||||
|
|
||||||
enable_system_iconv_default=yes
|
enable_system_iconv_default=yes
|
||||||
case "$host" in
|
case "$host" in
|
||||||
*-*-cygwin*|*-*-mingw*)
|
*-*-cygwin*|*-*-mingw*|*-*-darwin*|*-ios-*)
|
||||||
enable_system_iconv_default=no
|
enable_system_iconv_default=no
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -19756,6 +19747,18 @@ if test "x$ac_cv_func_poll" = xyes
|
|||||||
then :
|
then :
|
||||||
printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
|
printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
ac_fn_c_check_func "$LINENO" "memfd_create" "ac_cv_func_memfd_create"
|
||||||
|
if test "x$ac_cv_func_memfd_create" = xyes
|
||||||
|
then :
|
||||||
|
printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
ac_fn_c_check_func "$LINENO" "posix_fallocate" "ac_cv_func_posix_fallocate"
|
||||||
|
if test "x$ac_cv_func_posix_fallocate" = xyes
|
||||||
|
then :
|
||||||
|
printf "%s\n" "#define HAVE_POSIX_FALLOCATE 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
ac_fn_c_check_func "$LINENO" "_Exit" "ac_cv_func__Exit"
|
ac_fn_c_check_func "$LINENO" "_Exit" "ac_cv_func__Exit"
|
||||||
if test "x$ac_cv_func__Exit" = xyes
|
if test "x$ac_cv_func__Exit" = xyes
|
||||||
@@ -21107,80 +21110,6 @@ printf "%s\n" "#define HAVE_LSXINTRIN_H 1" >>confdefs.h
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check whether --enable-lasx was given.
|
|
||||||
if test ${enable_lasx+y}
|
|
||||||
then :
|
|
||||||
enableval=$enable_lasx;
|
|
||||||
else $as_nop
|
|
||||||
enable_LASX=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x$enable_LASX = xyes; then
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
have_gcc_lasx=no
|
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GCC -mlasx option" >&5
|
|
||||||
printf %s "checking for GCC -mlasx option... " >&6; }
|
|
||||||
lasx_CFLAGS="-mlasx"
|
|
||||||
CFLAGS="$save_CFLAGS $lasx_CFLAGS"
|
|
||||||
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
|
||||||
|
|
||||||
#ifndef __loongarch_asx
|
|
||||||
#error Assembler CPP flag not enabled
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
|
|
||||||
;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
_ACEOF
|
|
||||||
if ac_fn_c_try_compile "$LINENO"
|
|
||||||
then :
|
|
||||||
have_gcc_lasx=yes
|
|
||||||
fi
|
|
||||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_gcc_lasx" >&5
|
|
||||||
printf "%s\n" "$have_gcc_lasx" >&6; }
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
|
|
||||||
if test x$have_gcc_lasx = xyes; then
|
|
||||||
EXTRA_CFLAGS="$EXTRA_CFLAGS $lasx_CFLAGS"
|
|
||||||
SUMMARY_math="${SUMMARY_math} lasx"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lasxintrin.h" >&5
|
|
||||||
printf %s "checking for lasxintrin.h... " >&6; }
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
|
||||||
#include <lasxintrin.h>
|
|
||||||
int
|
|
||||||
main (void)
|
|
||||||
{
|
|
||||||
|
|
||||||
;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
_ACEOF
|
|
||||||
if ac_fn_c_try_compile "$LINENO"
|
|
||||||
then :
|
|
||||||
have_lasxintrin_h_hdr=yes
|
|
||||||
else $as_nop
|
|
||||||
have_lasxintrin_h_hdr=no
|
|
||||||
fi
|
|
||||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_lasxintrin_h_hdr" >&5
|
|
||||||
printf "%s\n" "$have_lasxintrin_h_hdr" >&6; }
|
|
||||||
if test x$have_lasxintrin_h_hdr = xyes; then
|
|
||||||
|
|
||||||
printf "%s\n" "#define HAVE_LASXINTRIN_H 1" >>confdefs.h
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
CheckOSS()
|
CheckOSS()
|
||||||
{
|
{
|
||||||
# Check whether --enable-oss was given.
|
# Check whether --enable-oss was given.
|
||||||
@@ -27584,18 +27513,14 @@ then :
|
|||||||
have_d3d11=yes
|
have_d3d11=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for d3d12 Windows SDK version" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compatible d3d12 headers" >&5
|
||||||
printf %s "checking for d3d12 Windows SDK version... " >&6; }
|
printf %s "checking for compatible d3d12 headers... " >&6; }
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
|
||||||
#include <winsdkver.h>
|
|
||||||
#include <sdkddkver.h>
|
|
||||||
#include <d3d12.h>
|
#include <d3d12.h>
|
||||||
|
#include <d3d12sdklayers.h>
|
||||||
ID3D12Device1 *device;
|
ID3D12Device1 *device;
|
||||||
#if WDK_NTDDI_VERSION <= 0x0A000008
|
|
||||||
asdf
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main (void)
|
main (void)
|
||||||
@@ -27614,6 +27539,7 @@ fi
|
|||||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_d3d12" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_d3d12" >&5
|
||||||
printf "%s\n" "$have_d3d12" >&6; }
|
printf "%s\n" "$have_d3d12" >&6; }
|
||||||
|
|
||||||
ac_fn_c_check_header_compile "$LINENO" "ddraw.h" "ac_cv_header_ddraw_h" "$ac_includes_default"
|
ac_fn_c_check_header_compile "$LINENO" "ddraw.h" "ac_cv_header_ddraw_h" "$ac_includes_default"
|
||||||
if test "x$ac_cv_header_ddraw_h" = xyes
|
if test "x$ac_cv_header_ddraw_h" = xyes
|
||||||
then :
|
then :
|
||||||
|
|||||||
+7
-42
@@ -12,8 +12,8 @@ orig_CFLAGS="$CFLAGS"
|
|||||||
dnl Set various version strings - taken gratefully from the GTk sources
|
dnl Set various version strings - taken gratefully from the GTk sources
|
||||||
# See docs/release_checklist.md
|
# See docs/release_checklist.md
|
||||||
SDL_MAJOR_VERSION=2
|
SDL_MAJOR_VERSION=2
|
||||||
SDL_MINOR_VERSION=29
|
SDL_MINOR_VERSION=30
|
||||||
SDL_MICRO_VERSION=2
|
SDL_MICRO_VERSION=6
|
||||||
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
|
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
|
||||||
|
|
||||||
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
|
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
|
||||||
@@ -322,7 +322,7 @@ AC_ARG_ENABLE(libc,
|
|||||||
dnl See whether we are allowed to use system iconv
|
dnl See whether we are allowed to use system iconv
|
||||||
enable_system_iconv_default=yes
|
enable_system_iconv_default=yes
|
||||||
case "$host" in
|
case "$host" in
|
||||||
*-*-cygwin*|*-*-mingw*)
|
*-*-cygwin*|*-*-mingw*|*-*-darwin*|*-ios-*)
|
||||||
enable_system_iconv_default=no
|
enable_system_iconv_default=no
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -359,7 +359,7 @@ dnl Checks for library functions.
|
|||||||
AC_DEFINE(HAVE_MPROTECT, 1, [ ])
|
AC_DEFINE(HAVE_MPROTECT, 1, [ ])
|
||||||
],[]),
|
],[]),
|
||||||
)
|
)
|
||||||
AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv bsearch qsort abs bcopy memset memcmp memcpy memmove wcslen wcslcpy wcslcat _wcsdup wcsdup wcsstr wcscmp wcsncmp wcscasecmp _wcsicmp wcsncasecmp _wcsnicmp strlen strlcpy strlcat _strrev _strupr _strlwr index rindex strchr strrchr strstr strtok_r itoa _ltoa _uitoa _ultoa strtod strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp strcasestr vsscanf vsnprintf fopen64 fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname getauxval elf_aux_info poll _Exit)
|
AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv bsearch qsort abs bcopy memset memcmp memcpy memmove wcslen wcslcpy wcslcat _wcsdup wcsdup wcsstr wcscmp wcsncmp wcscasecmp _wcsicmp wcsncasecmp _wcsnicmp strlen strlcpy strlcat _strrev _strupr _strlwr index rindex strchr strrchr strstr strtok_r itoa _ltoa _uitoa _ultoa strtod strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp strcasestr vsscanf vsnprintf fopen64 fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname getauxval elf_aux_info poll memfd_create posix_fallocate _Exit)
|
||||||
|
|
||||||
AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
|
AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
|
||||||
AC_CHECK_FUNCS(acos acosf asin asinf atan atanf atan2 atan2f ceil ceilf copysign copysignf cos cosf exp expf fabs fabsf floor floorf trunc truncf fmod fmodf log logf log10 log10f lround lroundf pow powf round roundf scalbn scalbnf sin sinf sqrt sqrtf tan tanf)
|
AC_CHECK_FUNCS(acos acosf asin asinf atan atanf atan2 atan2f ceil ceilf copysign copysignf cos cosf exp expf fabs fabsf floor floorf trunc truncf fmod fmodf log logf log10 log10f lround lroundf pow powf round roundf scalbn scalbnf sin sinf sqrt sqrtf tan tanf)
|
||||||
@@ -938,38 +938,6 @@ fi
|
|||||||
AC_DEFINE(HAVE_LSXINTRIN_H, 1, [ ])
|
AC_DEFINE(HAVE_LSXINTRIN_H, 1, [ ])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(lasx,
|
|
||||||
[AS_HELP_STRING([--enable-lasx], [use LASX assembly routines [default=yes]])],
|
|
||||||
, enable_LASX=yes)
|
|
||||||
if test x$enable_LASX = xyes; then
|
|
||||||
save_CFLAGS="$CFLAGS"
|
|
||||||
have_gcc_lasx=no
|
|
||||||
AC_MSG_CHECKING(for GCC -mlasx option)
|
|
||||||
lasx_CFLAGS="-mlasx"
|
|
||||||
CFLAGS="$save_CFLAGS $lasx_CFLAGS"
|
|
||||||
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
||||||
#ifndef __loongarch_asx
|
|
||||||
#error Assembler CPP flag not enabled
|
|
||||||
#endif
|
|
||||||
]], [])], [have_gcc_lasx=yes], [])
|
|
||||||
AC_MSG_RESULT($have_gcc_lasx)
|
|
||||||
CFLAGS="$save_CFLAGS"
|
|
||||||
|
|
||||||
if test x$have_gcc_lasx = xyes; then
|
|
||||||
EXTRA_CFLAGS="$EXTRA_CFLAGS $lasx_CFLAGS"
|
|
||||||
SUMMARY_math="${SUMMARY_math} lasx"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for lasxintrin.h)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <lasxintrin.h>]])],
|
|
||||||
[have_lasxintrin_h_hdr=yes],[have_lasxintrin_h_hdr=no])
|
|
||||||
AC_MSG_RESULT($have_lasxintrin_h_hdr)
|
|
||||||
if test x$have_lasxintrin_h_hdr = xyes; then
|
|
||||||
AC_DEFINE(HAVE_LASXINTRIN_H, 1, [ ])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl See if the OSS audio interface is supported
|
dnl See if the OSS audio interface is supported
|
||||||
CheckOSS()
|
CheckOSS()
|
||||||
{
|
{
|
||||||
@@ -3375,17 +3343,14 @@ CheckDIRECTX()
|
|||||||
if test x$enable_directx = xyes; then
|
if test x$enable_directx = xyes; then
|
||||||
AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
|
AC_CHECK_HEADER(d3d9.h, have_d3d=yes)
|
||||||
AC_CHECK_HEADER(d3d11_1.h, have_d3d11=yes)
|
AC_CHECK_HEADER(d3d11_1.h, have_d3d11=yes)
|
||||||
AC_MSG_CHECKING(for d3d12 Windows SDK version)
|
AC_MSG_CHECKING(for compatible d3d12 headers)
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
#include <winsdkver.h>
|
|
||||||
#include <sdkddkver.h>
|
|
||||||
#include <d3d12.h>
|
#include <d3d12.h>
|
||||||
|
#include <d3d12sdklayers.h>
|
||||||
ID3D12Device1 *device;
|
ID3D12Device1 *device;
|
||||||
#if WDK_NTDDI_VERSION <= 0x0A000008
|
|
||||||
asdf
|
|
||||||
#endif
|
|
||||||
]])], [have_d3d12=yes],[have_d3d12=no])
|
]])], [have_d3d12=yes],[have_d3d12=no])
|
||||||
AC_MSG_RESULT($have_d3d12)
|
AC_MSG_RESULT($have_d3d12)
|
||||||
|
|
||||||
AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
|
AC_CHECK_HEADER(ddraw.h, have_ddraw=yes)
|
||||||
AC_CHECK_HEADER(dsound.h, have_dsound=yes)
|
AC_CHECK_HEADER(dsound.h, have_dsound=yes)
|
||||||
AC_CHECK_HEADER(dinput.h, have_dinput=yes)
|
AC_CHECK_HEADER(dinput.h, have_dinput=yes)
|
||||||
|
|||||||
@@ -261,10 +261,10 @@ Some things that may be of interest about how it all works...
|
|||||||
## Working directory
|
## Working directory
|
||||||
|
|
||||||
In SDL 1.2, the working directory of your SDL app is by default set to its
|
In SDL 1.2, the working directory of your SDL app is by default set to its
|
||||||
parent, but this is no longer the case in SDL 2.0. SDL2 does change the
|
parent, but this is no longer the case in SDL 2.0 and later. SDL2 does not
|
||||||
working directory, which means it'll be whatever the command line prompt
|
change the working directory, which means it'll be whatever the command line
|
||||||
that launched the program was using, or if launched by double-clicking in
|
prompt that launched the program was using, or if launched by double-clicking
|
||||||
the finger, it will be "/", the _root of the filesystem_. Plan accordingly!
|
in the Finder, it will be "/", the _root of the filesystem_. Plan accordingly!
|
||||||
You can use SDL_GetBasePath() to find where the program is running from and
|
You can use SDL_GetBasePath() to find where the program is running from and
|
||||||
chdir() there directly.
|
chdir() there directly.
|
||||||
|
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ typedef enum
|
|||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
|
SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
|
||||||
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
|
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
|
||||||
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
|
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
|
||||||
SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
|
SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
|
||||||
SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
|
SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
|
||||||
} SDL_BlendOperation;
|
} SDL_BlendOperation;
|
||||||
|
|||||||
@@ -190,6 +190,8 @@
|
|||||||
#cmakedefine HAVE_FOPEN64 1
|
#cmakedefine HAVE_FOPEN64 1
|
||||||
#cmakedefine HAVE_FSEEKO 1
|
#cmakedefine HAVE_FSEEKO 1
|
||||||
#cmakedefine HAVE_FSEEKO64 1
|
#cmakedefine HAVE_FSEEKO64 1
|
||||||
|
#cmakedefine HAVE_MEMFD_CREATE 1
|
||||||
|
#cmakedefine HAVE_POSIX_FALLOCATE 1
|
||||||
#cmakedefine HAVE_SIGACTION 1
|
#cmakedefine HAVE_SIGACTION 1
|
||||||
#cmakedefine HAVE_SA_SIGACTION 1
|
#cmakedefine HAVE_SA_SIGACTION 1
|
||||||
#cmakedefine HAVE_SETJMP 1
|
#cmakedefine HAVE_SETJMP 1
|
||||||
|
|||||||
@@ -211,6 +211,8 @@
|
|||||||
#undef HAVE_GETAUXVAL
|
#undef HAVE_GETAUXVAL
|
||||||
#undef HAVE_ELF_AUX_INFO
|
#undef HAVE_ELF_AUX_INFO
|
||||||
#undef HAVE_POLL
|
#undef HAVE_POLL
|
||||||
|
#undef HAVE_MEMFD_CREATE
|
||||||
|
#undef HAVE_POSIX_FALLOCATE
|
||||||
#undef HAVE__EXIT
|
#undef HAVE__EXIT
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -114,9 +114,6 @@
|
|||||||
#define HAVE_MEMCPY 1
|
#define HAVE_MEMCPY 1
|
||||||
#define HAVE_MEMMOVE 1
|
#define HAVE_MEMMOVE 1
|
||||||
#define HAVE_MEMCMP 1
|
#define HAVE_MEMCMP 1
|
||||||
#define HAVE_WCSLEN 1
|
|
||||||
#define HAVE_WCSLCPY 1
|
|
||||||
#define HAVE_WCSLCAT 1
|
|
||||||
#define HAVE_WCSCMP 1
|
#define HAVE_WCSCMP 1
|
||||||
#define HAVE__WCSICMP 1
|
#define HAVE__WCSICMP 1
|
||||||
#define HAVE__WCSNICMP 1
|
#define HAVE__WCSNICMP 1
|
||||||
|
|||||||
@@ -99,9 +99,11 @@ typedef unsigned int uintptr_t;
|
|||||||
#define HAVE_D3D11_H 1
|
#define HAVE_D3D11_H 1
|
||||||
#define HAVE_ROAPI_H 1
|
#define HAVE_ROAPI_H 1
|
||||||
#endif
|
#endif
|
||||||
#if defined(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */
|
#if defined(__has_include)
|
||||||
|
#if __has_include(<d3d12.h>) && __has_include(<d3d12sdklayers.h>)
|
||||||
#define HAVE_D3D12_H 1
|
#define HAVE_D3D12_H 1
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */
|
#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */
|
||||||
#define HAVE_SHELLSCALINGAPI_H 1
|
#define HAVE_SHELLSCALINGAPI_H 1
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+29
-1
@@ -1282,6 +1282,22 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
|
#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief A variable controlling the default SDL log levels.
|
||||||
|
*
|
||||||
|
* This variable is a comma separated set of category=level tokens that define the default logging levels for SDL applications.
|
||||||
|
*
|
||||||
|
* The category can be a numeric category, one of "app", "error", "assert", "system", "audio", "video", "render", "input", "test", or `*` for any unspecified category.
|
||||||
|
*
|
||||||
|
* The level can be a numeric level, one of "verbose", "debug", "info", "warn", "error", "critical", or "quiet" to disable that category.
|
||||||
|
*
|
||||||
|
* You can omit the category if you want to set the logging level for all categories.
|
||||||
|
*
|
||||||
|
* If this hint isn't set, the default log levels are equivalent to:
|
||||||
|
* "app=info,assert=warn,test=verbose,*=error"
|
||||||
|
*/
|
||||||
|
#define SDL_HINT_LOGGING "SDL_LOGGING"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief When set don't force the SDL app to become a foreground process
|
* \brief When set don't force the SDL app to become a foreground process
|
||||||
*
|
*
|
||||||
@@ -1408,7 +1424,19 @@ extern "C" {
|
|||||||
#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION"
|
#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief A variable controlling whether mouse events should generate synthetic touch events
|
* \brief A variable controlling whether the hardware cursor stays visible when relative mode is active.
|
||||||
|
*
|
||||||
|
* This variable can be set to the following values:
|
||||||
|
* "0" - The cursor will be hidden while relative mode is active (default)
|
||||||
|
* "1" - The cursor will remain visible while relative mode is active
|
||||||
|
*
|
||||||
|
* Note that for systems without raw hardware inputs, relative mode is implemented using warping, so the hardware cursor will visibly warp between frames if this is enabled on those systems.
|
||||||
|
*/
|
||||||
|
#define SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE "SDL_MOUSE_RELATIVE_CURSOR_VISIBLE"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A variable controlling whether mouse events should generate synthetic touch
|
||||||
|
* events
|
||||||
*
|
*
|
||||||
* This variable can be set to the following values:
|
* This variable can be set to the following values:
|
||||||
* "0" - Mouse events will not generate touch events (default for desktop platforms)
|
* "0" - Mouse events will not generate touch events (default for desktop platforms)
|
||||||
|
|||||||
+10
-5
@@ -790,12 +790,17 @@ extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
|
|||||||
* **WARNING**: Calling this function may delete all events currently in SDL's
|
* **WARNING**: Calling this function may delete all events currently in SDL's
|
||||||
* event queue.
|
* event queue.
|
||||||
*
|
*
|
||||||
* \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
|
* While `param` is meant to be one of `SDL_QUERY`, `SDL_IGNORE`, or
|
||||||
* \returns 1 if enabled, 0 if disabled, or a negative error code on failure;
|
* `SDL_ENABLE`, this function accepts any value, with any non-zero value that
|
||||||
* call SDL_GetError() for more information.
|
* isn't `SDL_QUERY` being treated as `SDL_ENABLE`.
|
||||||
*
|
*
|
||||||
* If `state` is `SDL_QUERY` then the current state is returned,
|
* If SDL was built with events disabled (extremely uncommon!), this will
|
||||||
* otherwise the new processing state is returned.
|
* do nothing and always return `SDL_IGNORE`.
|
||||||
|
*
|
||||||
|
* \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
|
||||||
|
* \returns If `state` is `SDL_QUERY` then the current state is returned,
|
||||||
|
* otherwise `state` is returned (even if it was not one of the
|
||||||
|
* allowed values).
|
||||||
*
|
*
|
||||||
* \since This function is available since SDL 2.0.0.
|
* \since This function is available since SDL 2.0.0.
|
||||||
*
|
*
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ extern "C" {
|
|||||||
* By default the application category is enabled at the INFO level,
|
* By default the application category is enabled at the INFO level,
|
||||||
* the assert category is enabled at the WARN level, test is enabled
|
* the assert category is enabled at the WARN level, test is enabled
|
||||||
* at the VERBOSE level and all other categories are enabled at the
|
* at the VERBOSE level and all other categories are enabled at the
|
||||||
* CRITICAL level.
|
* ERROR level.
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -73,7 +73,13 @@
|
|||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
/* lets us know what version of Mac OS X we're compiling on */
|
/* lets us know what version of Mac OS X we're compiling on */
|
||||||
#include <AvailabilityMacros.h>
|
#include <AvailabilityMacros.h>
|
||||||
|
#ifndef __has_extension /* Older compilers don't support this */
|
||||||
|
#define __has_extension(x) 0
|
||||||
#include <TargetConditionals.h>
|
#include <TargetConditionals.h>
|
||||||
|
#undef __has_extension
|
||||||
|
#else
|
||||||
|
#include <TargetConditionals.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Fix building with older SDKs that don't define these
|
/* Fix building with older SDKs that don't define these
|
||||||
See this for more information:
|
See this for more information:
|
||||||
@@ -199,8 +205,10 @@
|
|||||||
#undef __GDK__
|
#undef __GDK__
|
||||||
#define __GDK__ 1
|
#define __GDK__ 1
|
||||||
#endif
|
#endif
|
||||||
#if defined(__PSP__)
|
#if defined(__PSP__) || defined(__psp__)
|
||||||
|
#ifdef __PSP__
|
||||||
#undef __PSP__
|
#undef __PSP__
|
||||||
|
#endif
|
||||||
#define __PSP__ 1
|
#define __PSP__ 1
|
||||||
#endif
|
#endif
|
||||||
#if defined(PS2)
|
#if defined(PS2)
|
||||||
|
|||||||
+16
-13
@@ -107,7 +107,7 @@
|
|||||||
# elif defined(__MRC__)
|
# elif defined(__MRC__)
|
||||||
void *alloca(unsigned);
|
void *alloca(unsigned);
|
||||||
# else
|
# else
|
||||||
char *alloca();
|
void *alloca(size_t);
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -253,10 +253,10 @@ typedef uint64_t Uint64;
|
|||||||
* <stdint.h> should define these but this is not true all platforms.
|
* <stdint.h> should define these but this is not true all platforms.
|
||||||
* (for example win32) */
|
* (for example win32) */
|
||||||
#ifndef SDL_PRIs64
|
#ifndef SDL_PRIs64
|
||||||
#ifdef PRIs64
|
#if defined(__WIN32__) || defined(__GDK__)
|
||||||
#define SDL_PRIs64 PRIs64
|
|
||||||
#elif defined(__WIN32__) || defined(__GDK__)
|
|
||||||
#define SDL_PRIs64 "I64d"
|
#define SDL_PRIs64 "I64d"
|
||||||
|
#elif defined(PRIs64)
|
||||||
|
#define SDL_PRIs64 PRIs64
|
||||||
#elif defined(__LP64__) && !defined(__APPLE__)
|
#elif defined(__LP64__) && !defined(__APPLE__)
|
||||||
#define SDL_PRIs64 "ld"
|
#define SDL_PRIs64 "ld"
|
||||||
#else
|
#else
|
||||||
@@ -264,10 +264,10 @@ typedef uint64_t Uint64;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef SDL_PRIu64
|
#ifndef SDL_PRIu64
|
||||||
#ifdef PRIu64
|
#if defined(__WIN32__) || defined(__GDK__)
|
||||||
#define SDL_PRIu64 PRIu64
|
|
||||||
#elif defined(__WIN32__) || defined(__GDK__)
|
|
||||||
#define SDL_PRIu64 "I64u"
|
#define SDL_PRIu64 "I64u"
|
||||||
|
#elif defined(PRIu64)
|
||||||
|
#define SDL_PRIu64 PRIu64
|
||||||
#elif defined(__LP64__) && !defined(__APPLE__)
|
#elif defined(__LP64__) && !defined(__APPLE__)
|
||||||
#define SDL_PRIu64 "lu"
|
#define SDL_PRIu64 "lu"
|
||||||
#else
|
#else
|
||||||
@@ -275,10 +275,10 @@ typedef uint64_t Uint64;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef SDL_PRIx64
|
#ifndef SDL_PRIx64
|
||||||
#ifdef PRIx64
|
#if defined(__WIN32__) || defined(__GDK__)
|
||||||
#define SDL_PRIx64 PRIx64
|
|
||||||
#elif defined(__WIN32__) || defined(__GDK__)
|
|
||||||
#define SDL_PRIx64 "I64x"
|
#define SDL_PRIx64 "I64x"
|
||||||
|
#elif defined(PRIx64)
|
||||||
|
#define SDL_PRIx64 PRIx64
|
||||||
#elif defined(__LP64__) && !defined(__APPLE__)
|
#elif defined(__LP64__) && !defined(__APPLE__)
|
||||||
#define SDL_PRIx64 "lx"
|
#define SDL_PRIx64 "lx"
|
||||||
#else
|
#else
|
||||||
@@ -286,10 +286,10 @@ typedef uint64_t Uint64;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef SDL_PRIX64
|
#ifndef SDL_PRIX64
|
||||||
#ifdef PRIX64
|
#if defined(__WIN32__) || defined(__GDK__)
|
||||||
#define SDL_PRIX64 PRIX64
|
|
||||||
#elif defined(__WIN32__) || defined(__GDK__)
|
|
||||||
#define SDL_PRIX64 "I64X"
|
#define SDL_PRIX64 "I64X"
|
||||||
|
#elif defined(PRIX64)
|
||||||
|
#define SDL_PRIX64 PRIX64
|
||||||
#elif defined(__LP64__) && !defined(__APPLE__)
|
#elif defined(__LP64__) && !defined(__APPLE__)
|
||||||
#define SDL_PRIX64 "lX"
|
#define SDL_PRIX64 "lX"
|
||||||
#else
|
#else
|
||||||
@@ -377,9 +377,12 @@ typedef uint64_t Uint64;
|
|||||||
|
|
||||||
#ifndef SDL_COMPILE_TIME_ASSERT
|
#ifndef SDL_COMPILE_TIME_ASSERT
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
/* Keep C++ case alone: Some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode. */
|
||||||
#if (__cplusplus >= 201103L)
|
#if (__cplusplus >= 201103L)
|
||||||
#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
|
#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
|
||||||
#endif
|
#endif
|
||||||
|
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
|
||||||
|
#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
|
||||||
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
||||||
#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x)
|
#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ typedef struct SDL_version
|
|||||||
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
|
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
|
||||||
*/
|
*/
|
||||||
#define SDL_MAJOR_VERSION 2
|
#define SDL_MAJOR_VERSION 2
|
||||||
#define SDL_MINOR_VERSION 29
|
#define SDL_MINOR_VERSION 30
|
||||||
#define SDL_PATCHLEVEL 2
|
#define SDL_PATCHLEVEL 6
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro to determine SDL version program was compiled against.
|
* Macro to determine SDL version program was compiled against.
|
||||||
|
|||||||
@@ -29,9 +29,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#if defined(__OS2__)
|
#if defined(__OS2__)
|
||||||
#include "core/os2/SDL_os2.h"
|
#include "core/os2/SDL_os2.h"
|
||||||
#ifdef SDL_THREAD_OS2
|
|
||||||
#include "thread/os2/SDL_systls_c.h"
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* this checks for HAVE_DBUS_DBUS_H internally. */
|
/* this checks for HAVE_DBUS_DBUS_H internally. */
|
||||||
@@ -52,6 +49,7 @@
|
|||||||
#include "haptic/SDL_haptic_c.h"
|
#include "haptic/SDL_haptic_c.h"
|
||||||
#include "joystick/SDL_joystick_c.h"
|
#include "joystick/SDL_joystick_c.h"
|
||||||
#include "sensor/SDL_sensor_c.h"
|
#include "sensor/SDL_sensor_c.h"
|
||||||
|
#include "thread/SDL_thread_c.h"
|
||||||
|
|
||||||
/* Initialization/Cleanup routines */
|
/* Initialization/Cleanup routines */
|
||||||
#ifndef SDL_TIMERS_DISABLED
|
#ifndef SDL_TIMERS_DISABLED
|
||||||
@@ -116,6 +114,7 @@ static SDL_bool SDL_MainIsReady = SDL_FALSE;
|
|||||||
#else
|
#else
|
||||||
static SDL_bool SDL_MainIsReady = SDL_TRUE;
|
static SDL_bool SDL_MainIsReady = SDL_TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
static SDL_bool SDL_main_thread_initialized = SDL_FALSE;
|
||||||
static SDL_bool SDL_bInMainQuit = SDL_FALSE;
|
static SDL_bool SDL_bInMainQuit = SDL_FALSE;
|
||||||
static Uint8 SDL_SubsystemRefCount[32];
|
static Uint8 SDL_SubsystemRefCount[32];
|
||||||
|
|
||||||
@@ -181,6 +180,36 @@ void SDL_SetMainReady(void)
|
|||||||
SDL_MainIsReady = SDL_TRUE;
|
SDL_MainIsReady = SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SDL_InitMainThread(void)
|
||||||
|
{
|
||||||
|
if (SDL_main_thread_initialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_InitTLSData();
|
||||||
|
#ifndef SDL_TIMERS_DISABLED
|
||||||
|
SDL_TicksInit();
|
||||||
|
#endif
|
||||||
|
SDL_LogInit();
|
||||||
|
|
||||||
|
SDL_main_thread_initialized = SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SDL_QuitMainThread(void)
|
||||||
|
{
|
||||||
|
if (!SDL_main_thread_initialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_LogQuit();
|
||||||
|
#ifndef SDL_TIMERS_DISABLED
|
||||||
|
SDL_TicksQuit();
|
||||||
|
#endif
|
||||||
|
SDL_QuitTLSData();
|
||||||
|
|
||||||
|
SDL_main_thread_initialized = SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
int SDL_InitSubSystem(Uint32 flags)
|
int SDL_InitSubSystem(Uint32 flags)
|
||||||
{
|
{
|
||||||
Uint32 flags_initialized = 0;
|
Uint32 flags_initialized = 0;
|
||||||
@@ -189,8 +218,6 @@ int SDL_InitSubSystem(Uint32 flags)
|
|||||||
return SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
|
return SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?");
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_LogInit();
|
|
||||||
|
|
||||||
/* Clear the error message */
|
/* Clear the error message */
|
||||||
SDL_ClearError();
|
SDL_ClearError();
|
||||||
|
|
||||||
@@ -198,10 +225,6 @@ int SDL_InitSubSystem(Uint32 flags)
|
|||||||
SDL_DBus_Init();
|
SDL_DBus_Init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SDL_THREAD_OS2
|
|
||||||
SDL_OS2TLSAlloc(); /* thread/os2/SDL_systls.c */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SDL_VIDEO_DRIVER_WINDOWS
|
#ifdef SDL_VIDEO_DRIVER_WINDOWS
|
||||||
if (flags & (SDL_INIT_HAPTIC | SDL_INIT_JOYSTICK)) {
|
if (flags & (SDL_INIT_HAPTIC | SDL_INIT_JOYSTICK)) {
|
||||||
if (SDL_HelperWindowCreate() < 0) {
|
if (SDL_HelperWindowCreate() < 0) {
|
||||||
@@ -210,10 +233,6 @@ int SDL_InitSubSystem(Uint32 flags)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SDL_TIMERS_DISABLED
|
|
||||||
SDL_TicksInit();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Initialize the event subsystem */
|
/* Initialize the event subsystem */
|
||||||
if (flags & SDL_INIT_EVENTS) {
|
if (flags & SDL_INIT_EVENTS) {
|
||||||
#ifndef SDL_EVENTS_DISABLED
|
#ifndef SDL_EVENTS_DISABLED
|
||||||
@@ -378,9 +397,6 @@ int SDL_Init(Uint32 flags)
|
|||||||
void SDL_QuitSubSystem(Uint32 flags)
|
void SDL_QuitSubSystem(Uint32 flags)
|
||||||
{
|
{
|
||||||
#if defined(__OS2__)
|
#if defined(__OS2__)
|
||||||
#ifdef SDL_THREAD_OS2
|
|
||||||
SDL_OS2TLSFree(); /* thread/os2/SDL_systls.c */
|
|
||||||
#endif
|
|
||||||
SDL_OS2Quit();
|
SDL_OS2Quit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -504,10 +520,6 @@ void SDL_Quit(void)
|
|||||||
#endif
|
#endif
|
||||||
SDL_QuitSubSystem(SDL_INIT_EVERYTHING);
|
SDL_QuitSubSystem(SDL_INIT_EVERYTHING);
|
||||||
|
|
||||||
#ifndef SDL_TIMERS_DISABLED
|
|
||||||
SDL_TicksQuit();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SDL_USE_LIBDBUS
|
#ifdef SDL_USE_LIBDBUS
|
||||||
SDL_DBus_Quit();
|
SDL_DBus_Quit();
|
||||||
#endif
|
#endif
|
||||||
@@ -515,14 +527,12 @@ void SDL_Quit(void)
|
|||||||
SDL_ClearHints();
|
SDL_ClearHints();
|
||||||
SDL_AssertionsQuit();
|
SDL_AssertionsQuit();
|
||||||
|
|
||||||
SDL_LogQuit();
|
|
||||||
|
|
||||||
/* Now that every subsystem has been quit, we reset the subsystem refcount
|
/* Now that every subsystem has been quit, we reset the subsystem refcount
|
||||||
* and the list of initialized subsystems.
|
* and the list of initialized subsystems.
|
||||||
*/
|
*/
|
||||||
SDL_memset(SDL_SubsystemRefCount, 0x0, sizeof(SDL_SubsystemRefCount));
|
SDL_memset(SDL_SubsystemRefCount, 0x0, sizeof(SDL_SubsystemRefCount));
|
||||||
|
|
||||||
SDL_TLSCleanup();
|
SDL_QuitMainThread();
|
||||||
|
|
||||||
SDL_bInMainQuit = SDL_FALSE;
|
SDL_bInMainQuit = SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,6 +161,10 @@ const char *SDL_GetHint(const char *name)
|
|||||||
const char *env;
|
const char *env;
|
||||||
SDL_Hint *hint;
|
SDL_Hint *hint;
|
||||||
|
|
||||||
|
if (!name) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
env = SDL_getenv(name);
|
env = SDL_getenv(name);
|
||||||
for (hint = SDL_hints; hint; hint = hint->next) {
|
for (hint = SDL_hints; hint; hint = hint->next) {
|
||||||
if (SDL_strcmp(name, hint->name) == 0) {
|
if (SDL_strcmp(name, hint->name) == 0) {
|
||||||
|
|||||||
@@ -125,9 +125,91 @@
|
|||||||
#define SDL_HAVE_YUV !SDL_LEAN_AND_MEAN
|
#define SDL_HAVE_YUV !SDL_LEAN_AND_MEAN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SDL_RENDER_DISABLED
|
||||||
|
/* define the not defined ones as 0 */
|
||||||
|
#ifndef SDL_VIDEO_RENDER_D3D
|
||||||
|
#define SDL_VIDEO_RENDER_D3D 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_D3D11
|
||||||
|
#define SDL_VIDEO_RENDER_D3D11 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_D3D12
|
||||||
|
#define SDL_VIDEO_RENDER_D3D12 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_METAL
|
||||||
|
#define SDL_VIDEO_RENDER_METAL 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_OGL
|
||||||
|
#define SDL_VIDEO_RENDER_OGL 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_OGL_ES
|
||||||
|
#define SDL_VIDEO_RENDER_OGL_ES 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_OGL_ES2
|
||||||
|
#define SDL_VIDEO_RENDER_OGL_ES2 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_DIRECTFB
|
||||||
|
#define SDL_VIDEO_RENDER_DIRECTFB 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_PS2
|
||||||
|
#define SDL_VIDEO_RENDER_PS2 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_PSP
|
||||||
|
#define SDL_VIDEO_RENDER_PSP 0
|
||||||
|
#endif
|
||||||
|
#ifndef SDL_VIDEO_RENDER_VITA_GXM
|
||||||
|
#define SDL_VIDEO_RENDER_VITA_GXM 0
|
||||||
|
#endif
|
||||||
|
#else /* define all as 0 */
|
||||||
|
#undef SDL_VIDEO_RENDER_SW
|
||||||
|
#define SDL_VIDEO_RENDER_SW 0
|
||||||
|
#undef SDL_VIDEO_RENDER_D3D
|
||||||
|
#define SDL_VIDEO_RENDER_D3D 0
|
||||||
|
#undef SDL_VIDEO_RENDER_D3D11
|
||||||
|
#define SDL_VIDEO_RENDER_D3D11 0
|
||||||
|
#undef SDL_VIDEO_RENDER_D3D12
|
||||||
|
#define SDL_VIDEO_RENDER_D3D12 0
|
||||||
|
#undef SDL_VIDEO_RENDER_METAL
|
||||||
|
#define SDL_VIDEO_RENDER_METAL 0
|
||||||
|
#undef SDL_VIDEO_RENDER_OGL
|
||||||
|
#define SDL_VIDEO_RENDER_OGL 0
|
||||||
|
#undef SDL_VIDEO_RENDER_OGL_ES
|
||||||
|
#define SDL_VIDEO_RENDER_OGL_ES 0
|
||||||
|
#undef SDL_VIDEO_RENDER_OGL_ES2
|
||||||
|
#define SDL_VIDEO_RENDER_OGL_ES2 0
|
||||||
|
#undef SDL_VIDEO_RENDER_DIRECTFB
|
||||||
|
#define SDL_VIDEO_RENDER_DIRECTFB 0
|
||||||
|
#undef SDL_VIDEO_RENDER_PS2
|
||||||
|
#define SDL_VIDEO_RENDER_PS2 0
|
||||||
|
#undef SDL_VIDEO_RENDER_PSP
|
||||||
|
#define SDL_VIDEO_RENDER_PSP 0
|
||||||
|
#undef SDL_VIDEO_RENDER_VITA_GXM
|
||||||
|
#define SDL_VIDEO_RENDER_VITA_GXM 0
|
||||||
|
#endif /* SDL_RENDER_DISABLED */
|
||||||
|
|
||||||
|
#define SDL_HAS_RENDER_DRIVER \
|
||||||
|
(SDL_VIDEO_RENDER_SW | \
|
||||||
|
SDL_VIDEO_RENDER_D3D | \
|
||||||
|
SDL_VIDEO_RENDER_D3D11 | \
|
||||||
|
SDL_VIDEO_RENDER_D3D12 | \
|
||||||
|
SDL_VIDEO_RENDER_METAL | \
|
||||||
|
SDL_VIDEO_RENDER_OGL | \
|
||||||
|
SDL_VIDEO_RENDER_OGL_ES | \
|
||||||
|
SDL_VIDEO_RENDER_OGL_ES2 | \
|
||||||
|
SDL_VIDEO_RENDER_DIRECTFB | \
|
||||||
|
SDL_VIDEO_RENDER_PS2 | \
|
||||||
|
SDL_VIDEO_RENDER_PSP | \
|
||||||
|
SDL_VIDEO_RENDER_VITA_GXM)
|
||||||
|
|
||||||
|
#if !defined(SDL_RENDER_DISABLED) && !SDL_HAS_RENDER_DRIVER
|
||||||
|
#error SDL_RENDER enabled without any backend drivers.
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "SDL_assert.h"
|
#include "SDL_assert.h"
|
||||||
#include "SDL_log.h"
|
#include "SDL_log.h"
|
||||||
|
|
||||||
|
extern void SDL_InitMainThread(void);
|
||||||
|
|
||||||
#endif /* SDL_internal_h_ */
|
#endif /* SDL_internal_h_ */
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
+134
-28
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "SDL_error.h"
|
#include "SDL_error.h"
|
||||||
#include "SDL_log.h"
|
#include "SDL_log.h"
|
||||||
|
#include "SDL_hints.h"
|
||||||
#include "SDL_mutex.h"
|
#include "SDL_mutex.h"
|
||||||
#include "SDL_log_c.h"
|
#include "SDL_log_c.h"
|
||||||
|
|
||||||
@@ -44,10 +45,7 @@
|
|||||||
/* The size of the stack buffer to use for rendering log messages. */
|
/* The size of the stack buffer to use for rendering log messages. */
|
||||||
#define SDL_MAX_LOG_MESSAGE_STACK 256
|
#define SDL_MAX_LOG_MESSAGE_STACK 256
|
||||||
|
|
||||||
#define DEFAULT_PRIORITY SDL_LOG_PRIORITY_CRITICAL
|
#define DEFAULT_CATEGORY -1
|
||||||
#define DEFAULT_ASSERT_PRIORITY SDL_LOG_PRIORITY_WARN
|
|
||||||
#define DEFAULT_APPLICATION_PRIORITY SDL_LOG_PRIORITY_INFO
|
|
||||||
#define DEFAULT_TEST_PRIORITY SDL_LOG_PRIORITY_VERBOSE
|
|
||||||
|
|
||||||
typedef struct SDL_LogLevel
|
typedef struct SDL_LogLevel
|
||||||
{
|
{
|
||||||
@@ -60,15 +58,14 @@ typedef struct SDL_LogLevel
|
|||||||
static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message);
|
static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message);
|
||||||
|
|
||||||
static SDL_LogLevel *SDL_loglevels;
|
static SDL_LogLevel *SDL_loglevels;
|
||||||
static SDL_LogPriority SDL_default_priority = DEFAULT_PRIORITY;
|
static SDL_bool SDL_forced_priority = SDL_FALSE;
|
||||||
static SDL_LogPriority SDL_assert_priority = DEFAULT_ASSERT_PRIORITY;
|
static SDL_LogPriority SDL_forced_priority_level;
|
||||||
static SDL_LogPriority SDL_application_priority = DEFAULT_APPLICATION_PRIORITY;
|
|
||||||
static SDL_LogPriority SDL_test_priority = DEFAULT_TEST_PRIORITY;
|
|
||||||
static SDL_LogOutputFunction SDL_log_function = SDL_LogOutput;
|
static SDL_LogOutputFunction SDL_log_function = SDL_LogOutput;
|
||||||
static void *SDL_log_userdata = NULL;
|
static void *SDL_log_userdata = NULL;
|
||||||
static SDL_mutex *log_function_mutex = NULL;
|
static SDL_mutex *log_function_mutex = NULL;
|
||||||
|
|
||||||
static const char *SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES] = {
|
/* If this list changes, update the documentation for SDL_HINT_LOGGING */
|
||||||
|
static const char *SDL_priority_prefixes[] = {
|
||||||
NULL,
|
NULL,
|
||||||
"VERBOSE",
|
"VERBOSE",
|
||||||
"DEBUG",
|
"DEBUG",
|
||||||
@@ -77,8 +74,9 @@ static const char *SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES] = {
|
|||||||
"ERROR",
|
"ERROR",
|
||||||
"CRITICAL"
|
"CRITICAL"
|
||||||
};
|
};
|
||||||
|
SDL_COMPILE_TIME_ASSERT(priority_prefixes, SDL_arraysize(SDL_priority_prefixes) == SDL_NUM_LOG_PRIORITIES);
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
/* If this list changes, update the documentation for SDL_HINT_LOGGING */
|
||||||
static const char *SDL_category_prefixes[] = {
|
static const char *SDL_category_prefixes[] = {
|
||||||
"APP",
|
"APP",
|
||||||
"ERROR",
|
"ERROR",
|
||||||
@@ -90,9 +88,9 @@ static const char *SDL_category_prefixes[] = {
|
|||||||
"INPUT",
|
"INPUT",
|
||||||
"TEST"
|
"TEST"
|
||||||
};
|
};
|
||||||
|
SDL_COMPILE_TIME_ASSERT(category_prefixes, SDL_arraysize(SDL_category_prefixes) == SDL_LOG_CATEGORY_RESERVED1);
|
||||||
|
|
||||||
SDL_COMPILE_TIME_ASSERT(category_prefixes_enum, SDL_TABLESIZE(SDL_category_prefixes) == SDL_LOG_CATEGORY_RESERVED1);
|
#ifdef __ANDROID__
|
||||||
|
|
||||||
static int SDL_android_priority[SDL_NUM_LOG_PRIORITIES] = {
|
static int SDL_android_priority[SDL_NUM_LOG_PRIORITIES] = {
|
||||||
ANDROID_LOG_UNKNOWN,
|
ANDROID_LOG_UNKNOWN,
|
||||||
ANDROID_LOG_VERBOSE,
|
ANDROID_LOG_VERBOSE,
|
||||||
@@ -128,9 +126,9 @@ void SDL_LogSetAllPriority(SDL_LogPriority priority)
|
|||||||
for (entry = SDL_loglevels; entry; entry = entry->next) {
|
for (entry = SDL_loglevels; entry; entry = entry->next) {
|
||||||
entry->priority = priority;
|
entry->priority = priority;
|
||||||
}
|
}
|
||||||
SDL_default_priority = priority;
|
|
||||||
SDL_assert_priority = priority;
|
SDL_forced_priority = SDL_TRUE;
|
||||||
SDL_application_priority = priority;
|
SDL_forced_priority_level = priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_LogSetPriority(int category, SDL_LogPriority priority)
|
void SDL_LogSetPriority(int category, SDL_LogPriority priority)
|
||||||
@@ -154,6 +152,122 @@ void SDL_LogSetPriority(int category, SDL_LogPriority priority)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SDL_bool SDL_ParseLogCategory(const char *string, size_t length, int *category)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (SDL_isdigit(*string)) {
|
||||||
|
*category = SDL_atoi(string);
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*string == '*') {
|
||||||
|
*category = DEFAULT_CATEGORY;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < SDL_arraysize(SDL_category_prefixes); ++i) {
|
||||||
|
if (SDL_strncasecmp(string, SDL_category_prefixes[i], length) == 0) {
|
||||||
|
*category = i;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool SDL_ParseLogPriority(const char *string, size_t length, SDL_LogPriority *priority)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (SDL_isdigit(*string)) {
|
||||||
|
i = SDL_atoi(string);
|
||||||
|
if (i == 0) {
|
||||||
|
/* 0 has a special meaning of "disable this category" */
|
||||||
|
*priority = SDL_NUM_LOG_PRIORITIES;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
if (i >= SDL_LOG_PRIORITY_VERBOSE && i < SDL_NUM_LOG_PRIORITIES) {
|
||||||
|
*priority = (SDL_LogPriority)i;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SDL_strncasecmp(string, "quiet", length) == 0) {
|
||||||
|
*priority = SDL_NUM_LOG_PRIORITIES;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = SDL_LOG_PRIORITY_VERBOSE; i < SDL_NUM_LOG_PRIORITIES; ++i) {
|
||||||
|
if (SDL_strncasecmp(string, SDL_priority_prefixes[i], length) == 0) {
|
||||||
|
*priority = (SDL_LogPriority)i;
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool SDL_ParseLogCategoryPriority(const char *hint, int category, SDL_LogPriority *priority)
|
||||||
|
{
|
||||||
|
const char *name, *next;
|
||||||
|
int current_category;
|
||||||
|
|
||||||
|
if (category == DEFAULT_CATEGORY && SDL_strchr(hint, '=') == NULL) {
|
||||||
|
return SDL_ParseLogPriority(hint, SDL_strlen(hint), priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (name = hint; name; name = next) {
|
||||||
|
const char *sep = SDL_strchr(name, '=');
|
||||||
|
if (!sep) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
next = SDL_strchr(sep, ',');
|
||||||
|
if (next) {
|
||||||
|
++next;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SDL_ParseLogCategory(name, (sep - name), ¤t_category)) {
|
||||||
|
if (current_category == category) {
|
||||||
|
const char *value = sep + 1;
|
||||||
|
size_t len;
|
||||||
|
if (next) {
|
||||||
|
len = (next - value - 1);
|
||||||
|
} else {
|
||||||
|
len = SDL_strlen(value);
|
||||||
|
}
|
||||||
|
return SDL_ParseLogPriority(value, len, priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_LogPriority SDL_GetDefaultLogPriority(int category)
|
||||||
|
{
|
||||||
|
const char *hint = SDL_GetHint(SDL_HINT_LOGGING);
|
||||||
|
if (hint) {
|
||||||
|
SDL_LogPriority priority;
|
||||||
|
|
||||||
|
if (SDL_ParseLogCategoryPriority(hint, category, &priority)) {
|
||||||
|
return priority;
|
||||||
|
}
|
||||||
|
if (SDL_ParseLogCategoryPriority(hint, DEFAULT_CATEGORY, &priority)) {
|
||||||
|
return priority;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (category) {
|
||||||
|
case SDL_LOG_CATEGORY_APPLICATION:
|
||||||
|
return SDL_LOG_PRIORITY_INFO;
|
||||||
|
case SDL_LOG_CATEGORY_ASSERT:
|
||||||
|
return SDL_LOG_PRIORITY_WARN;
|
||||||
|
case SDL_LOG_CATEGORY_TEST:
|
||||||
|
return SDL_LOG_PRIORITY_VERBOSE;
|
||||||
|
default:
|
||||||
|
return SDL_LOG_PRIORITY_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SDL_LogPriority SDL_LogGetPriority(int category)
|
SDL_LogPriority SDL_LogGetPriority(int category)
|
||||||
{
|
{
|
||||||
SDL_LogLevel *entry;
|
SDL_LogLevel *entry;
|
||||||
@@ -164,15 +278,11 @@ SDL_LogPriority SDL_LogGetPriority(int category)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (category == SDL_LOG_CATEGORY_TEST) {
|
if (SDL_forced_priority) {
|
||||||
return SDL_test_priority;
|
return SDL_forced_priority_level;
|
||||||
} else if (category == SDL_LOG_CATEGORY_APPLICATION) {
|
|
||||||
return SDL_application_priority;
|
|
||||||
} else if (category == SDL_LOG_CATEGORY_ASSERT) {
|
|
||||||
return SDL_assert_priority;
|
|
||||||
} else {
|
|
||||||
return SDL_default_priority;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return SDL_GetDefaultLogPriority(category);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_LogResetPriorities(void)
|
void SDL_LogResetPriorities(void)
|
||||||
@@ -184,11 +294,7 @@ void SDL_LogResetPriorities(void)
|
|||||||
SDL_loglevels = entry->next;
|
SDL_loglevels = entry->next;
|
||||||
SDL_free(entry);
|
SDL_free(entry);
|
||||||
}
|
}
|
||||||
|
SDL_forced_priority = SDL_FALSE;
|
||||||
SDL_default_priority = DEFAULT_PRIORITY;
|
|
||||||
SDL_assert_priority = DEFAULT_ASSERT_PRIORITY;
|
|
||||||
SDL_application_priority = DEFAULT_APPLICATION_PRIORITY;
|
|
||||||
SDL_test_priority = DEFAULT_TEST_PRIORITY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...)
|
void SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...)
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ static void SDLCALL SDL_Convert_U8_to_F32_Scalar(SDL_AudioCVT *cvt, SDL_AudioFor
|
|||||||
|
|
||||||
static void SDLCALL SDL_Convert_S16_to_F32_Scalar(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
static void SDLCALL SDL_Convert_S16_to_F32_Scalar(SDL_AudioCVT *cvt, SDL_AudioFormat format)
|
||||||
{
|
{
|
||||||
const int num_samples = cvt->len_cvt;
|
const int num_samples = cvt->len_cvt / sizeof(Sint16);
|
||||||
const Sint16 *src = (const Sint16 *)cvt->buf;
|
const Sint16 *src = (const Sint16 *)cvt->buf;
|
||||||
float *dst = (float *)cvt->buf;
|
float *dst = (float *)cvt->buf;
|
||||||
int i;
|
int i;
|
||||||
@@ -350,7 +350,7 @@ static void SDLCALL SDL_Convert_S8_to_F32_SSE2(SDL_AudioCVT *cvt, SDL_AudioForma
|
|||||||
i -= 16;
|
i -= 16;
|
||||||
|
|
||||||
{
|
{
|
||||||
const __m128i bytes = _mm_xor_si128(_mm_loadu_si128((const __m128i *)&src[i-16]), flipper);
|
const __m128i bytes = _mm_xor_si128(_mm_loadu_si128((const __m128i *)&src[i]), flipper);
|
||||||
|
|
||||||
const __m128i shorts1 = _mm_unpacklo_epi8(bytes, zero);
|
const __m128i shorts1 = _mm_unpacklo_epi8(bytes, zero);
|
||||||
const __m128i shorts2 = _mm_unpackhi_epi8(bytes, zero);
|
const __m128i shorts2 = _mm_unpackhi_epi8(bytes, zero);
|
||||||
|
|||||||
+107
-12
@@ -102,25 +102,21 @@ static int aaudio_OpenDevice(_THIS, const char *devname)
|
|||||||
ctx.AAudioStreamBuilder_setSampleRate(ctx.builder, this->spec.freq);
|
ctx.AAudioStreamBuilder_setSampleRate(ctx.builder, this->spec.freq);
|
||||||
ctx.AAudioStreamBuilder_setChannelCount(ctx.builder, this->spec.channels);
|
ctx.AAudioStreamBuilder_setChannelCount(ctx.builder, this->spec.channels);
|
||||||
if(devname) {
|
if(devname) {
|
||||||
int aaudio_device_id = SDL_atoi(devname);
|
private->devid = SDL_atoi(devname);
|
||||||
LOGI("Opening device id %d", aaudio_device_id);
|
LOGI("Opening device id %d", private->devid);
|
||||||
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, aaudio_device_id);
|
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, private->devid);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
|
const aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
|
||||||
ctx.AAudioStreamBuilder_setDirection(ctx.builder, direction);
|
ctx.AAudioStreamBuilder_setDirection(ctx.builder, direction);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
aaudio_format_t format = AAUDIO_FORMAT_PCM_FLOAT;
|
const aaudio_format_t format = (this->spec.format == AUDIO_S16SYS) ? AAUDIO_FORMAT_PCM_I16 : AAUDIO_FORMAT_PCM_FLOAT;
|
||||||
if (this->spec.format == AUDIO_S16SYS) {
|
|
||||||
format = AAUDIO_FORMAT_PCM_I16;
|
|
||||||
} else if (this->spec.format == AUDIO_S16SYS) {
|
|
||||||
format = AAUDIO_FORMAT_PCM_FLOAT;
|
|
||||||
}
|
|
||||||
ctx.AAudioStreamBuilder_setFormat(ctx.builder, format);
|
ctx.AAudioStreamBuilder_setFormat(ctx.builder, format);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.AAudioStreamBuilder_setErrorCallback(ctx.builder, aaudio_errorCallback, private);
|
ctx.AAudioStreamBuilder_setErrorCallback(ctx.builder, aaudio_errorCallback, private);
|
||||||
|
ctx.AAudioStreamBuilder_setPerformanceMode(ctx.builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
|
||||||
|
|
||||||
LOGI("AAudio Try to open %u hz %u bit chan %u %s samples %u",
|
LOGI("AAudio Try to open %u hz %u bit chan %u %s samples %u",
|
||||||
this->spec.freq, SDL_AUDIO_BITSIZE(this->spec.format),
|
this->spec.freq, SDL_AUDIO_BITSIZE(this->spec.format),
|
||||||
@@ -211,6 +207,97 @@ static Uint8 *aaudio_GetDeviceBuf(_THIS)
|
|||||||
return private->mixbuf;
|
return private->mixbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Try to reestablish an AAudioStream.
|
||||||
|
|
||||||
|
This needs to get a stream with the same format as the previous one,
|
||||||
|
even if this means AAudio needs to handle a conversion it didn't when
|
||||||
|
we initially opened the device. If we can't get that, we are forced
|
||||||
|
to give up here.
|
||||||
|
|
||||||
|
(This is more robust in SDL3, which is designed to handle
|
||||||
|
abrupt format changes.)
|
||||||
|
*/
|
||||||
|
static int RebuildAAudioStream(SDL_AudioDevice *device)
|
||||||
|
{
|
||||||
|
struct SDL_PrivateAudioData *hidden = device->hidden;
|
||||||
|
const SDL_bool iscapture = device->iscapture;
|
||||||
|
aaudio_result_t res;
|
||||||
|
|
||||||
|
ctx.AAudioStreamBuilder_setSampleRate(ctx.builder, device->spec.freq);
|
||||||
|
ctx.AAudioStreamBuilder_setChannelCount(ctx.builder, device->spec.channels);
|
||||||
|
if(hidden->devid) {
|
||||||
|
LOGI("Reopening device id %d", hidden->devid);
|
||||||
|
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, hidden->devid);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
|
||||||
|
ctx.AAudioStreamBuilder_setDirection(ctx.builder, direction);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const aaudio_format_t format = (device->spec.format == AUDIO_S16SYS) ? AAUDIO_FORMAT_PCM_I16 : AAUDIO_FORMAT_PCM_FLOAT;
|
||||||
|
ctx.AAudioStreamBuilder_setFormat(ctx.builder, format);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.AAudioStreamBuilder_setErrorCallback(ctx.builder, aaudio_errorCallback, hidden);
|
||||||
|
ctx.AAudioStreamBuilder_setPerformanceMode(ctx.builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
|
||||||
|
|
||||||
|
LOGI("AAudio Try to reopen %u hz %u bit chan %u %s samples %u",
|
||||||
|
device->spec.freq, SDL_AUDIO_BITSIZE(device->spec.format),
|
||||||
|
device->spec.channels, (device->spec.format & 0x1000) ? "BE" : "LE", device->spec.samples);
|
||||||
|
|
||||||
|
res = ctx.AAudioStreamBuilder_openStream(ctx.builder, &hidden->stream);
|
||||||
|
if (res != AAUDIO_OK) {
|
||||||
|
LOGI("SDL Failed AAudioStreamBuilder_openStream %d", res);
|
||||||
|
return SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const aaudio_format_t fmt = ctx.AAudioStream_getFormat(hidden->stream);
|
||||||
|
SDL_AudioFormat sdlfmt = (SDL_AudioFormat) 0;
|
||||||
|
if (fmt == AAUDIO_FORMAT_PCM_I16) {
|
||||||
|
sdlfmt = AUDIO_S16SYS;
|
||||||
|
} else if (fmt == AAUDIO_FORMAT_PCM_FLOAT) {
|
||||||
|
sdlfmt = AUDIO_F32SYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We handle this better in SDL3, but this _needs_ to match the previous stream for SDL2. */
|
||||||
|
if ( (device->spec.freq != ctx.AAudioStream_getSampleRate(hidden->stream)) ||
|
||||||
|
(device->spec.channels != ctx.AAudioStream_getChannelCount(hidden->stream)) ||
|
||||||
|
(device->spec.format != sdlfmt) ) {
|
||||||
|
LOGI("Didn't get an identical spec from AAudioStream during reopen!");
|
||||||
|
ctx.AAudioStream_close(hidden->stream);
|
||||||
|
hidden->stream = NULL;
|
||||||
|
return SDL_SetError("Didn't get an identical spec from AAudioStream during reopen!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res = ctx.AAudioStream_requestStart(hidden->stream);
|
||||||
|
if (res != AAUDIO_OK) {
|
||||||
|
LOGI("SDL Failed AAudioStream_requestStart %d iscapture:%d", res, iscapture);
|
||||||
|
return SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int RecoverAAudioDevice(SDL_AudioDevice *device)
|
||||||
|
{
|
||||||
|
struct SDL_PrivateAudioData *hidden = device->hidden;
|
||||||
|
AAudioStream *stream = hidden->stream;
|
||||||
|
|
||||||
|
/* attempt to build a new stream, in case there's a new default device. */
|
||||||
|
hidden->stream = NULL;
|
||||||
|
ctx.AAudioStream_requestStop(stream);
|
||||||
|
ctx.AAudioStream_close(stream);
|
||||||
|
|
||||||
|
if (RebuildAAudioStream(device) < 0) {
|
||||||
|
return -1; // oh well, we tried.
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void aaudio_PlayDevice(_THIS)
|
static void aaudio_PlayDevice(_THIS)
|
||||||
{
|
{
|
||||||
struct SDL_PrivateAudioData *private = this->hidden;
|
struct SDL_PrivateAudioData *private = this->hidden;
|
||||||
@@ -219,6 +306,9 @@ static void aaudio_PlayDevice(_THIS)
|
|||||||
res = ctx.AAudioStream_write(private->stream, private->mixbuf, private->mixlen / private->frame_size, timeoutNanoseconds);
|
res = ctx.AAudioStream_write(private->stream, private->mixbuf, private->mixlen / private->frame_size, timeoutNanoseconds);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
LOGI("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
|
LOGI("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
|
||||||
|
if (RecoverAAudioDevice(this) < 0) {
|
||||||
|
return; /* oh well, we went down hard. */
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
LOGI("SDL AAudio play: %d frames, wanted:%d frames", (int)res, private->mixlen / private->frame_size);
|
LOGI("SDL AAudio play: %d frames, wanted:%d frames", (int)res, private->mixlen / private->frame_size);
|
||||||
}
|
}
|
||||||
@@ -407,6 +497,7 @@ void aaudio_ResumeDevices(void)
|
|||||||
*/
|
*/
|
||||||
SDL_bool aaudio_DetectBrokenPlayState(void)
|
SDL_bool aaudio_DetectBrokenPlayState(void)
|
||||||
{
|
{
|
||||||
|
AAudioStream *stream;
|
||||||
struct SDL_PrivateAudioData *private;
|
struct SDL_PrivateAudioData *private;
|
||||||
int64_t framePosition, timeNanoseconds;
|
int64_t framePosition, timeNanoseconds;
|
||||||
aaudio_result_t res;
|
aaudio_result_t res;
|
||||||
@@ -416,10 +507,14 @@ SDL_bool aaudio_DetectBrokenPlayState(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private = audioDevice->hidden;
|
private = audioDevice->hidden;
|
||||||
|
stream = private->stream;
|
||||||
|
if (!stream) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
res = ctx.AAudioStream_getTimestamp(private->stream, CLOCK_MONOTONIC, &framePosition, &timeNanoseconds);
|
res = ctx.AAudioStream_getTimestamp(stream, CLOCK_MONOTONIC, &framePosition, &timeNanoseconds);
|
||||||
if (res == AAUDIO_ERROR_INVALID_STATE) {
|
if (res == AAUDIO_ERROR_INVALID_STATE) {
|
||||||
aaudio_stream_state_t currentState = ctx.AAudioStream_getState(private->stream);
|
aaudio_stream_state_t currentState = ctx.AAudioStream_getState(stream);
|
||||||
/* AAudioStream_getTimestamp() will also return AAUDIO_ERROR_INVALID_STATE while the stream is still initially starting. But we only care if it silently went invalid while playing. */
|
/* AAudioStream_getTimestamp() will also return AAUDIO_ERROR_INVALID_STATE while the stream is still initially starting. But we only care if it silently went invalid while playing. */
|
||||||
if (currentState == AAUDIO_STREAM_STATE_STARTED) {
|
if (currentState == AAUDIO_STREAM_STATE_STARTED) {
|
||||||
LOGI("SDL aaudio_DetectBrokenPlayState: detected invalid audio device state: AAudioStream_getTimestamp result=%d, framePosition=%lld, timeNanoseconds=%lld, getState=%d", (int)res, (long long)framePosition, (long long)timeNanoseconds, (int)currentState);
|
LOGI("SDL aaudio_DetectBrokenPlayState: detected invalid audio device state: AAudioStream_getTimestamp result=%d, framePosition=%lld, timeNanoseconds=%lld, getState=%d", (int)res, (long long)framePosition, (long long)timeNanoseconds, (int)currentState);
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ struct SDL_PrivateAudioData
|
|||||||
Uint8 *mixbuf;
|
Uint8 *mixbuf;
|
||||||
int mixlen;
|
int mixlen;
|
||||||
int frame_size;
|
int frame_size;
|
||||||
|
int devid;
|
||||||
};
|
};
|
||||||
|
|
||||||
void aaudio_ResumeDevices(void);
|
void aaudio_ResumeDevices(void);
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ SDL_PROC(void, AAudioStreamBuilder_setFormat, (AAudioStreamBuilder * builder, aa
|
|||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setSharingMode, (AAudioStreamBuilder * builder, aaudio_sharing_mode_t sharingMode))
|
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setSharingMode, (AAudioStreamBuilder * builder, aaudio_sharing_mode_t sharingMode))
|
||||||
SDL_PROC(void, AAudioStreamBuilder_setDirection, (AAudioStreamBuilder * builder, aaudio_direction_t direction))
|
SDL_PROC(void, AAudioStreamBuilder_setDirection, (AAudioStreamBuilder * builder, aaudio_direction_t direction))
|
||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setBufferCapacityInFrames, (AAudioStreamBuilder * builder, int32_t numFrames))
|
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setBufferCapacityInFrames, (AAudioStreamBuilder * builder, int32_t numFrames))
|
||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setPerformanceMode, (AAudioStreamBuilder * builder, aaudio_performance_mode_t mode))
|
SDL_PROC(void, AAudioStreamBuilder_setPerformanceMode, (AAudioStreamBuilder * builder, aaudio_performance_mode_t mode))
|
||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setUsage, (AAudioStreamBuilder * builder, aaudio_usage_t usage)) /* API 28 */
|
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setUsage, (AAudioStreamBuilder * builder, aaudio_usage_t usage)) /* API 28 */
|
||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setContentType, (AAudioStreamBuilder * builder, aaudio_content_type_t contentType)) /* API 28 */
|
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setContentType, (AAudioStreamBuilder * builder, aaudio_content_type_t contentType)) /* API 28 */
|
||||||
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setInputPreset, (AAudioStreamBuilder * builder, aaudio_input_preset_t inputPreset)) /* API 28 */
|
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setInputPreset, (AAudioStreamBuilder * builder, aaudio_input_preset_t inputPreset)) /* API 28 */
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ static struct
|
|||||||
|
|
||||||
#undef SDL_ARTS_SYM
|
#undef SDL_ARTS_SYM
|
||||||
|
|
||||||
static void UnloadARTSLibrary()
|
static void UnloadARTSLibrary(void)
|
||||||
{
|
{
|
||||||
if (arts_handle) {
|
if (arts_handle) {
|
||||||
SDL_UnloadObject(arts_handle);
|
SDL_UnloadObject(arts_handle);
|
||||||
@@ -119,7 +119,7 @@ static int LoadARTSLibrary(void)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static void UnloadARTSLibrary()
|
static void UnloadARTSLibrary(void)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ static struct
|
|||||||
|
|
||||||
#undef SDL_ESD_SYM
|
#undef SDL_ESD_SYM
|
||||||
|
|
||||||
static void UnloadESDLibrary()
|
static void UnloadESDLibrary(void)
|
||||||
{
|
{
|
||||||
if (esd_handle) {
|
if (esd_handle) {
|
||||||
SDL_UnloadObject(esd_handle);
|
SDL_UnloadObject(esd_handle);
|
||||||
@@ -96,7 +96,7 @@ static int LoadESDLibrary(void)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static void UnloadESDLibrary()
|
static void UnloadESDLibrary(void)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ static struct
|
|||||||
|
|
||||||
#undef SDL_FS_SYM
|
#undef SDL_FS_SYM
|
||||||
|
|
||||||
static void UnloadFusionSoundLibrary()
|
static void UnloadFusionSoundLibrary(void)
|
||||||
{
|
{
|
||||||
if (fs_handle) {
|
if (fs_handle) {
|
||||||
SDL_UnloadObject(fs_handle);
|
SDL_UnloadObject(fs_handle);
|
||||||
@@ -110,7 +110,7 @@ static int LoadFusionSoundLibrary(void)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
static void UnloadFusionSoundLibrary()
|
static void UnloadFusionSoundLibrary(void)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,13 +142,13 @@ static int pipewire_dlsym(const char *fn, void **addr)
|
|||||||
return -1; \
|
return -1; \
|
||||||
}
|
}
|
||||||
|
|
||||||
static int load_pipewire_library()
|
static int load_pipewire_library(void)
|
||||||
{
|
{
|
||||||
pipewire_handle = SDL_LoadObject(pipewire_library);
|
pipewire_handle = SDL_LoadObject(pipewire_library);
|
||||||
return pipewire_handle ? 0 : -1;
|
return pipewire_handle ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unload_pipewire_library()
|
static void unload_pipewire_library(void)
|
||||||
{
|
{
|
||||||
if (pipewire_handle) {
|
if (pipewire_handle) {
|
||||||
SDL_UnloadObject(pipewire_handle);
|
SDL_UnloadObject(pipewire_handle);
|
||||||
@@ -160,18 +160,18 @@ static void unload_pipewire_library()
|
|||||||
|
|
||||||
#define SDL_PIPEWIRE_SYM(x) PIPEWIRE_##x = x
|
#define SDL_PIPEWIRE_SYM(x) PIPEWIRE_##x = x
|
||||||
|
|
||||||
static int load_pipewire_library()
|
static int load_pipewire_library(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unload_pipewire_library()
|
static void unload_pipewire_library(void)
|
||||||
{ /* Nothing to do */
|
{ /* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC */
|
#endif /* SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC */
|
||||||
|
|
||||||
static int load_pipewire_syms()
|
static int load_pipewire_syms(void)
|
||||||
{
|
{
|
||||||
SDL_PIPEWIRE_SYM(pw_get_library_version);
|
SDL_PIPEWIRE_SYM(pw_get_library_version);
|
||||||
SDL_PIPEWIRE_SYM(pw_init);
|
SDL_PIPEWIRE_SYM(pw_init);
|
||||||
@@ -212,7 +212,7 @@ SDL_FORCE_INLINE SDL_bool pipewire_version_at_least(int major, int minor, int pa
|
|||||||
(pipewire_version_major > major || pipewire_version_minor > minor || pipewire_version_patch >= patch);
|
(pipewire_version_major > major || pipewire_version_minor > minor || pipewire_version_patch >= patch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_pipewire_library()
|
static int init_pipewire_library(void)
|
||||||
{
|
{
|
||||||
if (!load_pipewire_library()) {
|
if (!load_pipewire_library()) {
|
||||||
if (!load_pipewire_syms()) {
|
if (!load_pipewire_syms()) {
|
||||||
@@ -234,7 +234,7 @@ static int init_pipewire_library()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deinit_pipewire_library()
|
static void deinit_pipewire_library(void)
|
||||||
{
|
{
|
||||||
PIPEWIRE_pw_deinit();
|
PIPEWIRE_pw_deinit();
|
||||||
unload_pipewire_library();
|
unload_pipewire_library();
|
||||||
@@ -340,7 +340,7 @@ static void io_list_remove(Uint32 id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void io_list_sort()
|
static void io_list_sort(void)
|
||||||
{
|
{
|
||||||
struct io_node *default_sink = NULL, *default_source = NULL;
|
struct io_node *default_sink = NULL, *default_source = NULL;
|
||||||
struct io_node *n, *temp;
|
struct io_node *n, *temp;
|
||||||
@@ -365,7 +365,7 @@ static void io_list_sort()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void io_list_clear()
|
static void io_list_clear(void)
|
||||||
{
|
{
|
||||||
struct io_node *n, *temp;
|
struct io_node *n, *temp;
|
||||||
|
|
||||||
@@ -426,7 +426,7 @@ static void pending_list_remove(Uint32 id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pending_list_clear()
|
static void pending_list_clear(void)
|
||||||
{
|
{
|
||||||
struct node_object *node, *temp;
|
struct node_object *node, *temp;
|
||||||
|
|
||||||
@@ -751,7 +751,7 @@ static const struct pw_registry_events registry_events = { PW_VERSION_REGISTRY_E
|
|||||||
.global_remove = registry_event_remove_callback };
|
.global_remove = registry_event_remove_callback };
|
||||||
|
|
||||||
/* The hotplug thread */
|
/* The hotplug thread */
|
||||||
static int hotplug_loop_init()
|
static int hotplug_loop_init(void)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
@@ -794,7 +794,7 @@ static int hotplug_loop_init()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hotplug_loop_destroy()
|
static void hotplug_loop_destroy(void)
|
||||||
{
|
{
|
||||||
if (hotplug_loop) {
|
if (hotplug_loop) {
|
||||||
PIPEWIRE_pw_thread_loop_stop(hotplug_loop);
|
PIPEWIRE_pw_thread_loop_stop(hotplug_loop);
|
||||||
@@ -836,7 +836,7 @@ static void hotplug_loop_destroy()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PIPEWIRE_DetectDevices()
|
static void PIPEWIRE_DetectDevices(void)
|
||||||
{
|
{
|
||||||
struct io_node *io;
|
struct io_node *io;
|
||||||
|
|
||||||
@@ -1342,7 +1342,7 @@ failed:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PIPEWIRE_Deinitialize()
|
static void PIPEWIRE_Deinitialize(void)
|
||||||
{
|
{
|
||||||
if (pipewire_initialized) {
|
if (pipewire_initialized) {
|
||||||
hotplug_loop_destroy();
|
hotplug_loop_destroy();
|
||||||
|
|||||||
@@ -885,7 +885,7 @@ static int SDLCALL HotplugThread(void *data)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PULSEAUDIO_DetectDevices()
|
static void PULSEAUDIO_DetectDevices(void)
|
||||||
{
|
{
|
||||||
SDL_sem *ready_sem = SDL_CreateSemaphore(0);
|
SDL_sem *ready_sem = SDL_CreateSemaphore(0);
|
||||||
|
|
||||||
|
|||||||
@@ -172,13 +172,18 @@ static SDL_bool RecoverWasapiIfLost(_THIS)
|
|||||||
return lost ? RecoverWasapiDevice(this) : SDL_TRUE;
|
return lost ? RecoverWasapiDevice(this) : SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void WASAPI_WaitDevice(_THIS);
|
||||||
|
|
||||||
static Uint8 *WASAPI_GetDeviceBuf(_THIS)
|
static Uint8 *WASAPI_GetDeviceBuf(_THIS)
|
||||||
{
|
{
|
||||||
/* get an endpoint buffer from WASAPI. */
|
/* get an endpoint buffer from WASAPI. */
|
||||||
BYTE *buffer = NULL;
|
BYTE *buffer = NULL;
|
||||||
|
|
||||||
while (RecoverWasapiIfLost(this) && this->hidden->render) {
|
while (RecoverWasapiIfLost(this) && this->hidden->render) {
|
||||||
if (!WasapiFailed(this, IAudioRenderClient_GetBuffer(this->hidden->render, this->spec.samples, &buffer))) {
|
const HRESULT ret = IAudioRenderClient_GetBuffer(this->hidden->render, this->spec.samples, &buffer);
|
||||||
|
if (ret == AUDCLNT_E_BUFFER_TOO_LARGE) {
|
||||||
|
WASAPI_WaitDevice(this); /* see if we can wait on the buffer to drain some more first... */
|
||||||
|
} else if (!WasapiFailed(this, ret)) {
|
||||||
return (Uint8 *)buffer;
|
return (Uint8 *)buffer;
|
||||||
}
|
}
|
||||||
SDL_assert(buffer == NULL);
|
SDL_assert(buffer == NULL);
|
||||||
@@ -486,6 +491,11 @@ int WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
|
|||||||
this->spec.samples = (Uint16)SDL_ceilf(period_frames);
|
this->spec.samples = (Uint16)SDL_ceilf(period_frames);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* regardless of what we calculated for the period size, clamp it to the expected hardware buffer size. */
|
||||||
|
if (this->spec.samples > bufsize) {
|
||||||
|
this->spec.samples = bufsize;
|
||||||
|
}
|
||||||
|
|
||||||
/* Update the fragment size as size in bytes */
|
/* Update the fragment size as size in bytes */
|
||||||
SDL_CalculateAudioSpec(&this->spec);
|
SDL_CalculateAudioSpec(&this->spec);
|
||||||
|
|
||||||
|
|||||||
@@ -842,18 +842,18 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(onNativeDropFile)(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Lock / Unlock Mutex */
|
/* Lock / Unlock Mutex */
|
||||||
void Android_ActivityMutex_Lock()
|
void Android_ActivityMutex_Lock(void)
|
||||||
{
|
{
|
||||||
SDL_LockMutex(Android_ActivityMutex);
|
SDL_LockMutex(Android_ActivityMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Android_ActivityMutex_Unlock()
|
void Android_ActivityMutex_Unlock(void)
|
||||||
{
|
{
|
||||||
SDL_UnlockMutex(Android_ActivityMutex);
|
SDL_UnlockMutex(Android_ActivityMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lock the Mutex when the Activity is in its 'Running' state */
|
/* Lock the Mutex when the Activity is in its 'Running' state */
|
||||||
void Android_ActivityMutex_Lock_Running()
|
void Android_ActivityMutex_Lock_Running(void)
|
||||||
{
|
{
|
||||||
int pauseSignaled = 0;
|
int pauseSignaled = 0;
|
||||||
int resumeSignaled = 0;
|
int resumeSignaled = 0;
|
||||||
@@ -1439,13 +1439,13 @@ void Android_JNI_SetOrientation(int w, int h, int resizable, const char *hint)
|
|||||||
(*env)->DeleteLocalRef(env, jhint);
|
(*env)->DeleteLocalRef(env, jhint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Android_JNI_MinizeWindow()
|
void Android_JNI_MinizeWindow(void)
|
||||||
{
|
{
|
||||||
JNIEnv *env = Android_JNI_GetEnv();
|
JNIEnv *env = Android_JNI_GetEnv();
|
||||||
(*env)->CallStaticVoidMethod(env, mActivityClass, midMinimizeWindow);
|
(*env)->CallStaticVoidMethod(env, mActivityClass, midMinimizeWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool Android_JNI_ShouldMinimizeOnFocusLoss()
|
SDL_bool Android_JNI_ShouldMinimizeOnFocusLoss(void)
|
||||||
{
|
{
|
||||||
JNIEnv *env = Android_JNI_GetEnv();
|
JNIEnv *env = Android_JNI_GetEnv();
|
||||||
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midShouldMinimizeOnFocusLoss);
|
return (*env)->CallStaticBooleanMethod(env, mActivityClass, midShouldMinimizeOnFocusLoss);
|
||||||
@@ -1879,7 +1879,7 @@ static SDL_bool Android_JNI_ExceptionOccurred(SDL_bool silent)
|
|||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Internal_Android_Create_AssetManager()
|
static void Internal_Android_Create_AssetManager(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct LocalReferenceHolder refs = LocalReferenceHolder_Setup(__FUNCTION__);
|
struct LocalReferenceHolder refs = LocalReferenceHolder_Setup(__FUNCTION__);
|
||||||
@@ -1918,7 +1918,7 @@ static void Internal_Android_Create_AssetManager()
|
|||||||
LocalReferenceHolder_Cleanup(&refs);
|
LocalReferenceHolder_Cleanup(&refs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Internal_Android_Destroy_AssetManager()
|
static void Internal_Android_Destroy_AssetManager(void)
|
||||||
{
|
{
|
||||||
JNIEnv *env = Android_JNI_GetEnv();
|
JNIEnv *env = Android_JNI_GetEnv();
|
||||||
|
|
||||||
@@ -2153,7 +2153,7 @@ int Android_JNI_GetPowerInfo(int *plugged, int *charged, int *battery, int *seco
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add all touch devices */
|
/* Add all touch devices */
|
||||||
void Android_JNI_InitTouch()
|
void Android_JNI_InitTouch(void)
|
||||||
{
|
{
|
||||||
JNIEnv *env = Android_JNI_GetEnv();
|
JNIEnv *env = Android_JNI_GetEnv();
|
||||||
(*env)->CallStaticVoidMethod(env, mActivityClass, midInitTouch);
|
(*env)->CallStaticVoidMethod(env, mActivityClass, midInitTouch);
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ static void kbd_cleanup_signal_action(int signum, siginfo_t *info, void *ucontex
|
|||||||
SDL_EVDEV_kbd_reraise_signal(signum);
|
SDL_EVDEV_kbd_reraise_signal(signum);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void kbd_unregister_emerg_cleanup()
|
static void kbd_unregister_emerg_cleanup(void)
|
||||||
{
|
{
|
||||||
int tabidx, signum;
|
int tabidx, signum;
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ extern "C" {
|
|||||||
static XTaskQueueHandle GDK_GlobalTaskQueue;
|
static XTaskQueueHandle GDK_GlobalTaskQueue;
|
||||||
|
|
||||||
PAPPSTATE_REGISTRATION hPLM = {};
|
PAPPSTATE_REGISTRATION hPLM = {};
|
||||||
|
PAPPCONSTRAIN_REGISTRATION hCPLM = {};
|
||||||
HANDLE plmSuspendComplete = nullptr;
|
HANDLE plmSuspendComplete = nullptr;
|
||||||
|
|
||||||
extern "C" DECLSPEC int
|
extern "C" DECLSPEC int
|
||||||
@@ -177,6 +178,23 @@ SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Register constrain/unconstrain handling */
|
||||||
|
auto raccn = [](BOOLEAN constrained, PVOID context) {
|
||||||
|
SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "[GDK] in RegisterAppConstrainedChangeNotification handler");
|
||||||
|
SDL_VideoDevice *_this = SDL_GetVideoDevice();
|
||||||
|
if (_this) {
|
||||||
|
if (constrained) {
|
||||||
|
SDL_SetKeyboardFocus(NULL);
|
||||||
|
} else {
|
||||||
|
SDL_SetKeyboardFocus(_this->windows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (RegisterAppConstrainedChangeNotification(raccn, NULL, &hCPLM)) {
|
||||||
|
SDL_SetError("[GDK] Unable to call RegisterAppConstrainedChangeNotification");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Run the application main() code */
|
/* Run the application main() code */
|
||||||
result = mainFunction(argc, argv);
|
result = mainFunction(argc, argv);
|
||||||
|
|
||||||
@@ -184,6 +202,9 @@ SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved)
|
|||||||
UnregisterAppStateChangeNotification(hPLM);
|
UnregisterAppStateChangeNotification(hPLM);
|
||||||
CloseHandle(plmSuspendComplete);
|
CloseHandle(plmSuspendComplete);
|
||||||
|
|
||||||
|
/* Unregister constrain/unconstrain handling */
|
||||||
|
UnregisterAppConstrainedChangeNotification(hCPLM);
|
||||||
|
|
||||||
/* !!! FIXME: This follows the docs exactly, but for some reason still leaks handles on exit? */
|
/* !!! FIXME: This follows the docs exactly, but for some reason still leaks handles on exit? */
|
||||||
/* Terminate the task queue and dispatch any pending tasks */
|
/* Terminate the task queue and dispatch any pending tasks */
|
||||||
XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
|
XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ static void kbd_cleanup_signal_action(int signum, siginfo_t *info, void *ucontex
|
|||||||
SDL_EVDEV_kbd_reraise_signal(signum);
|
SDL_EVDEV_kbd_reraise_signal(signum);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void kbd_unregister_emerg_cleanup()
|
static void kbd_unregister_emerg_cleanup(void)
|
||||||
{
|
{
|
||||||
int tabidx, signum;
|
int tabidx, signum;
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ typedef struct _FcitxClient
|
|||||||
|
|
||||||
static FcitxClient fcitx_client;
|
static FcitxClient fcitx_client;
|
||||||
|
|
||||||
static char *GetAppName()
|
static char *GetAppName(void)
|
||||||
{
|
{
|
||||||
#if defined(__LINUX__) || defined(__FREEBSD__)
|
#if defined(__LINUX__) || defined(__FREEBSD__)
|
||||||
char *spot;
|
char *spot;
|
||||||
@@ -368,7 +368,7 @@ static Uint32 Fcitx_ModState(void)
|
|||||||
return fcitx_mods;
|
return fcitx_mods;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool SDL_Fcitx_Init()
|
SDL_bool SDL_Fcitx_Init(void)
|
||||||
{
|
{
|
||||||
fcitx_client.dbus = SDL_DBus_GetContext();
|
fcitx_client.dbus = SDL_DBus_GetContext();
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ SDL_bool SDL_Fcitx_Init()
|
|||||||
return FcitxClientCreateIC(&fcitx_client);
|
return FcitxClientCreateIC(&fcitx_client);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_Fcitx_Quit()
|
void SDL_Fcitx_Quit(void)
|
||||||
{
|
{
|
||||||
FcitxClientICCallMethod(&fcitx_client, "DestroyIC");
|
FcitxClientICCallMethod(&fcitx_client, "DestroyIC");
|
||||||
if (fcitx_client.ic_path) {
|
if (fcitx_client.ic_path) {
|
||||||
@@ -485,7 +485,6 @@ void SDL_Fcitx_PumpEvents(void)
|
|||||||
|
|
||||||
while (dbus->connection_dispatch(conn) == DBUS_DISPATCH_DATA_REMAINS) {
|
while (dbus->connection_dispatch(conn) == DBUS_DISPATCH_DATA_REMAINS) {
|
||||||
/* Do nothing, actual work happens in DBus_MessageFilter */
|
/* Do nothing, actual work happens in DBus_MessageFilter */
|
||||||
usleep(10);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ static _SDL_IME_ProcessKeyEvent SDL_IME_ProcessKeyEvent_Real = NULL;
|
|||||||
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real = NULL;
|
static _SDL_IME_UpdateTextRect SDL_IME_UpdateTextRect_Real = NULL;
|
||||||
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real = NULL;
|
static _SDL_IME_PumpEvents SDL_IME_PumpEvents_Real = NULL;
|
||||||
|
|
||||||
static void InitIME()
|
static void InitIME(void)
|
||||||
{
|
{
|
||||||
static SDL_bool inited = SDL_FALSE;
|
static SDL_bool inited = SDL_FALSE;
|
||||||
#ifdef HAVE_FCITX
|
#ifdef HAVE_FCITX
|
||||||
@@ -142,7 +142,7 @@ void SDL_IME_UpdateTextRect(const SDL_Rect *rect)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_IME_PumpEvents()
|
void SDL_IME_PumpEvents(void)
|
||||||
{
|
{
|
||||||
if (SDL_IME_PumpEvents_Real) {
|
if (SDL_IME_PumpEvents_Real) {
|
||||||
SDL_IME_PumpEvents_Real();
|
SDL_IME_PumpEvents_Real();
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ static SDL_bool realtime_portal_supported(DBusConnection *conn)
|
|||||||
"RTTimeUSecMax", DBUS_TYPE_INT64, &res);
|
"RTTimeUSecMax", DBUS_TYPE_INT64, &res);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_rtkit_interface()
|
static void set_rtkit_interface(void)
|
||||||
{
|
{
|
||||||
SDL_DBusContext *dbus = SDL_DBus_GetContext();
|
SDL_DBusContext *dbus = SDL_DBus_GetContext();
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ static DBusConnection *get_rtkit_dbus_connection()
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rtkit_initialize()
|
static void rtkit_initialize(void)
|
||||||
{
|
{
|
||||||
DBusConnection *dbus_conn;
|
DBusConnection *dbus_conn;
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ static void rtkit_initialize()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static SDL_bool rtkit_initialize_realtime_thread()
|
static SDL_bool rtkit_initialize_realtime_thread(void)
|
||||||
{
|
{
|
||||||
// Following is an excerpt from rtkit README that outlines the requirements
|
// Following is an excerpt from rtkit README that outlines the requirements
|
||||||
// a thread must meet before making rtkit requests:
|
// a thread must meet before making rtkit requests:
|
||||||
|
|||||||
+44
-45
@@ -31,6 +31,7 @@
|
|||||||
#ifdef SDL_USE_LIBUDEV
|
#ifdef SDL_USE_LIBUDEV
|
||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include "SDL_assert.h"
|
#include "SDL_assert.h"
|
||||||
#include "SDL_evdev_capabilities.h"
|
#include "SDL_evdev_capabilities.h"
|
||||||
@@ -227,61 +228,59 @@ void SDL_UDEV_Scan(void)
|
|||||||
|
|
||||||
SDL_bool SDL_UDEV_GetProductInfo(const char *device_path, Uint16 *vendor, Uint16 *product, Uint16 *version, int *class)
|
SDL_bool SDL_UDEV_GetProductInfo(const char *device_path, Uint16 *vendor, Uint16 *product, Uint16 *version, int *class)
|
||||||
{
|
{
|
||||||
struct udev_enumerate *enumerate = NULL;
|
struct stat statbuf;
|
||||||
struct udev_list_entry *devs = NULL;
|
char type;
|
||||||
struct udev_list_entry *item = NULL;
|
struct udev_device *dev;
|
||||||
SDL_bool found = SDL_FALSE;
|
const char* val;
|
||||||
|
int class_temp;
|
||||||
|
|
||||||
if (!_this) {
|
if (!_this) {
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
enumerate = _this->syms.udev_enumerate_new(_this->udev);
|
if (stat(device_path, &statbuf) == -1) {
|
||||||
if (!enumerate) {
|
|
||||||
SDL_SetError("udev_enumerate_new() failed");
|
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_this->syms.udev_enumerate_scan_devices(enumerate);
|
if (S_ISBLK(statbuf.st_mode)) {
|
||||||
devs = _this->syms.udev_enumerate_get_list_entry(enumerate);
|
type = 'b';
|
||||||
for (item = devs; item && !found; item = _this->syms.udev_list_entry_get_next(item)) {
|
}
|
||||||
const char *path = _this->syms.udev_list_entry_get_name(item);
|
else if (S_ISCHR(statbuf.st_mode)) {
|
||||||
struct udev_device *dev = _this->syms.udev_device_new_from_syspath(_this->udev, path);
|
type = 'c';
|
||||||
if (dev) {
|
}
|
||||||
const char *val = NULL;
|
else {
|
||||||
const char *existing_path;
|
return SDL_FALSE;
|
||||||
|
|
||||||
existing_path = _this->syms.udev_device_get_devnode(dev);
|
|
||||||
if (existing_path && SDL_strcmp(device_path, existing_path) == 0) {
|
|
||||||
int class_temp;
|
|
||||||
found = SDL_TRUE;
|
|
||||||
|
|
||||||
val = _this->syms.udev_device_get_property_value(dev, "ID_VENDOR_ID");
|
|
||||||
if (val) {
|
|
||||||
*vendor = (Uint16)SDL_strtol(val, NULL, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = _this->syms.udev_device_get_property_value(dev, "ID_MODEL_ID");
|
|
||||||
if (val) {
|
|
||||||
*product = (Uint16)SDL_strtol(val, NULL, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = _this->syms.udev_device_get_property_value(dev, "ID_REVISION");
|
|
||||||
if (val) {
|
|
||||||
*version = (Uint16)SDL_strtol(val, NULL, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
class_temp = device_class(dev);
|
|
||||||
if (class_temp) {
|
|
||||||
*class = class_temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_this->syms.udev_device_unref(dev);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_this->syms.udev_enumerate_unref(enumerate);
|
|
||||||
|
|
||||||
return found;
|
dev = _this->syms.udev_device_new_from_devnum(_this->udev, type, statbuf.st_rdev);
|
||||||
|
|
||||||
|
if (!dev) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = _this->syms.udev_device_get_property_value(dev, "ID_VENDOR_ID");
|
||||||
|
if (val) {
|
||||||
|
*vendor = (Uint16)SDL_strtol(val, NULL, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
val = _this->syms.udev_device_get_property_value(dev, "ID_MODEL_ID");
|
||||||
|
if (val) {
|
||||||
|
*product = (Uint16)SDL_strtol(val, NULL, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
val = _this->syms.udev_device_get_property_value(dev, "ID_REVISION");
|
||||||
|
if (val) {
|
||||||
|
*version = (Uint16)SDL_strtol(val, NULL, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
class_temp = device_class(dev);
|
||||||
|
if (class_temp) {
|
||||||
|
*class = class_temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
_this->syms.udev_device_unref(dev);
|
||||||
|
|
||||||
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_UDEV_UnloadLibrary(void)
|
void SDL_UDEV_UnloadLibrary(void)
|
||||||
|
|||||||
@@ -449,7 +449,7 @@ static SDL_WSCONS_input_data *SDL_WSCONS_Init_Keyboard(const char *dev)
|
|||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_WSCONS_Init()
|
void SDL_WSCONS_Init(void)
|
||||||
{
|
{
|
||||||
inputs[0] = SDL_WSCONS_Init_Keyboard("/dev/wskbd0");
|
inputs[0] = SDL_WSCONS_Init_Keyboard("/dev/wskbd0");
|
||||||
inputs[1] = SDL_WSCONS_Init_Keyboard("/dev/wskbd1");
|
inputs[1] = SDL_WSCONS_Init_Keyboard("/dev/wskbd1");
|
||||||
@@ -460,7 +460,7 @@ void SDL_WSCONS_Init()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_WSCONS_Quit()
|
void SDL_WSCONS_Quit(void)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
SDL_WSCONS_input_data *input = NULL;
|
SDL_WSCONS_input_data *input = NULL;
|
||||||
@@ -921,7 +921,7 @@ static void updateKeyboard(SDL_WSCONS_input_data *input)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_WSCONS_PumpEvents()
|
void SDL_WSCONS_PumpEvents(void)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#undef WINVER
|
#undef WINVER
|
||||||
#undef _WIN32_WINNT
|
#undef _WIN32_WINNT
|
||||||
#if defined(SDL_VIDEO_RENDER_D3D12)
|
#if SDL_VIDEO_RENDER_D3D12
|
||||||
#define _WIN32_WINNT 0xA00 /* For D3D12, 0xA00 is required */
|
#define _WIN32_WINNT 0xA00 /* For D3D12, 0xA00 is required */
|
||||||
#elif defined(HAVE_SHELLSCALINGAPI_H)
|
#elif defined(HAVE_SHELLSCALINGAPI_H)
|
||||||
#define _WIN32_WINNT 0x603 /* For DPI support */
|
#define _WIN32_WINNT 0x603 /* For DPI support */
|
||||||
@@ -92,16 +92,6 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <basetyps.h> /* for REFIID with broken mingw.org headers */
|
#include <basetyps.h> /* for REFIID with broken mingw.org headers */
|
||||||
|
|
||||||
/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
|
|
||||||
#ifndef DWORD_PTR
|
|
||||||
#define DWORD_PTR DWORD
|
|
||||||
#endif
|
|
||||||
#ifndef LONG_PTR
|
|
||||||
#define LONG_PTR LONG
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "SDL_rect.h"
|
#include "SDL_rect.h"
|
||||||
|
|
||||||
/* Routines to convert from UTF8 to native Windows text */
|
/* Routines to convert from UTF8 to native Windows text */
|
||||||
|
|||||||
@@ -212,7 +212,7 @@ typedef struct
|
|||||||
#endif /* HAVE_XINPUT_H */
|
#endif /* HAVE_XINPUT_H */
|
||||||
|
|
||||||
/* This struct is not defined in XInput headers. */
|
/* This struct is not defined in XInput headers. */
|
||||||
typedef struct _XINPUT_CAPABILITIES_EX
|
typedef struct
|
||||||
{
|
{
|
||||||
XINPUT_CAPABILITIES Capabilities;
|
XINPUT_CAPABILITIES Capabilities;
|
||||||
WORD VendorId;
|
WORD VendorId;
|
||||||
@@ -220,7 +220,7 @@ typedef struct _XINPUT_CAPABILITIES_EX
|
|||||||
WORD ProductVersion;
|
WORD ProductVersion;
|
||||||
WORD unk1;
|
WORD unk1;
|
||||||
DWORD unk2;
|
DWORD unk2;
|
||||||
} XINPUT_CAPABILITIES_EX, *PXINPUT_CAPABILITIES_EX;
|
} SDL_XINPUT_CAPABILITIES_EX;
|
||||||
|
|
||||||
/* Forward decl's for XInput API's we load dynamically and use if available */
|
/* Forward decl's for XInput API's we load dynamically and use if available */
|
||||||
typedef DWORD(WINAPI *XInputGetState_t)(
|
typedef DWORD(WINAPI *XInputGetState_t)(
|
||||||
@@ -244,7 +244,7 @@ typedef DWORD(WINAPI *XInputGetCapabilitiesEx_t)(
|
|||||||
DWORD dwReserved, /* [in] Must be 1 */
|
DWORD dwReserved, /* [in] Must be 1 */
|
||||||
DWORD dwUserIndex, /* [in] Index of the gamer associated with the device */
|
DWORD dwUserIndex, /* [in] Index of the gamer associated with the device */
|
||||||
DWORD dwFlags, /* [in] Input flags that identify the device type */
|
DWORD dwFlags, /* [in] Input flags that identify the device type */
|
||||||
XINPUT_CAPABILITIES_EX *pCapabilitiesEx /* [out] Receives the capabilities */
|
SDL_XINPUT_CAPABILITIES_EX *pCapabilitiesEx /* [out] Receives the capabilities */
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef DWORD(WINAPI *XInputGetBatteryInformation_t)(
|
typedef DWORD(WINAPI *XInputGetBatteryInformation_t)(
|
||||||
|
|||||||
@@ -20,12 +20,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "../../SDL_internal.h"
|
#include "../../SDL_internal.h"
|
||||||
|
|
||||||
/* Standard C++11 includes */
|
|
||||||
#include <functional>
|
|
||||||
#include <string>
|
|
||||||
#include <sstream>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/* Windows includes */
|
/* Windows includes */
|
||||||
#include "ppltasks.h"
|
#include "ppltasks.h"
|
||||||
using namespace concurrency;
|
using namespace concurrency;
|
||||||
@@ -64,7 +58,7 @@ extern "C" {
|
|||||||
#include "SDL_winrtapp_common.h"
|
#include "SDL_winrtapp_common.h"
|
||||||
#include "SDL_winrtapp_direct3d.h"
|
#include "SDL_winrtapp_direct3d.h"
|
||||||
|
|
||||||
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
|
#if SDL_VIDEO_RENDER_D3D11
|
||||||
/* Calling IDXGIDevice3::Trim on the active Direct3D 11.x device is necessary
|
/* Calling IDXGIDevice3::Trim on the active Direct3D 11.x device is necessary
|
||||||
* when Windows 8.1 apps are about to get suspended.
|
* when Windows 8.1 apps are about to get suspended.
|
||||||
*/
|
*/
|
||||||
@@ -628,7 +622,7 @@ void SDL_WinRTApp::OnSuspending(Platform::Object ^ sender, SuspendingEventArgs ^
|
|||||||
// Let the Direct3D 11 renderer prepare for the app to be backgrounded.
|
// Let the Direct3D 11 renderer prepare for the app to be backgrounded.
|
||||||
// This is necessary for Windows 8.1, possibly elsewhere in the future.
|
// This is necessary for Windows 8.1, possibly elsewhere in the future.
|
||||||
// More details at: http://msdn.microsoft.com/en-us/library/windows/apps/Hh994929.aspx
|
// More details at: http://msdn.microsoft.com/en-us/library/windows/apps/Hh994929.aspx
|
||||||
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
|
#if SDL_VIDEO_RENDER_D3D11
|
||||||
if (WINRT_GlobalSDLWindow) {
|
if (WINRT_GlobalSDLWindow) {
|
||||||
SDL_Renderer *renderer = SDL_GetRenderer(WINRT_GlobalSDLWindow);
|
SDL_Renderer *renderer = SDL_GetRenderer(WINRT_GlobalSDLWindow);
|
||||||
if (renderer && (SDL_strcmp(renderer->info.name, "direct3d11") == 0)) {
|
if (renderer && (SDL_strcmp(renderer->info.name, "direct3d11") == 0)) {
|
||||||
|
|||||||
@@ -1239,7 +1239,7 @@ void SDL_SIMDFree(void *ptr)
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
int main()
|
int main(void)
|
||||||
{
|
{
|
||||||
printf("CPU count: %d\n", SDL_GetCPUCount());
|
printf("CPU count: %d\n", SDL_GetCPUCount());
|
||||||
printf("CPU type: %s\n", SDL_GetCPUType());
|
printf("CPU type: %s\n", SDL_GetCPUType());
|
||||||
|
|||||||
+5
-12
@@ -34,13 +34,6 @@
|
|||||||
#include "../video/SDL_sysvideo.h"
|
#include "../video/SDL_sysvideo.h"
|
||||||
#include "SDL_syswm.h"
|
#include "SDL_syswm.h"
|
||||||
|
|
||||||
#undef SDL_PRIs64
|
|
||||||
#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__CYGWIN__)
|
|
||||||
#define SDL_PRIs64 "I64d"
|
|
||||||
#else
|
|
||||||
#define SDL_PRIs64 "lld"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* An arbitrary limit so we don't have unbounded growth */
|
/* An arbitrary limit so we don't have unbounded growth */
|
||||||
#define SDL_MAX_QUEUED_EVENTS 65535
|
#define SDL_MAX_QUEUED_EVENTS 65535
|
||||||
|
|
||||||
@@ -454,8 +447,8 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
|
|
||||||
#define PRINT_FINGER_EVENT(event) \
|
#define PRINT_FINGER_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " fingerid=%" SDL_PRIs64 " x=%f y=%f dx=%f dy=%f pressure=%f)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " fingerid=%" SDL_PRIs64 " x=%f y=%f dx=%f dy=%f pressure=%f)", \
|
||||||
(uint)event->tfinger.timestamp, (long long)event->tfinger.touchId, \
|
(uint)event->tfinger.timestamp, event->tfinger.touchId, \
|
||||||
(long long)event->tfinger.fingerId, event->tfinger.x, event->tfinger.y, \
|
event->tfinger.fingerId, event->tfinger.x, event->tfinger.y, \
|
||||||
event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure)
|
event->tfinger.dx, event->tfinger.dy, event->tfinger.pressure)
|
||||||
SDL_EVENT_CASE(SDL_FINGERDOWN)
|
SDL_EVENT_CASE(SDL_FINGERDOWN)
|
||||||
PRINT_FINGER_EVENT(event);
|
PRINT_FINGER_EVENT(event);
|
||||||
@@ -470,8 +463,8 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
|
|
||||||
#define PRINT_DOLLAR_EVENT(event) \
|
#define PRINT_DOLLAR_EVENT(event) \
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " gestureid=%" SDL_PRIs64 " numfingers=%u error=%f x=%f y=%f)", \
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " gestureid=%" SDL_PRIs64 " numfingers=%u error=%f x=%f y=%f)", \
|
||||||
(uint)event->dgesture.timestamp, (long long)event->dgesture.touchId, \
|
(uint)event->dgesture.timestamp, event->dgesture.touchId, \
|
||||||
(long long)event->dgesture.gestureId, (uint)event->dgesture.numFingers, \
|
event->dgesture.gestureId, (uint)event->dgesture.numFingers, \
|
||||||
event->dgesture.error, event->dgesture.x, event->dgesture.y)
|
event->dgesture.error, event->dgesture.x, event->dgesture.y)
|
||||||
SDL_EVENT_CASE(SDL_DOLLARGESTURE)
|
SDL_EVENT_CASE(SDL_DOLLARGESTURE)
|
||||||
PRINT_DOLLAR_EVENT(event);
|
PRINT_DOLLAR_EVENT(event);
|
||||||
@@ -483,7 +476,7 @@ static void SDL_LogEvent(const SDL_Event *event)
|
|||||||
|
|
||||||
SDL_EVENT_CASE(SDL_MULTIGESTURE)
|
SDL_EVENT_CASE(SDL_MULTIGESTURE)
|
||||||
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " dtheta=%f ddist=%f x=%f y=%f numfingers=%u)",
|
(void)SDL_snprintf(details, sizeof(details), " (timestamp=%u touchid=%" SDL_PRIs64 " dtheta=%f ddist=%f x=%f y=%f numfingers=%u)",
|
||||||
(uint)event->mgesture.timestamp, (long long)event->mgesture.touchId,
|
(uint)event->mgesture.timestamp, event->mgesture.touchId,
|
||||||
event->mgesture.dTheta, event->mgesture.dDist,
|
event->mgesture.dTheta, event->mgesture.dDist,
|
||||||
event->mgesture.x, event->mgesture.y, (uint)event->mgesture.numFingers);
|
event->mgesture.x, event->mgesture.y, (uint)event->mgesture.numFingers);
|
||||||
break;
|
break;
|
||||||
|
|||||||
+14
-1
@@ -170,6 +170,13 @@ static void SDLCALL SDL_MouseRelativeWarpMotionChanged(void *userdata, const cha
|
|||||||
mouse->relative_mode_warp_motion = SDL_GetStringBoolean(hint, SDL_FALSE);
|
mouse->relative_mode_warp_motion = SDL_GetStringBoolean(hint, SDL_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SDLCALL SDL_MouseRelativeCursorVisibleChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
|
||||||
|
{
|
||||||
|
SDL_Mouse *mouse = (SDL_Mouse *)userdata;
|
||||||
|
|
||||||
|
mouse->relative_mode_cursor_visible = SDL_GetStringBoolean(hint, SDL_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
/* Public functions */
|
/* Public functions */
|
||||||
int SDL_MousePreInit(void)
|
int SDL_MousePreInit(void)
|
||||||
{
|
{
|
||||||
@@ -209,6 +216,9 @@ int SDL_MousePreInit(void)
|
|||||||
SDL_AddHintCallback(SDL_HINT_MOUSE_RELATIVE_WARP_MOTION,
|
SDL_AddHintCallback(SDL_HINT_MOUSE_RELATIVE_WARP_MOTION,
|
||||||
SDL_MouseRelativeWarpMotionChanged, mouse);
|
SDL_MouseRelativeWarpMotionChanged, mouse);
|
||||||
|
|
||||||
|
SDL_AddHintCallback(SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE,
|
||||||
|
SDL_MouseRelativeCursorVisibleChanged, mouse);
|
||||||
|
|
||||||
mouse->was_touch_mouse_events = SDL_FALSE; /* no touch to mouse movement event pending */
|
mouse->was_touch_mouse_events = SDL_FALSE; /* no touch to mouse movement event pending */
|
||||||
|
|
||||||
mouse->cursor_shown = SDL_TRUE;
|
mouse->cursor_shown = SDL_TRUE;
|
||||||
@@ -992,6 +1002,9 @@ void SDL_MouseQuit(void)
|
|||||||
|
|
||||||
SDL_DelHintCallback(SDL_HINT_MOUSE_RELATIVE_WARP_MOTION,
|
SDL_DelHintCallback(SDL_HINT_MOUSE_RELATIVE_WARP_MOTION,
|
||||||
SDL_MouseRelativeWarpMotionChanged, mouse);
|
SDL_MouseRelativeWarpMotionChanged, mouse);
|
||||||
|
|
||||||
|
SDL_DelHintCallback(SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE,
|
||||||
|
SDL_MouseRelativeCursorVisibleChanged, mouse);
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint32 SDL_GetMouseState(int *x, int *y)
|
Uint32 SDL_GetMouseState(int *x, int *y)
|
||||||
@@ -1412,7 +1425,7 @@ void SDL_SetCursor(SDL_Cursor *cursor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cursor && mouse->cursor_shown && !mouse->relative_mode) {
|
if (cursor && mouse->cursor_shown && (!mouse->relative_mode || mouse->relative_mode_cursor_visible)) {
|
||||||
if (mouse->ShowCursor) {
|
if (mouse->ShowCursor) {
|
||||||
mouse->ShowCursor(cursor);
|
mouse->ShowCursor(cursor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ typedef struct
|
|||||||
SDL_bool relative_mode;
|
SDL_bool relative_mode;
|
||||||
SDL_bool relative_mode_warp;
|
SDL_bool relative_mode_warp;
|
||||||
SDL_bool relative_mode_warp_motion;
|
SDL_bool relative_mode_warp_motion;
|
||||||
|
SDL_bool relative_mode_cursor_visible;
|
||||||
SDL_bool enable_normal_speed_scale;
|
SDL_bool enable_normal_speed_scale;
|
||||||
float normal_speed_scale;
|
float normal_speed_scale;
|
||||||
SDL_bool enable_relative_speed_scale;
|
SDL_bool enable_relative_speed_scale;
|
||||||
|
|||||||
+43
-7
@@ -36,8 +36,8 @@
|
|||||||
|
|
||||||
#ifdef HAVE_STDIO_H
|
#ifdef HAVE_STDIO_H
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LIMITS_H
|
#ifdef HAVE_LIMITS_H
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -523,6 +523,25 @@ static int SDLCALL mem_close(SDL_RWops *context)
|
|||||||
|
|
||||||
/* Functions to create SDL_RWops structures from various data sources */
|
/* Functions to create SDL_RWops structures from various data sources */
|
||||||
|
|
||||||
|
#if defined(HAVE_STDIO_H) && !(defined(__WIN32__) || defined(__GDK__))
|
||||||
|
static SDL_bool IsRegularFileOrPipe(FILE *f)
|
||||||
|
{
|
||||||
|
#ifdef __WINRT__
|
||||||
|
struct __stat64 st;
|
||||||
|
if (_fstat64(_fileno(f), &st) < 0 ||
|
||||||
|
!((st.st_mode & _S_IFMT) == _S_IFREG || (st.st_mode & _S_IFMT) == _S_IFIFO)) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
struct stat st;
|
||||||
|
if (fstat(fileno(f), &st) < 0 || !(S_ISREG(st.st_mode) || S_ISFIFO(st.st_mode))) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
|
SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
|
||||||
{
|
{
|
||||||
SDL_RWops *rwops = NULL;
|
SDL_RWops *rwops = NULL;
|
||||||
@@ -536,6 +555,11 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
|
|||||||
if (*file == '/') {
|
if (*file == '/') {
|
||||||
FILE *fp = fopen(file, mode);
|
FILE *fp = fopen(file, mode);
|
||||||
if (fp) {
|
if (fp) {
|
||||||
|
if (!IsRegularFileOrPipe(fp)) {
|
||||||
|
fclose(fp);
|
||||||
|
SDL_SetError("%s is not a regular file or pipe", file);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return SDL_RWFromFP(fp, 1);
|
return SDL_RWFromFP(fp, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -551,6 +575,11 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
|
|||||||
fp = fopen(path, mode);
|
fp = fopen(path, mode);
|
||||||
SDL_stack_free(path);
|
SDL_stack_free(path);
|
||||||
if (fp) {
|
if (fp) {
|
||||||
|
if (!IsRegularFileOrPipe(fp)) {
|
||||||
|
fclose(fp);
|
||||||
|
SDL_SetError("%s is not a regular file or pipe", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return SDL_RWFromFP(fp, 1);
|
return SDL_RWFromFP(fp, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -604,6 +633,10 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
|
|||||||
#endif
|
#endif
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
SDL_SetError("Couldn't open %s", file);
|
SDL_SetError("Couldn't open %s", file);
|
||||||
|
} else if (!IsRegularFileOrPipe(fp)) {
|
||||||
|
fclose(fp);
|
||||||
|
fp = NULL;
|
||||||
|
SDL_SetError("%s is not a regular file or pipe", file);
|
||||||
} else {
|
} else {
|
||||||
rwops = SDL_RWFromFP(fp, SDL_TRUE);
|
rwops = SDL_RWFromFP(fp, SDL_TRUE);
|
||||||
}
|
}
|
||||||
@@ -718,12 +751,12 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
|
|||||||
{
|
{
|
||||||
static const Sint64 FILE_CHUNK_SIZE = 1024;
|
static const Sint64 FILE_CHUNK_SIZE = 1024;
|
||||||
Sint64 size;
|
Sint64 size;
|
||||||
size_t size_read, size_total;
|
size_t size_read, size_total = 0;
|
||||||
void *data = NULL, *newdata;
|
void *data = NULL, *newdata;
|
||||||
|
|
||||||
if (!src) {
|
if (!src) {
|
||||||
SDL_InvalidParamError("src");
|
SDL_InvalidParamError("src");
|
||||||
return NULL;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
size = SDL_RWsize(src);
|
size = SDL_RWsize(src);
|
||||||
@@ -731,8 +764,11 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
|
|||||||
size = FILE_CHUNK_SIZE;
|
size = FILE_CHUNK_SIZE;
|
||||||
}
|
}
|
||||||
data = SDL_malloc((size_t)(size + 1));
|
data = SDL_malloc((size_t)(size + 1));
|
||||||
|
if (!data) {
|
||||||
|
SDL_OutOfMemory();
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
size_total = 0;
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((((Sint64)size_total) + FILE_CHUNK_SIZE) > size) {
|
if ((((Sint64)size_total) + FILE_CHUNK_SIZE) > size) {
|
||||||
size = (size_total + FILE_CHUNK_SIZE);
|
size = (size_total + FILE_CHUNK_SIZE);
|
||||||
@@ -753,12 +789,12 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
|
|||||||
size_total += size_read;
|
size_total += size_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (datasize) {
|
|
||||||
*datasize = size_total;
|
|
||||||
}
|
|
||||||
((char *)data)[size_total] = '\0';
|
((char *)data)[size_total] = '\0';
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
if (datasize) {
|
||||||
|
*datasize = size_total;
|
||||||
|
}
|
||||||
if (freesrc && src) {
|
if (freesrc && src) {
|
||||||
SDL_RWclose(src);
|
SDL_RWclose(src);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "../../SDL_internal.h"
|
#include "../../SDL_internal.h"
|
||||||
|
|
||||||
#ifdef SDL_FILESYSTEM_XBOX
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
/* System dependent filesystem routines */
|
/* System dependent filesystem routines */
|
||||||
@@ -135,6 +134,5 @@ SDL_GetPrefPath(const char *org, const char *app)
|
|||||||
return folderPath;
|
return folderPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SDL_FILESYSTEM_XBOX */
|
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
@@ -877,6 +877,41 @@ static int SDL_libusb_get_string_descriptor(libusb_device_handle *dev,
|
|||||||
#undef make_path
|
#undef make_path
|
||||||
#undef read_thread
|
#undef read_thread
|
||||||
|
|
||||||
|
/* If the platform has any backend other than libusb, try to avoid using
|
||||||
|
* libusb as the main backend for devices, since it detaches drivers and
|
||||||
|
* therefore makes devices inaccessible to the rest of the OS.
|
||||||
|
*
|
||||||
|
* We do this by whitelisting devices we know to be accessible _exclusively_
|
||||||
|
* via libusb; these are typically devices that look like HIDs but have a
|
||||||
|
* quirk that requires direct access to the hardware.
|
||||||
|
*/
|
||||||
|
static const struct {
|
||||||
|
Uint16 vendor;
|
||||||
|
Uint16 product;
|
||||||
|
} SDL_libusb_whitelist[] = {
|
||||||
|
{ 0x057e, 0x0337 } /* Nintendo WUP-028, Wii U/Switch GameCube Adapter */
|
||||||
|
};
|
||||||
|
|
||||||
|
static SDL_bool
|
||||||
|
IsInWhitelist(Uint16 vendor, Uint16 product)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < SDL_arraysize(SDL_libusb_whitelist); i += 1) {
|
||||||
|
if (vendor == SDL_libusb_whitelist[i].vendor &&
|
||||||
|
product == SDL_libusb_whitelist[i].product) {
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_PLATFORM_BACKEND) || HAVE_DRIVER_BACKEND
|
||||||
|
#define use_libusb_whitelist_default SDL_TRUE
|
||||||
|
#else
|
||||||
|
#define use_libusb_whitelist_default SDL_FALSE
|
||||||
|
#endif /* HAVE_PLATFORM_BACKEND || HAVE_DRIVER_BACKEND */
|
||||||
|
static SDL_bool use_libusb_whitelist = use_libusb_whitelist_default;
|
||||||
|
|
||||||
#endif /* HAVE_LIBUSB */
|
#endif /* HAVE_LIBUSB */
|
||||||
|
|
||||||
#endif /* !SDL_HIDAPI_DISABLED */
|
#endif /* !SDL_HIDAPI_DISABLED */
|
||||||
@@ -1062,6 +1097,8 @@ int SDL_hid_init(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LIBUSB
|
#ifdef HAVE_LIBUSB
|
||||||
|
use_libusb_whitelist = SDL_GetHintBoolean("SDL_HIDAPI_LIBUSB_WHITELIST",
|
||||||
|
use_libusb_whitelist_default);
|
||||||
if (SDL_getenv("SDL_HIDAPI_DISABLE_LIBUSB") != NULL) {
|
if (SDL_getenv("SDL_HIDAPI_DISABLE_LIBUSB") != NULL) {
|
||||||
SDL_LogDebug(SDL_LOG_CATEGORY_INPUT,
|
SDL_LogDebug(SDL_LOG_CATEGORY_INPUT,
|
||||||
"libusb disabled by SDL_HIDAPI_DISABLE_LIBUSB");
|
"libusb disabled by SDL_HIDAPI_DISABLE_LIBUSB");
|
||||||
@@ -1238,6 +1275,16 @@ struct SDL_hid_device_info *SDL_hid_enumerate(unsigned short vendor_id, unsigned
|
|||||||
SDL_Log("libusb devices found:");
|
SDL_Log("libusb devices found:");
|
||||||
#endif
|
#endif
|
||||||
for (usb_dev = usb_devs; usb_dev; usb_dev = usb_dev->next) {
|
for (usb_dev = usb_devs; usb_dev; usb_dev = usb_dev->next) {
|
||||||
|
if (use_libusb_whitelist) {
|
||||||
|
if (!IsInWhitelist(usb_dev->vendor_id, usb_dev->product_id)) {
|
||||||
|
#ifdef DEBUG_HIDAPI
|
||||||
|
SDL_Log("Device was not in libusb whitelist: %ls %ls 0x%.4hx 0x%.4hx",
|
||||||
|
usb_dev->manufacturer_string, usb_dev->product_string,
|
||||||
|
usb_dev->vendor_id, usb_dev->product_id);
|
||||||
|
#endif /* DEBUG_HIDAPI */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
new_dev = (struct SDL_hid_device_info *)SDL_malloc(sizeof(struct SDL_hid_device_info));
|
new_dev = (struct SDL_hid_device_info *)SDL_malloc(sizeof(struct SDL_hid_device_info));
|
||||||
if (new_dev == NULL) {
|
if (new_dev == NULL) {
|
||||||
LIBUSB_hid_free_enumeration(usb_devs);
|
LIBUSB_hid_free_enumeration(usb_devs);
|
||||||
|
|||||||
@@ -519,7 +519,7 @@ static struct usb_string_cache_entry *usb_string_cache = NULL;
|
|||||||
static size_t usb_string_cache_size = 0;
|
static size_t usb_string_cache_size = 0;
|
||||||
static size_t usb_string_cache_insert_pos = 0;
|
static size_t usb_string_cache_insert_pos = 0;
|
||||||
|
|
||||||
static int usb_string_cache_grow()
|
static int usb_string_cache_grow(void)
|
||||||
{
|
{
|
||||||
struct usb_string_cache_entry *new_cache;
|
struct usb_string_cache_entry *new_cache;
|
||||||
size_t allocSize;
|
size_t allocSize;
|
||||||
@@ -537,7 +537,7 @@ static int usb_string_cache_grow()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void usb_string_cache_destroy()
|
static void usb_string_cache_destroy(void)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < usb_string_cache_insert_pos; i++) {
|
for (i = 0; i < usb_string_cache_insert_pos; i++) {
|
||||||
@@ -715,6 +715,7 @@ static int is_xboxone(unsigned short vendor_id, const struct libusb_interface_de
|
|||||||
0x044f, /* Thrustmaster */
|
0x044f, /* Thrustmaster */
|
||||||
0x045e, /* Microsoft */
|
0x045e, /* Microsoft */
|
||||||
0x0738, /* Mad Catz */
|
0x0738, /* Mad Catz */
|
||||||
|
0x0b05, /* ASUS */
|
||||||
0x0e6f, /* PDP */
|
0x0e6f, /* PDP */
|
||||||
0x0f0d, /* Hori */
|
0x0f0d, /* Hori */
|
||||||
0x10f5, /* Turtle Beach */
|
0x10f5, /* Turtle Beach */
|
||||||
|
|||||||
@@ -504,7 +504,7 @@ int HID_API_EXPORT hid_exit(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_pending_events() {
|
static void process_pending_events(void) {
|
||||||
SInt32 res;
|
SInt32 res;
|
||||||
do {
|
do {
|
||||||
res = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.001, FALSE);
|
res = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.001, FALSE);
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ static void register_error(hid_device *device, const char *op)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HIDAPI_USE_DDK
|
#ifndef HIDAPI_USE_DDK
|
||||||
static int lookup_functions()
|
static int lookup_functions(void)
|
||||||
{
|
{
|
||||||
lib_handle = LoadLibrary(TEXT("hid.dll"));
|
lib_handle = LoadLibrary(TEXT("hid.dll"));
|
||||||
if (lib_handle) {
|
if (lib_handle) {
|
||||||
|
|||||||
@@ -555,7 +555,7 @@ static ControllerMapping_t *SDL_CreateMappingForHIDAPIController(SDL_JoystickGUI
|
|||||||
SDL_strlcat(mapping_string, "a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,misc1:b15,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,misc1:b15,", sizeof(mapping_string));
|
||||||
break;
|
break;
|
||||||
case k_eSwitchDeviceInfoControllerType_SEGA_Genesis:
|
case k_eSwitchDeviceInfoControllerType_SEGA_Genesis:
|
||||||
SDL_strlcat(mapping_string, "a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,rightshoulder:b10,righttrigger:a5,start:b6,misc1:b15,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,misc1:b15,", sizeof(mapping_string));
|
||||||
break;
|
break;
|
||||||
case k_eWiiExtensionControllerType_None:
|
case k_eWiiExtensionControllerType_None:
|
||||||
SDL_strlcat(mapping_string, "a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,start:b6,x:b2,y:b3,", sizeof(mapping_string));
|
SDL_strlcat(mapping_string, "a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,start:b6,x:b2,y:b3,", sizeof(mapping_string));
|
||||||
@@ -688,16 +688,14 @@ static ControllerMapping_t *SDL_CreateMappingForWGIController(SDL_JoystickGUID g
|
|||||||
/*
|
/*
|
||||||
* Helper function to scan the mappings database for a controller with the specified GUID
|
* Helper function to scan the mappings database for a controller with the specified GUID
|
||||||
*/
|
*/
|
||||||
static ControllerMapping_t *SDL_PrivateMatchControllerMappingForGUID(SDL_JoystickGUID guid, SDL_bool match_crc, SDL_bool match_version)
|
static ControllerMapping_t *SDL_PrivateMatchControllerMappingForGUID(SDL_JoystickGUID guid, SDL_bool match_version)
|
||||||
{
|
{
|
||||||
ControllerMapping_t *mapping;
|
ControllerMapping_t *mapping, *best_match = NULL;
|
||||||
Uint16 crc = 0;
|
Uint16 crc = 0;
|
||||||
|
|
||||||
SDL_AssertJoysticksLocked();
|
SDL_AssertJoysticksLocked();
|
||||||
|
|
||||||
if (match_crc) {
|
SDL_GetJoystickGUIDInfo(guid, NULL, NULL, NULL, &crc);
|
||||||
SDL_GetJoystickGUIDInfo(guid, NULL, NULL, NULL, &crc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Clear the CRC from the GUID for matching, the mappings never include it in the GUID */
|
/* Clear the CRC from the GUID for matching, the mappings never include it in the GUID */
|
||||||
SDL_SetJoystickGUIDCRC(&guid, 0);
|
SDL_SetJoystickGUIDCRC(&guid, 0);
|
||||||
@@ -719,20 +717,26 @@ static ControllerMapping_t *SDL_PrivateMatchControllerMappingForGUID(SDL_Joystic
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SDL_memcmp(&guid, &mapping_guid, sizeof(guid)) == 0) {
|
if (SDL_memcmp(&guid, &mapping_guid, sizeof(guid)) == 0) {
|
||||||
Uint16 mapping_crc = 0;
|
const char *crc_string = SDL_strstr(mapping->mapping, SDL_CONTROLLER_CRC_FIELD);
|
||||||
|
if (crc_string) {
|
||||||
|
Uint16 mapping_crc = (Uint16)SDL_strtol(crc_string + SDL_CONTROLLER_CRC_FIELD_SIZE, NULL, 16);
|
||||||
|
|
||||||
if (match_crc) {
|
if (mapping_crc != crc) {
|
||||||
const char *crc_string = SDL_strstr(mapping->mapping, SDL_CONTROLLER_CRC_FIELD);
|
/* This mapping specified a CRC and they don't match */
|
||||||
if (crc_string) {
|
continue;
|
||||||
mapping_crc = (Uint16)SDL_strtol(crc_string + SDL_CONTROLLER_CRC_FIELD_SIZE, NULL, 16);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (crc == mapping_crc) {
|
/* An exact match, including CRC */
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!best_match) {
|
||||||
|
best_match = mapping;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return best_match;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -741,19 +745,8 @@ static ControllerMapping_t *SDL_PrivateMatchControllerMappingForGUID(SDL_Joystic
|
|||||||
static ControllerMapping_t *SDL_PrivateGetControllerMappingForGUID(SDL_JoystickGUID guid, SDL_bool adding_mapping)
|
static ControllerMapping_t *SDL_PrivateGetControllerMappingForGUID(SDL_JoystickGUID guid, SDL_bool adding_mapping)
|
||||||
{
|
{
|
||||||
ControllerMapping_t *mapping;
|
ControllerMapping_t *mapping;
|
||||||
Uint16 vendor, product, crc;
|
|
||||||
|
|
||||||
SDL_GetJoystickGUIDInfo(guid, &vendor, &product, NULL, &crc);
|
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_TRUE);
|
||||||
if (crc) {
|
|
||||||
/* First check for exact CRC matching */
|
|
||||||
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_TRUE, SDL_TRUE);
|
|
||||||
if (mapping) {
|
|
||||||
return mapping;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now check for a mapping without CRC */
|
|
||||||
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_FALSE, SDL_TRUE);
|
|
||||||
if (mapping) {
|
if (mapping) {
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
@@ -767,14 +760,7 @@ static ControllerMapping_t *SDL_PrivateGetControllerMappingForGUID(SDL_JoystickG
|
|||||||
|
|
||||||
if (SDL_JoystickGUIDUsesVersion(guid)) {
|
if (SDL_JoystickGUIDUsesVersion(guid)) {
|
||||||
/* Try again, ignoring the version */
|
/* Try again, ignoring the version */
|
||||||
if (crc) {
|
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_FALSE);
|
||||||
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_TRUE, SDL_FALSE);
|
|
||||||
if (mapping) {
|
|
||||||
return mapping;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mapping = SDL_PrivateMatchControllerMappingForGUID(guid, SDL_FALSE, SDL_FALSE);
|
|
||||||
if (mapping) {
|
if (mapping) {
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
@@ -1391,9 +1377,6 @@ static ControllerMapping_t *SDL_PrivateGetControllerMappingForNameAndGUID(const
|
|||||||
}
|
}
|
||||||
#endif /* __LINUX__ */
|
#endif /* __LINUX__ */
|
||||||
|
|
||||||
if (!mapping) {
|
|
||||||
mapping = s_pDefaultMapping;
|
|
||||||
}
|
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1506,6 +1489,9 @@ static ControllerMapping_t *SDL_PrivateGetControllerMapping(int device_index)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mapping) {
|
||||||
|
mapping = s_pDefaultMapping;
|
||||||
|
}
|
||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2059,7 +2045,7 @@ SDL_bool SDL_IsGameControllerNameAndGUID(const char *name, SDL_JoystickGUID guid
|
|||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
{
|
{
|
||||||
if (SDL_PrivateGetControllerMappingForNameAndGUID(name, guid) != NULL) {
|
if (s_pDefaultMapping || SDL_PrivateGetControllerMappingForNameAndGUID(name, guid) != NULL) {
|
||||||
retval = SDL_TRUE;
|
retval = SDL_TRUE;
|
||||||
} else {
|
} else {
|
||||||
retval = SDL_FALSE;
|
retval = SDL_FALSE;
|
||||||
@@ -3259,10 +3245,11 @@ const char *SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController
|
|||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
return retval;
|
if (retval && *retval) {
|
||||||
#else
|
return retval;
|
||||||
return NULL;
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
|
const char *SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
|
||||||
@@ -3279,10 +3266,11 @@ const char *SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *g
|
|||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
return retval;
|
if (retval && *retval) {
|
||||||
#else
|
return retval;
|
||||||
return NULL;
|
}
|
||||||
#endif
|
#endif
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vi: set ts=4 sw=4 expandtab: */
|
/* vi: set ts=4 sw=4 expandtab: */
|
||||||
@@ -125,6 +125,7 @@ static const char *s_ControllerMappings[] = {
|
|||||||
"03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,",
|
"03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,",
|
||||||
"03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
"03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
||||||
"03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
|
"03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
|
||||||
|
"03000000790000000600000000000000,Defender Joystick Cobra R4,crc:c77a,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2~,righty:a3~,start:b9,x:b3,y:b0,",
|
||||||
"03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
"03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
||||||
"03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,",
|
"03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,",
|
||||||
"030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
@@ -303,6 +304,7 @@ static const char *s_ControllerMappings[] = {
|
|||||||
"030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
"03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,",
|
"03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,",
|
||||||
"03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
|
"03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
|
||||||
|
"03000000790000000600000000000000,SPEEDLINK STRIKE Gamepad,crc:5811,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
|
||||||
"03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
|
"03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
|
||||||
"03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,",
|
"03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,",
|
||||||
"03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
@@ -317,10 +319,12 @@ static const char *s_ControllerMappings[] = {
|
|||||||
"03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
"03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
||||||
"03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
"03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
|
||||||
"03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
|
"03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
|
||||||
|
"03000000790000000600000000000000,Sanwa Supply JY-P76USV,crc:20f0,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b2,y:b3,",
|
||||||
"0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
|
"0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
|
||||||
"030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
|
"030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
|
||||||
"030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
"030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
||||||
"03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
"03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
|
||||||
|
"030000004c0500006802000000000000,SplitFish Game Controller,crc:5628,a:b0,b:b16,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,leftshoulder:b17,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b10,",
|
||||||
"03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
|
"03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
|
||||||
"03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
|
"03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
|
||||||
"03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,",
|
"03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,",
|
||||||
@@ -769,6 +773,8 @@ static const char *s_ControllerMappings[] = {
|
|||||||
"03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,",
|
"03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,",
|
||||||
"03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
"03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
"03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
|
"03000000222c00001020000011010000,Qanba Drone 2 Arcade Joystick (PS5),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
|
"03000000222c00001220000011010000,Qanba Drone 2 Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
"03000000222c00000020000011010000,Qanba Drone Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,",
|
"03000000222c00000020000011010000,Qanba Drone Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,",
|
||||||
"03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
"03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
"03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
@@ -858,7 +864,6 @@ static const char *s_ControllerMappings[] = {
|
|||||||
"03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
"03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
"03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
"03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
|
||||||
"03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
|
"03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
|
||||||
"030000000d0f00000d00000000010000,hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftx:b4,lefty:b5,rightshoulder:b7,start:b9,x:b1,y:b2,",
|
|
||||||
"03000000830500006020000010010000,iBuffalo SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
|
"03000000830500006020000010010000,iBuffalo SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
|
||||||
"03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
|
"03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
|
||||||
"050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
"050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
|
||||||
|
|||||||
+62
-26
@@ -293,6 +293,7 @@ static Uint32 initial_flightstick_devices[] = {
|
|||||||
MAKE_VIDPID(0x046d, 0xc215), /* Logitech Extreme 3D */
|
MAKE_VIDPID(0x046d, 0xc215), /* Logitech Extreme 3D */
|
||||||
MAKE_VIDPID(0x231d, 0x0126), /* Gunfighter Mk.III ‘Space Combat Edition’ (right) */
|
MAKE_VIDPID(0x231d, 0x0126), /* Gunfighter Mk.III ‘Space Combat Edition’ (right) */
|
||||||
MAKE_VIDPID(0x231d, 0x0127), /* Gunfighter Mk.III ‘Space Combat Edition’ (left) */
|
MAKE_VIDPID(0x231d, 0x0127), /* Gunfighter Mk.III ‘Space Combat Edition’ (left) */
|
||||||
|
MAKE_VIDPID(0x362c, 0x0001), /* Yawman Arrow */
|
||||||
};
|
};
|
||||||
static SDL_vidpid_list flightstick_devices = {
|
static SDL_vidpid_list flightstick_devices = {
|
||||||
SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES, 0, 0, NULL,
|
SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES, 0, 0, NULL,
|
||||||
@@ -369,7 +370,10 @@ static Uint32 initial_wheel_devices[] = {
|
|||||||
MAKE_VIDPID(0x044f, 0xb65e), /* Thrustmaster T500RS */
|
MAKE_VIDPID(0x044f, 0xb65e), /* Thrustmaster T500RS */
|
||||||
MAKE_VIDPID(0x044f, 0xb664), /* Thrustmaster TX (initial mode) */
|
MAKE_VIDPID(0x044f, 0xb664), /* Thrustmaster TX (initial mode) */
|
||||||
MAKE_VIDPID(0x044f, 0xb669), /* Thrustmaster TX (active mode) */
|
MAKE_VIDPID(0x044f, 0xb669), /* Thrustmaster TX (active mode) */
|
||||||
|
MAKE_VIDPID(0x044f, 0xb691), /* Thrustmaster TS-XW (initial mode) */
|
||||||
|
MAKE_VIDPID(0x044f, 0xb692), /* Thrustmaster TS-XW (active mode) */
|
||||||
MAKE_VIDPID(0x0483, 0x0522), /* Simagic Wheelbase (including M10, Alpha Mini, Alpha, Alpha U) */
|
MAKE_VIDPID(0x0483, 0x0522), /* Simagic Wheelbase (including M10, Alpha Mini, Alpha, Alpha U) */
|
||||||
|
MAKE_VIDPID(0x0483, 0xa355), /* VRS DirectForce Pro Wheel Base */
|
||||||
MAKE_VIDPID(0x0eb7, 0x0001), /* Fanatec ClubSport Wheel Base V2 */
|
MAKE_VIDPID(0x0eb7, 0x0001), /* Fanatec ClubSport Wheel Base V2 */
|
||||||
MAKE_VIDPID(0x0eb7, 0x0004), /* Fanatec ClubSport Wheel Base V2.5 */
|
MAKE_VIDPID(0x0eb7, 0x0004), /* Fanatec ClubSport Wheel Base V2.5 */
|
||||||
MAKE_VIDPID(0x0eb7, 0x0005), /* Fanatec CSL Elite Wheel Base+ (PS4) */
|
MAKE_VIDPID(0x0eb7, 0x0005), /* Fanatec CSL Elite Wheel Base+ (PS4) */
|
||||||
@@ -381,10 +385,21 @@ static Uint32 initial_wheel_devices[] = {
|
|||||||
MAKE_VIDPID(0x0eb7, 0x038e), /* Fanatec ClubSport Wheel Base V1 */
|
MAKE_VIDPID(0x0eb7, 0x038e), /* Fanatec ClubSport Wheel Base V1 */
|
||||||
MAKE_VIDPID(0x0eb7, 0x0e03), /* Fanatec CSL Elite Wheel Base */
|
MAKE_VIDPID(0x0eb7, 0x0e03), /* Fanatec CSL Elite Wheel Base */
|
||||||
MAKE_VIDPID(0x11ff, 0x0511), /* DragonRise Inc. Wired Wheel (initial mode) (also known as PXN V900 (PS3), Superdrive SV-750, or a Genesis Seaborg 400) */
|
MAKE_VIDPID(0x11ff, 0x0511), /* DragonRise Inc. Wired Wheel (initial mode) (also known as PXN V900 (PS3), Superdrive SV-750, or a Genesis Seaborg 400) */
|
||||||
|
MAKE_VIDPID(0x1209, 0xffb0), /* Generic FFBoard OpenFFBoard universal forcefeedback wheel */
|
||||||
|
MAKE_VIDPID(0x16d0, 0x0d5a), /* Simucube 1 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x16d0, 0x0d5f), /* Simucube 2 Ultimate Wheelbase */
|
||||||
|
MAKE_VIDPID(0x16d0, 0x0d60), /* Simucube 2 Pro Wheelbase */
|
||||||
|
MAKE_VIDPID(0x16d0, 0x0d61), /* Simucube 2 Sport Wheelbase */
|
||||||
MAKE_VIDPID(0x2433, 0xf300), /* Asetek SimSports Invicta Wheelbase */
|
MAKE_VIDPID(0x2433, 0xf300), /* Asetek SimSports Invicta Wheelbase */
|
||||||
MAKE_VIDPID(0x2433, 0xf301), /* Asetek SimSports Forte Wheelbase */
|
MAKE_VIDPID(0x2433, 0xf301), /* Asetek SimSports Forte Wheelbase */
|
||||||
MAKE_VIDPID(0x2433, 0xf303), /* Asetek SimSports La Prima Wheelbase */
|
MAKE_VIDPID(0x2433, 0xf303), /* Asetek SimSports La Prima Wheelbase */
|
||||||
MAKE_VIDPID(0x2433, 0xf306), /* Asetek SimSports Tony Kannan Wheelbase */
|
MAKE_VIDPID(0x2433, 0xf306), /* Asetek SimSports Tony Kannan Wheelbase */
|
||||||
|
MAKE_VIDPID(0x3416, 0x0301), /* Cammus C5 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x346e, 0x0000), /* Moza R16/R21 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x346e, 0x0002), /* Moza R9 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x346e, 0x0004), /* Moza R5 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x346e, 0x0005), /* Moza R3 Wheelbase */
|
||||||
|
MAKE_VIDPID(0x346e, 0x0006), /* Moza R12 Wheelbase */
|
||||||
};
|
};
|
||||||
static SDL_vidpid_list wheel_devices = {
|
static SDL_vidpid_list wheel_devices = {
|
||||||
SDL_HINT_JOYSTICK_WHEEL_DEVICES, 0, 0, NULL,
|
SDL_HINT_JOYSTICK_WHEEL_DEVICES, 0, 0, NULL,
|
||||||
@@ -1312,13 +1327,15 @@ const char *SDL_JoystickName(SDL_Joystick *joystick)
|
|||||||
const SDL_SteamVirtualGamepadInfo *info;
|
const SDL_SteamVirtualGamepadInfo *info;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
{
|
||||||
if (info) {
|
|
||||||
retval = info->name;
|
|
||||||
} else {
|
|
||||||
CHECK_JOYSTICK_MAGIC(joystick, NULL);
|
CHECK_JOYSTICK_MAGIC(joystick, NULL);
|
||||||
|
|
||||||
retval = joystick->name;
|
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
||||||
|
if (info) {
|
||||||
|
retval = info->name;
|
||||||
|
} else {
|
||||||
|
retval = joystick->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
@@ -1395,9 +1412,13 @@ int SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint
|
|||||||
retval = 0;
|
retval = 0;
|
||||||
} else {
|
} else {
|
||||||
retval = joystick->driver->Rumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
retval = joystick->driver->Rumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
||||||
joystick->rumble_resend = SDL_GetTicks() + SDL_RUMBLE_RESEND_MS;
|
if (retval == 0) {
|
||||||
if (!joystick->rumble_resend) {
|
joystick->rumble_resend = SDL_GetTicks() + SDL_RUMBLE_RESEND_MS;
|
||||||
joystick->rumble_resend = 1;
|
if (joystick->rumble_resend == 0) {
|
||||||
|
joystick->rumble_resend = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
joystick->rumble_resend = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2160,12 +2181,14 @@ void SDL_JoystickUpdate(void)
|
|||||||
#endif /* SDL_JOYSTICK_HIDAPI */
|
#endif /* SDL_JOYSTICK_HIDAPI */
|
||||||
|
|
||||||
for (joystick = SDL_joysticks; joystick; joystick = joystick->next) {
|
for (joystick = SDL_joysticks; joystick; joystick = joystick->next) {
|
||||||
if (joystick->attached) {
|
if (!joystick->attached) {
|
||||||
joystick->driver->Update(joystick);
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (joystick->delayed_guide_button) {
|
joystick->driver->Update(joystick);
|
||||||
SDL_GameControllerHandleDelayedGuideButton(joystick);
|
|
||||||
}
|
if (joystick->delayed_guide_button) {
|
||||||
|
SDL_GameControllerHandleDelayedGuideButton(joystick);
|
||||||
}
|
}
|
||||||
|
|
||||||
now = SDL_GetTicks();
|
now = SDL_GetTicks();
|
||||||
@@ -2203,7 +2226,7 @@ void SDL_JoystickUpdate(void)
|
|||||||
int SDL_JoystickEventState(int state)
|
int SDL_JoystickEventState(int state)
|
||||||
{
|
{
|
||||||
#ifdef SDL_EVENTS_DISABLED
|
#ifdef SDL_EVENTS_DISABLED
|
||||||
return SDL_DISABLE;
|
return SDL_IGNORE;
|
||||||
#else
|
#else
|
||||||
const Uint32 event_list[] = {
|
const Uint32 event_list[] = {
|
||||||
SDL_JOYAXISMOTION, SDL_JOYBALLMOTION, SDL_JOYHATMOTION,
|
SDL_JOYAXISMOTION, SDL_JOYBALLMOTION, SDL_JOYHATMOTION,
|
||||||
@@ -2731,6 +2754,11 @@ SDL_bool SDL_IsJoystickXboxSeriesX(Uint16 vendor_id, Uint16 product_id)
|
|||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (vendor_id == USB_VENDOR_ASUS) {
|
||||||
|
if (product_id == USB_PRODUCT_ROG_RAIKIRI) {
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3101,13 +3129,17 @@ Uint16 SDL_JoystickGetVendor(SDL_Joystick *joystick)
|
|||||||
const SDL_SteamVirtualGamepadInfo *info;
|
const SDL_SteamVirtualGamepadInfo *info;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
{
|
||||||
if (info) {
|
CHECK_JOYSTICK_MAGIC(joystick, 0);
|
||||||
vendor = info->vendor_id;
|
|
||||||
} else {
|
|
||||||
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
|
|
||||||
|
|
||||||
SDL_GetJoystickGUIDInfo(guid, &vendor, NULL, NULL, NULL);
|
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
||||||
|
if (info) {
|
||||||
|
vendor = info->vendor_id;
|
||||||
|
} else {
|
||||||
|
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
|
||||||
|
|
||||||
|
SDL_GetJoystickGUIDInfo(guid, &vendor, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
@@ -3120,13 +3152,17 @@ Uint16 SDL_JoystickGetProduct(SDL_Joystick *joystick)
|
|||||||
const SDL_SteamVirtualGamepadInfo *info;
|
const SDL_SteamVirtualGamepadInfo *info;
|
||||||
|
|
||||||
SDL_LockJoysticks();
|
SDL_LockJoysticks();
|
||||||
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
{
|
||||||
if (info) {
|
CHECK_JOYSTICK_MAGIC(joystick, 0);
|
||||||
product = info->product_id;
|
|
||||||
} else {
|
|
||||||
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
|
|
||||||
|
|
||||||
SDL_GetJoystickGUIDInfo(guid, NULL, &product, NULL, NULL);
|
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
|
||||||
|
if (info) {
|
||||||
|
product = info->product_id;
|
||||||
|
} else {
|
||||||
|
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
|
||||||
|
|
||||||
|
SDL_GetJoystickGUIDInfo(guid, NULL, &product, NULL, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SDL_UnlockJoysticks();
|
SDL_UnlockJoysticks();
|
||||||
|
|
||||||
|
|||||||
@@ -221,6 +221,7 @@ SDL_bool SDL_UpdateSteamVirtualGamepadInfo(void)
|
|||||||
if (slot >= 0) {
|
if (slot >= 0) {
|
||||||
AddVirtualGamepadInfo(slot, &info);
|
AddVirtualGamepadInfo(slot, &info);
|
||||||
}
|
}
|
||||||
|
SDL_free(info.name);
|
||||||
SDL_free(data);
|
SDL_free(data);
|
||||||
|
|
||||||
SDL_steam_virtual_gamepad_info_file_mtime = mtime;
|
SDL_steam_virtual_gamepad_info_file_mtime = mtime;
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ static const ControllerDescription_t arrControllers[] = {
|
|||||||
{ MAKE_CONTROLLER_ID( 0x0079, 0x1844 ), k_eControllerType_PS3Controller, NULL }, // From SDL
|
{ MAKE_CONTROLLER_ID( 0x0079, 0x1844 ), k_eControllerType_PS3Controller, NULL }, // From SDL
|
||||||
{ MAKE_CONTROLLER_ID( 0x044f, 0xb315 ), k_eControllerType_PS3Controller, NULL }, // Firestorm Dual Analog 3
|
{ MAKE_CONTROLLER_ID( 0x044f, 0xb315 ), k_eControllerType_PS3Controller, NULL }, // Firestorm Dual Analog 3
|
||||||
{ MAKE_CONTROLLER_ID( 0x044f, 0xd007 ), k_eControllerType_PS3Controller, NULL }, // Thrustmaster wireless 3-1
|
{ MAKE_CONTROLLER_ID( 0x044f, 0xd007 ), k_eControllerType_PS3Controller, NULL }, // Thrustmaster wireless 3-1
|
||||||
|
{ MAKE_CONTROLLER_ID( 0x046d, 0xcad1 ), k_eControllerType_PS3Controller, NULL }, // Logitech Chillstream
|
||||||
//{ MAKE_CONTROLLER_ID( 0x046d, 0xc24f ), k_eControllerType_PS3Controller, NULL }, // Logitech G29 (PS3)
|
//{ MAKE_CONTROLLER_ID( 0x046d, 0xc24f ), k_eControllerType_PS3Controller, NULL }, // Logitech G29 (PS3)
|
||||||
{ MAKE_CONTROLLER_ID( 0x054c, 0x0268 ), k_eControllerType_PS3Controller, NULL }, // Sony PS3 Controller
|
{ MAKE_CONTROLLER_ID( 0x054c, 0x0268 ), k_eControllerType_PS3Controller, NULL }, // Sony PS3 Controller
|
||||||
{ MAKE_CONTROLLER_ID( 0x056e, 0x200f ), k_eControllerType_PS3Controller, NULL }, // From SDL
|
{ MAKE_CONTROLLER_ID( 0x056e, 0x200f ), k_eControllerType_PS3Controller, NULL }, // From SDL
|
||||||
@@ -157,6 +158,7 @@ static const ControllerDescription_t arrControllers[] = {
|
|||||||
{ MAKE_CONTROLLER_ID( 0x0f0d, 0x0184 ), k_eControllerType_PS5Controller, NULL }, // Hori Fighting Stick α
|
{ MAKE_CONTROLLER_ID( 0x0f0d, 0x0184 ), k_eControllerType_PS5Controller, NULL }, // Hori Fighting Stick α
|
||||||
{ MAKE_CONTROLLER_ID( 0x1532, 0x100b ), k_eControllerType_PS5Controller, NULL }, // Razer Wolverine V2 Pro (Wired)
|
{ MAKE_CONTROLLER_ID( 0x1532, 0x100b ), k_eControllerType_PS5Controller, NULL }, // Razer Wolverine V2 Pro (Wired)
|
||||||
{ MAKE_CONTROLLER_ID( 0x1532, 0x100c ), k_eControllerType_PS5Controller, NULL }, // Razer Wolverine V2 Pro (Wireless)
|
{ MAKE_CONTROLLER_ID( 0x1532, 0x100c ), k_eControllerType_PS5Controller, NULL }, // Razer Wolverine V2 Pro (Wireless)
|
||||||
|
{ MAKE_CONTROLLER_ID( 0x1532, 0x1012 ), k_eControllerType_PS5Controller, NULL }, // Razer Kitsune
|
||||||
{ MAKE_CONTROLLER_ID( 0x3285, 0x0d18 ), k_eControllerType_PS5Controller, NULL }, // NACON Revolution 5 Pro (PS5 mode with dongle)
|
{ MAKE_CONTROLLER_ID( 0x3285, 0x0d18 ), k_eControllerType_PS5Controller, NULL }, // NACON Revolution 5 Pro (PS5 mode with dongle)
|
||||||
{ MAKE_CONTROLLER_ID( 0x3285, 0x0d19 ), k_eControllerType_PS5Controller, NULL }, // NACON Revolution 5 Pro (PS5 mode wired)
|
{ MAKE_CONTROLLER_ID( 0x3285, 0x0d19 ), k_eControllerType_PS5Controller, NULL }, // NACON Revolution 5 Pro (PS5 mode wired)
|
||||||
{ MAKE_CONTROLLER_ID( 0x358a, 0x0104 ), k_eControllerType_PS5Controller, NULL }, // Backbone One PlayStation Edition for iOS
|
{ MAKE_CONTROLLER_ID( 0x358a, 0x0104 ), k_eControllerType_PS5Controller, NULL }, // Backbone One PlayStation Edition for iOS
|
||||||
@@ -593,7 +595,7 @@ static const ControllerDescription_t arrControllers[] = {
|
|||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1102 ), k_eControllerType_SteamController, NULL }, // Valve wired Steam Controller (D0G)
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1102 ), k_eControllerType_SteamController, NULL }, // Valve wired Steam Controller (D0G)
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1105 ), k_eControllerType_SteamController, NULL }, // Valve Bluetooth Steam Controller (D0G)
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1105 ), k_eControllerType_SteamController, NULL }, // Valve Bluetooth Steam Controller (D0G)
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1106 ), k_eControllerType_SteamController, NULL }, // Valve Bluetooth Steam Controller (D0G)
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1106 ), k_eControllerType_SteamController, NULL }, // Valve Bluetooth Steam Controller (D0G)
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x11ff ), k_eControllerType_UnknownNonSteamController, "Steam Virtual Gamepad" }, // Steam virtual gamepad
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x11ff ), k_eControllerType_UnknownNonSteamController, NULL }, // Steam Virtual Gamepad
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1142 ), k_eControllerType_SteamController, NULL }, // Valve wireless Steam Controller
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1142 ), k_eControllerType_SteamController, NULL }, // Valve wireless Steam Controller
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1201 ), k_eControllerType_SteamControllerV2, NULL }, // Valve wired Steam Controller (HEADCRAB)
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1201 ), k_eControllerType_SteamControllerV2, NULL }, // Valve wired Steam Controller (HEADCRAB)
|
||||||
{ MAKE_CONTROLLER_ID( 0x28de, 0x1202 ), k_eControllerType_SteamControllerV2, NULL }, // Valve Bluetooth Steam Controller (HEADCRAB)
|
{ MAKE_CONTROLLER_ID( 0x28de, 0x1202 ), k_eControllerType_SteamControllerV2, NULL }, // Valve Bluetooth Steam Controller (HEADCRAB)
|
||||||
|
|||||||
@@ -584,7 +584,13 @@ static SDL_bool HIDAPI_DriverPS3ThirdParty_IsSupportedDevice(SDL_HIDAPI_Device *
|
|||||||
Uint8 data[USB_PACKET_LENGTH];
|
Uint8 data[USB_PACKET_LENGTH];
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
if (HIDAPI_SupportsPlaystationDetection(vendor_id, product_id)) {
|
if (vendor_id == USB_VENDOR_LOGITECH &&
|
||||||
|
product_id == USB_PRODUCT_LOGITECH_CHILLSTREAM) {
|
||||||
|
return SDL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((type == SDL_CONTROLLER_TYPE_PS3 && vendor_id != USB_VENDOR_SONY) ||
|
||||||
|
HIDAPI_SupportsPlaystationDetection(vendor_id, product_id)) {
|
||||||
if (device && device->dev) {
|
if (device && device->dev) {
|
||||||
size = ReadFeatureReport(device->dev, 0x03, data, sizeof(data));
|
size = ReadFeatureReport(device->dev, 0x03, data, sizeof(data));
|
||||||
if (size == 8 && data[2] == 0x26) {
|
if (size == 8 && data[2] == 0x26) {
|
||||||
@@ -768,7 +774,7 @@ static void HIDAPI_DriverPS3ThirdParty_HandleStatePacket18(SDL_Joystick *joystic
|
|||||||
0, /* SDL_GAMEPAD_BUTTON_LEFT_STICK */
|
0, /* SDL_GAMEPAD_BUTTON_LEFT_STICK */
|
||||||
0, /* SDL_GAMEPAD_BUTTON_RIGHT_STICK */
|
0, /* SDL_GAMEPAD_BUTTON_RIGHT_STICK */
|
||||||
14, /* SDL_GAMEPAD_BUTTON_LEFT_SHOULDER */
|
14, /* SDL_GAMEPAD_BUTTON_LEFT_SHOULDER */
|
||||||
16, /* SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER */
|
15, /* SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER */
|
||||||
8, /* SDL_GAMEPAD_BUTTON_DPAD_UP */
|
8, /* SDL_GAMEPAD_BUTTON_DPAD_UP */
|
||||||
9, /* SDL_GAMEPAD_BUTTON_DPAD_DOWN */
|
9, /* SDL_GAMEPAD_BUTTON_DPAD_DOWN */
|
||||||
7, /* SDL_GAMEPAD_BUTTON_DPAD_LEFT */
|
7, /* SDL_GAMEPAD_BUTTON_DPAD_LEFT */
|
||||||
@@ -813,48 +819,56 @@ static void HIDAPI_DriverPS3ThirdParty_HandleStatePacket19(SDL_Joystick *joystic
|
|||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_GUIDE, (data[1] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_GUIDE, (data[1] & 0x10) ? SDL_PRESSED : SDL_RELEASED);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->last_state[2] != data[2]) {
|
if (ctx->device->vendor_id == USB_VENDOR_SAITEK && ctx->device->product_id == USB_PRODUCT_SAITEK_CYBORG_V3) {
|
||||||
SDL_bool dpad_up = SDL_FALSE;
|
/* Cyborg V.3 Rumble Pad doesn't set the dpad bits as expected, so use the axes instead */
|
||||||
SDL_bool dpad_down = SDL_FALSE;
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_DOWN, data[10] ? SDL_PRESSED : SDL_RELEASED);
|
||||||
SDL_bool dpad_left = SDL_FALSE;
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_UP, data[9] ? SDL_PRESSED : SDL_RELEASED);
|
||||||
SDL_bool dpad_right = SDL_FALSE;
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_RIGHT, data[7] ? SDL_PRESSED : SDL_RELEASED);
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_LEFT, data[8] ? SDL_PRESSED : SDL_RELEASED);
|
||||||
|
} else {
|
||||||
|
if (ctx->last_state[2] != data[2]) {
|
||||||
|
SDL_bool dpad_up = SDL_FALSE;
|
||||||
|
SDL_bool dpad_down = SDL_FALSE;
|
||||||
|
SDL_bool dpad_left = SDL_FALSE;
|
||||||
|
SDL_bool dpad_right = SDL_FALSE;
|
||||||
|
|
||||||
switch (data[2] & 0x0f) {
|
switch (data[2] & 0x0f) {
|
||||||
case 0:
|
case 0:
|
||||||
dpad_up = SDL_TRUE;
|
dpad_up = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
dpad_up = SDL_TRUE;
|
dpad_up = SDL_TRUE;
|
||||||
dpad_right = SDL_TRUE;
|
dpad_right = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
dpad_right = SDL_TRUE;
|
dpad_right = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
dpad_right = SDL_TRUE;
|
dpad_right = SDL_TRUE;
|
||||||
dpad_down = SDL_TRUE;
|
dpad_down = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
dpad_down = SDL_TRUE;
|
dpad_down = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
dpad_left = SDL_TRUE;
|
dpad_left = SDL_TRUE;
|
||||||
dpad_down = SDL_TRUE;
|
dpad_down = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
dpad_left = SDL_TRUE;
|
dpad_left = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
dpad_up = SDL_TRUE;
|
dpad_up = SDL_TRUE;
|
||||||
dpad_left = SDL_TRUE;
|
dpad_left = SDL_TRUE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_DOWN, dpad_down);
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_UP, dpad_up);
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_RIGHT, dpad_right);
|
||||||
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_LEFT, dpad_left);
|
||||||
}
|
}
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_DOWN, dpad_down);
|
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_UP, dpad_up);
|
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_RIGHT, dpad_right);
|
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_DPAD_LEFT, dpad_left);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
axis = ((int)data[17] * 257) - 32768;
|
axis = ((int)data[17] * 257) - 32768;
|
||||||
|
|||||||
@@ -499,6 +499,12 @@ static SDL_bool HIDAPI_DriverPS5_InitDevice(SDL_HIDAPI_Device *device)
|
|||||||
ctx->sensors_supported = SDL_TRUE;
|
ctx->sensors_supported = SDL_TRUE;
|
||||||
ctx->touchpad_supported = SDL_TRUE;
|
ctx->touchpad_supported = SDL_TRUE;
|
||||||
ctx->use_alternate_report = SDL_TRUE;
|
ctx->use_alternate_report = SDL_TRUE;
|
||||||
|
} else if (device->vendor_id == USB_VENDOR_RAZER &&
|
||||||
|
device->product_id == USB_PRODUCT_RAZER_KITSUNE) {
|
||||||
|
/* The Razer Kitsune doesn't respond to the detection protocol, but has a touchpad */
|
||||||
|
joystick_type = SDL_JOYSTICK_TYPE_ARCADE_STICK;
|
||||||
|
ctx->touchpad_supported = SDL_TRUE;
|
||||||
|
ctx->use_alternate_report = SDL_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ctx->effects_supported = (ctx->lightbar_supported || ctx->vibration_supported || ctx->playerled_supported);
|
ctx->effects_supported = (ctx->lightbar_supported || ctx->vibration_supported || ctx->playerled_supported);
|
||||||
|
|||||||
@@ -134,119 +134,12 @@ static SDL_bool FeedDeckLizardWatchdog(SDL_hid_device *dev)
|
|||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************************/
|
static void HIDAPI_DriverSteamDeck_HandleState(SDL_HIDAPI_Device *device,
|
||||||
|
SDL_Joystick *joystick,
|
||||||
static void HIDAPI_DriverSteamDeck_RegisterHints(SDL_HintCallback callback, void *userdata)
|
ValveInReport_t *pInReport)
|
||||||
{
|
{
|
||||||
SDL_AddHintCallback(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK, callback, userdata);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void HIDAPI_DriverSteamDeck_UnregisterHints(SDL_HintCallback callback, void *userdata)
|
|
||||||
{
|
|
||||||
SDL_DelHintCallback(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK, callback, userdata);
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_bool HIDAPI_DriverSteamDeck_IsEnabled(void)
|
|
||||||
{
|
|
||||||
return SDL_GetHintBoolean(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK,
|
|
||||||
SDL_GetHintBoolean(SDL_HINT_JOYSTICK_HIDAPI, SDL_HIDAPI_DEFAULT));
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_bool HIDAPI_DriverSteamDeck_IsSupportedDevice(
|
|
||||||
SDL_HIDAPI_Device *device,
|
|
||||||
const char *name,
|
|
||||||
SDL_GameControllerType type,
|
|
||||||
Uint16 vendor_id,
|
|
||||||
Uint16 product_id,
|
|
||||||
Uint16 version,
|
|
||||||
int interface_number,
|
|
||||||
int interface_class,
|
|
||||||
int interface_subclass,
|
|
||||||
int interface_protocol)
|
|
||||||
{
|
|
||||||
return SDL_IsJoystickSteamDeck(vendor_id, product_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_bool HIDAPI_DriverSteamDeck_InitDevice(SDL_HIDAPI_Device *device)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
Uint8 data[64];
|
|
||||||
SDL_DriverSteamDeck_Context *ctx;
|
|
||||||
|
|
||||||
ctx = (SDL_DriverSteamDeck_Context *)SDL_calloc(1, sizeof(*ctx));
|
|
||||||
if (ctx == NULL) {
|
|
||||||
SDL_OutOfMemory();
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Always 1kHz according to USB descriptor
|
|
||||||
ctx->update_rate_us = 1000;
|
|
||||||
|
|
||||||
device->context = ctx;
|
|
||||||
|
|
||||||
// Read a report to see if this is the correct endpoint.
|
|
||||||
// Mouse, Keyboard and Controller have the same VID/PID but
|
|
||||||
// only the controller hidraw device receives hid reports.
|
|
||||||
size = SDL_hid_read_timeout(device->dev, data, sizeof(data), 16);
|
|
||||||
if (size == 0)
|
|
||||||
return SDL_FALSE;
|
|
||||||
|
|
||||||
if (!DisableDeckLizardMode(device->dev))
|
|
||||||
return SDL_FALSE;
|
|
||||||
|
|
||||||
HIDAPI_SetDeviceName(device, "Steam Deck");
|
|
||||||
|
|
||||||
return HIDAPI_JoystickConnected(device, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int HIDAPI_DriverSteamDeck_GetDevicePlayerIndex(SDL_HIDAPI_Device *device, SDL_JoystickID instance_id)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void HIDAPI_DriverSteamDeck_SetDevicePlayerIndex(SDL_HIDAPI_Device *device, SDL_JoystickID instance_id, int player_index)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static SDL_bool HIDAPI_DriverSteamDeck_UpdateDevice(SDL_HIDAPI_Device *device)
|
|
||||||
{
|
|
||||||
SDL_DriverSteamDeck_Context *ctx = (SDL_DriverSteamDeck_Context *)device->context;
|
|
||||||
SDL_Joystick *joystick = NULL;
|
|
||||||
int r;
|
|
||||||
uint8_t data[64];
|
|
||||||
float values[3];
|
float values[3];
|
||||||
ValveInReport_t *pInReport = (ValveInReport_t *)data;
|
SDL_DriverSteamDeck_Context *ctx = (SDL_DriverSteamDeck_Context *)device->context;
|
||||||
|
|
||||||
if (device->num_joysticks > 0) {
|
|
||||||
joystick = SDL_JoystickFromInstanceID(device->joysticks[0]);
|
|
||||||
if (joystick == NULL) {
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->watchdog_counter++ > 200) {
|
|
||||||
ctx->watchdog_counter = 0;
|
|
||||||
if (!FeedDeckLizardWatchdog(device->dev))
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_memset(data, 0, sizeof(data));
|
|
||||||
r = SDL_hid_read(device->dev, data, sizeof(data));
|
|
||||||
if (r == 0) {
|
|
||||||
return SDL_FALSE;
|
|
||||||
} else if (r <= 0) {
|
|
||||||
/* Failed to read from controller */
|
|
||||||
HIDAPI_JoystickDisconnected(device, device->joysticks[0]);
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(r == 64 && pInReport->header.unReportVersion == k_ValveInReportMsgVersion && pInReport->header.ucType == ID_CONTROLLER_DECK_STATE && pInReport->header.ucLength == 64)) {
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uint64 timestamp = SDL_GetTicksNS();
|
|
||||||
|
|
||||||
if (pInReport->payload.deckState.ulButtons != ctx->last_button_state) {
|
if (pInReport->payload.deckState.ulButtons != ctx->last_button_state) {
|
||||||
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_A,
|
SDL_PrivateJoystickButton(joystick, SDL_CONTROLLER_BUTTON_A,
|
||||||
@@ -322,6 +215,121 @@ static SDL_bool HIDAPI_DriverSteamDeck_UpdateDevice(SDL_HIDAPI_Device *device)
|
|||||||
values[1] = (pInReport->payload.deckState.sAccelZ / 32768.0f) * 2.0f * SDL_STANDARD_GRAVITY;
|
values[1] = (pInReport->payload.deckState.sAccelZ / 32768.0f) * 2.0f * SDL_STANDARD_GRAVITY;
|
||||||
values[2] = (-pInReport->payload.deckState.sAccelY / 32768.0f) * 2.0f * SDL_STANDARD_GRAVITY;
|
values[2] = (-pInReport->payload.deckState.sAccelY / 32768.0f) * 2.0f * SDL_STANDARD_GRAVITY;
|
||||||
SDL_PrivateJoystickSensor(joystick, SDL_SENSOR_ACCEL, ctx->sensor_timestamp_us, values, 3);
|
SDL_PrivateJoystickSensor(joystick, SDL_SENSOR_ACCEL, ctx->sensor_timestamp_us, values, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************************************/
|
||||||
|
|
||||||
|
static void HIDAPI_DriverSteamDeck_RegisterHints(SDL_HintCallback callback, void *userdata)
|
||||||
|
{
|
||||||
|
SDL_AddHintCallback(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK, callback, userdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HIDAPI_DriverSteamDeck_UnregisterHints(SDL_HintCallback callback, void *userdata)
|
||||||
|
{
|
||||||
|
SDL_DelHintCallback(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK, callback, userdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool HIDAPI_DriverSteamDeck_IsEnabled(void)
|
||||||
|
{
|
||||||
|
return SDL_GetHintBoolean(SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK,
|
||||||
|
SDL_GetHintBoolean(SDL_HINT_JOYSTICK_HIDAPI, SDL_HIDAPI_DEFAULT));
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool HIDAPI_DriverSteamDeck_IsSupportedDevice(
|
||||||
|
SDL_HIDAPI_Device *device,
|
||||||
|
const char *name,
|
||||||
|
SDL_GameControllerType type,
|
||||||
|
Uint16 vendor_id,
|
||||||
|
Uint16 product_id,
|
||||||
|
Uint16 version,
|
||||||
|
int interface_number,
|
||||||
|
int interface_class,
|
||||||
|
int interface_subclass,
|
||||||
|
int interface_protocol)
|
||||||
|
{
|
||||||
|
return SDL_IsJoystickSteamDeck(vendor_id, product_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool HIDAPI_DriverSteamDeck_InitDevice(SDL_HIDAPI_Device *device)
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
Uint8 data[64];
|
||||||
|
SDL_DriverSteamDeck_Context *ctx;
|
||||||
|
|
||||||
|
ctx = (SDL_DriverSteamDeck_Context *)SDL_calloc(1, sizeof(*ctx));
|
||||||
|
if (ctx == NULL) {
|
||||||
|
SDL_OutOfMemory();
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always 1kHz according to USB descriptor, but actually about 4 ms.
|
||||||
|
ctx->update_rate_us = 4000;
|
||||||
|
|
||||||
|
device->context = ctx;
|
||||||
|
|
||||||
|
// Read a report to see if this is the correct endpoint.
|
||||||
|
// Mouse, Keyboard and Controller have the same VID/PID but
|
||||||
|
// only the controller hidraw device receives hid reports.
|
||||||
|
size = SDL_hid_read_timeout(device->dev, data, sizeof(data), 16);
|
||||||
|
if (size == 0)
|
||||||
|
return SDL_FALSE;
|
||||||
|
|
||||||
|
if (!DisableDeckLizardMode(device->dev))
|
||||||
|
return SDL_FALSE;
|
||||||
|
|
||||||
|
HIDAPI_SetDeviceName(device, "Steam Deck");
|
||||||
|
|
||||||
|
return HIDAPI_JoystickConnected(device, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int HIDAPI_DriverSteamDeck_GetDevicePlayerIndex(SDL_HIDAPI_Device *device, SDL_JoystickID instance_id)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HIDAPI_DriverSteamDeck_SetDevicePlayerIndex(SDL_HIDAPI_Device *device, SDL_JoystickID instance_id, int player_index)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDL_bool HIDAPI_DriverSteamDeck_UpdateDevice(SDL_HIDAPI_Device *device)
|
||||||
|
{
|
||||||
|
SDL_DriverSteamDeck_Context *ctx = (SDL_DriverSteamDeck_Context *)device->context;
|
||||||
|
SDL_Joystick *joystick = NULL;
|
||||||
|
int r;
|
||||||
|
uint8_t data[64];
|
||||||
|
ValveInReport_t *pInReport = (ValveInReport_t *)data;
|
||||||
|
|
||||||
|
if (device->num_joysticks > 0) {
|
||||||
|
joystick = SDL_JoystickFromInstanceID(device->joysticks[0]);
|
||||||
|
if (joystick == NULL) {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctx->watchdog_counter++ > 200) {
|
||||||
|
ctx->watchdog_counter = 0;
|
||||||
|
if (!FeedDeckLizardWatchdog(device->dev))
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_memset(data, 0, sizeof(data));
|
||||||
|
|
||||||
|
do {
|
||||||
|
r = SDL_hid_read(device->dev, data, sizeof(data));
|
||||||
|
|
||||||
|
if (r < 0) {
|
||||||
|
/* Failed to read from controller */
|
||||||
|
HIDAPI_JoystickDisconnected(device, device->joysticks[0]);
|
||||||
|
return SDL_FALSE;
|
||||||
|
} else if (r == 64 &&
|
||||||
|
pInReport->header.unReportVersion == k_ValveInReportMsgVersion &&
|
||||||
|
pInReport->header.ucType == ID_CONTROLLER_DECK_STATE &&
|
||||||
|
pInReport->header.ucLength == 64) {
|
||||||
|
HIDAPI_DriverSteamDeck_HandleState(device, joystick, pInReport);
|
||||||
|
}
|
||||||
|
} while (r > 0);
|
||||||
|
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -332,12 +332,28 @@ typedef struct
|
|||||||
|
|
||||||
static int ReadInput(SDL_DriverSwitch_Context *ctx)
|
static int ReadInput(SDL_DriverSwitch_Context *ctx)
|
||||||
{
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
/* Make sure we don't try to read at the same time a write is happening */
|
/* Make sure we don't try to read at the same time a write is happening */
|
||||||
if (SDL_AtomicGet(&ctx->device->rumble_pending) > 0) {
|
if (SDL_AtomicGet(&ctx->device->rumble_pending) > 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SDL_hid_read_timeout(ctx->device->dev, ctx->m_rgucReadBuffer, sizeof(ctx->m_rgucReadBuffer), 0);
|
result = SDL_hid_read_timeout(ctx->device->dev, ctx->m_rgucReadBuffer, sizeof(ctx->m_rgucReadBuffer), 0);
|
||||||
|
|
||||||
|
/* See if we can guess the initial input mode */
|
||||||
|
if (result > 0 && !ctx->m_bInputOnly && !ctx->m_nInitialInputMode) {
|
||||||
|
switch (ctx->m_rgucReadBuffer[0]) {
|
||||||
|
case k_eSwitchInputReportIDs_FullControllerState:
|
||||||
|
case k_eSwitchInputReportIDs_FullControllerAndMcuState:
|
||||||
|
case k_eSwitchInputReportIDs_SimpleControllerState:
|
||||||
|
ctx->m_nInitialInputMode = ctx->m_rgucReadBuffer[0];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int WriteOutput(SDL_DriverSwitch_Context *ctx, const Uint8 *data, int size)
|
static int WriteOutput(SDL_DriverSwitch_Context *ctx, const Uint8 *data, int size)
|
||||||
@@ -727,14 +743,12 @@ static void SDLCALL SDL_PlayerLEDHintChanged(void *userdata, const char *name, c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Uint8 GetInitialInputMode(SDL_DriverSwitch_Context *ctx)
|
static void GetInitialInputMode(SDL_DriverSwitch_Context *ctx)
|
||||||
{
|
{
|
||||||
Uint8 input_mode = 0;
|
if (!ctx->m_nInitialInputMode) {
|
||||||
|
/* This will set the initial input mode if it can */
|
||||||
if (ReadInput(ctx) > 0) {
|
ReadInput(ctx);
|
||||||
input_mode = ctx->m_rgucReadBuffer[0];
|
|
||||||
}
|
}
|
||||||
return input_mode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Uint8 GetDefaultInputMode(SDL_DriverSwitch_Context *ctx)
|
static Uint8 GetDefaultInputMode(SDL_DriverSwitch_Context *ctx)
|
||||||
@@ -758,7 +772,18 @@ static Uint8 GetDefaultInputMode(SDL_DriverSwitch_Context *ctx)
|
|||||||
* battery level over Bluetooth anyway.
|
* battery level over Bluetooth anyway.
|
||||||
*/
|
*/
|
||||||
if (ctx->device->vendor_id == USB_VENDOR_NINTENDO) {
|
if (ctx->device->vendor_id == USB_VENDOR_NINTENDO) {
|
||||||
|
/* However, switching to full controller state breaks DirectInput, so let's not do that */
|
||||||
|
#if 0
|
||||||
input_mode = k_eSwitchInputReportIDs_FullControllerState;
|
input_mode = k_eSwitchInputReportIDs_FullControllerState;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* However, Joy-Con controllers switch their thumbsticks into D-pad mode in simple mode,
|
||||||
|
* so let's enable full controller state for them.
|
||||||
|
*/
|
||||||
|
if (ctx->device->product_id == USB_PRODUCT_NINTENDO_SWITCH_JOYCON_LEFT ||
|
||||||
|
ctx->device->product_id == USB_PRODUCT_NINTENDO_SWITCH_JOYCON_RIGHT) {
|
||||||
|
input_mode = k_eSwitchInputReportIDs_FullControllerState;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return input_mode;
|
return input_mode;
|
||||||
}
|
}
|
||||||
@@ -1292,6 +1317,27 @@ static void UpdateDeviceIdentity(SDL_HIDAPI_Device *device)
|
|||||||
break;
|
break;
|
||||||
case k_eSwitchDeviceInfoControllerType_Unknown:
|
case k_eSwitchDeviceInfoControllerType_Unknown:
|
||||||
/* We couldn't read the device info for this controller, might not be fully compliant */
|
/* We couldn't read the device info for this controller, might not be fully compliant */
|
||||||
|
if (device->vendor_id == USB_VENDOR_NINTENDO) {
|
||||||
|
switch (device->product_id) {
|
||||||
|
case USB_PRODUCT_NINTENDO_SWITCH_JOYCON_LEFT:
|
||||||
|
ctx->m_eControllerType = k_eSwitchDeviceInfoControllerType_JoyConLeft;
|
||||||
|
HIDAPI_SetDeviceName(device, "Nintendo Switch Joy-Con (L)");
|
||||||
|
device->type = SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT;
|
||||||
|
break;
|
||||||
|
case USB_PRODUCT_NINTENDO_SWITCH_JOYCON_RIGHT:
|
||||||
|
ctx->m_eControllerType = k_eSwitchDeviceInfoControllerType_JoyConRight;
|
||||||
|
HIDAPI_SetDeviceName(device, "Nintendo Switch Joy-Con (R)");
|
||||||
|
device->type = SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT;
|
||||||
|
break;
|
||||||
|
case USB_PRODUCT_NINTENDO_SWITCH_PRO:
|
||||||
|
ctx->m_eControllerType = k_eSwitchDeviceInfoControllerType_ProController;
|
||||||
|
HIDAPI_SetDeviceName(device, "Nintendo Switch Pro Controller");
|
||||||
|
device->type = SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
device->type = SDL_CONTROLLER_TYPE_UNKNOWN;
|
device->type = SDL_CONTROLLER_TYPE_UNKNOWN;
|
||||||
@@ -1380,7 +1426,7 @@ static SDL_bool HIDAPI_DriverSwitch_OpenJoystick(SDL_HIDAPI_Device *device, SDL_
|
|||||||
ctx->m_bSyncWrite = SDL_TRUE;
|
ctx->m_bSyncWrite = SDL_TRUE;
|
||||||
|
|
||||||
if (!ctx->m_bInputOnly) {
|
if (!ctx->m_bInputOnly) {
|
||||||
ctx->m_nInitialInputMode = GetInitialInputMode(ctx);
|
GetInitialInputMode(ctx);
|
||||||
ctx->m_nCurrentInputMode = ctx->m_nInitialInputMode;
|
ctx->m_nCurrentInputMode = ctx->m_nInitialInputMode;
|
||||||
|
|
||||||
/* Initialize rumble data */
|
/* Initialize rumble data */
|
||||||
@@ -2211,6 +2257,10 @@ static SDL_bool HIDAPI_DriverSwitch_UpdateDevice(SDL_HIDAPI_Device *device)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->m_rgucReadBuffer[0] == k_eSwitchInputReportIDs_SubcommandReply) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (ctx->m_bInputOnly) {
|
if (ctx->m_bInputOnly) {
|
||||||
HandleInputOnlyControllerState(joystick, ctx, (SwitchInputOnlyControllerStatePacket_t *)&ctx->m_rgucReadBuffer[0]);
|
HandleInputOnlyControllerState(joystick, ctx, (SwitchInputOnlyControllerStatePacket_t *)&ctx->m_rgucReadBuffer[0]);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -157,17 +157,19 @@ SDL_bool HIDAPI_SupportsPlaystationDetection(Uint16 vendor, Uint16 product)
|
|||||||
case USB_VENDOR_HORI:
|
case USB_VENDOR_HORI:
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
case USB_VENDOR_LOGITECH:
|
case USB_VENDOR_LOGITECH:
|
||||||
/* Most Logitech devices are fine with this, but there are a few exceptions */
|
/* Most Logitech devices are not PlayStation controllers, and some of them
|
||||||
if (product == USB_PRODUCT_LOGITECH_F310) {
|
* lock up or reset when we send them the Sony third-party query feature
|
||||||
/* The Logitech F310 gamepad will lock up */
|
* report, so don't include that vendor here. Instead add devices as
|
||||||
return SDL_FALSE;
|
* appropriate to controller_list.h
|
||||||
}
|
*/
|
||||||
if (product == 0xc33f) {
|
return SDL_FALSE;
|
||||||
/* The Logitech G815 keyboard will reset the LEDs */
|
case USB_VENDOR_MADCATZ:
|
||||||
|
if (product == USB_PRODUCT_MADCATZ_SAITEK_SIDE_PANEL_CONTROL_DECK) {
|
||||||
|
/* This is not a Playstation compatible device */
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
case USB_VENDOR_MADCATZ:
|
case USB_VENDOR_MAYFLASH:
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
case USB_VENDOR_NACON:
|
case USB_VENDOR_NACON:
|
||||||
case USB_VENDOR_NACON_ALT:
|
case USB_VENDOR_NACON_ALT:
|
||||||
@@ -181,10 +183,10 @@ SDL_bool HIDAPI_SupportsPlaystationDetection(Uint16 vendor, Uint16 product)
|
|||||||
case USB_VENDOR_QANBA:
|
case USB_VENDOR_QANBA:
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
case USB_VENDOR_RAZER:
|
case USB_VENDOR_RAZER:
|
||||||
/* Most Razer devices are not game controllers, and some of them lock up
|
/* Most Razer devices are not PlayStation controllers, and some of them
|
||||||
* or reset when we send them the Sony third-party query feature report,
|
* lock up or reset when we send them the Sony third-party query feature
|
||||||
* so don't include that vendor here. Instead add devices as appropriate
|
* report, so don't include that vendor here. Instead add devices as
|
||||||
* to controller_type.c
|
* appropriate to controller_list.h
|
||||||
*
|
*
|
||||||
* Reference: https://github.com/libsdl-org/SDL/issues/6733
|
* Reference: https://github.com/libsdl-org/SDL/issues/6733
|
||||||
* https://github.com/libsdl-org/SDL/issues/6799
|
* https://github.com/libsdl-org/SDL/issues/6799
|
||||||
@@ -278,6 +280,7 @@ static SDL_GameControllerType SDL_GetJoystickGameControllerProtocol(const char *
|
|||||||
0x044f, /* Thrustmaster */
|
0x044f, /* Thrustmaster */
|
||||||
0x045e, /* Microsoft */
|
0x045e, /* Microsoft */
|
||||||
0x0738, /* Mad Catz */
|
0x0738, /* Mad Catz */
|
||||||
|
0x0b05, /* ASUS */
|
||||||
0x0e6f, /* PDP */
|
0x0e6f, /* PDP */
|
||||||
0x0f0d, /* Hori */
|
0x0f0d, /* Hori */
|
||||||
0x10f5, /* Turtle Beach */
|
0x10f5, /* Turtle Beach */
|
||||||
@@ -1005,7 +1008,7 @@ static void HIDAPI_DelDevice(SDL_HIDAPI_Device *device)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static SDL_bool HIDAPI_CreateCombinedJoyCons()
|
static SDL_bool HIDAPI_CreateCombinedJoyCons(void)
|
||||||
{
|
{
|
||||||
SDL_HIDAPI_Device *device, *combined;
|
SDL_HIDAPI_Device *device, *combined;
|
||||||
SDL_HIDAPI_Device *joycons[2] = { NULL, NULL };
|
SDL_HIDAPI_Device *joycons[2] = { NULL, NULL };
|
||||||
|
|||||||
@@ -47,7 +47,14 @@
|
|||||||
#define SDL_JOYSTICK_HIDAPI_SHIELD
|
#define SDL_JOYSTICK_HIDAPI_SHIELD
|
||||||
|
|
||||||
/* Whether HIDAPI is enabled by default */
|
/* Whether HIDAPI is enabled by default */
|
||||||
|
#if defined(__ANDROID__) || \
|
||||||
|
defined(__IPHONEOS__) || \
|
||||||
|
defined(__TVOS__)
|
||||||
|
/* On Android, HIDAPI prompts for permissions and acquires exclusive access to the device, and on Apple mobile platforms it doesn't do anything except for handling Bluetooth Steam Controllers, so we'll leave it off by default. */
|
||||||
|
#define SDL_HIDAPI_DEFAULT SDL_FALSE
|
||||||
|
#else
|
||||||
#define SDL_HIDAPI_DEFAULT SDL_TRUE
|
#define SDL_HIDAPI_DEFAULT SDL_TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The maximum size of a USB packet for HID devices */
|
/* The maximum size of a USB packet for HID devices */
|
||||||
#define USB_PACKET_LENGTH 64
|
#define USB_PACKET_LENGTH 64
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ static void CheckControllerSiriRemote(GCController *controller, int *is_siri_rem
|
|||||||
*is_siri_remote = 0;
|
*is_siri_remote = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
|
||||||
static BOOL ElementAlreadyHandled(SDL_JoystickDeviceItem *device, NSString *element, NSDictionary<NSString *, GCControllerElement *> *elements)
|
static BOOL ElementAlreadyHandled(SDL_JoystickDeviceItem *device, NSString *element, NSDictionary<NSString *, GCControllerElement *> *elements)
|
||||||
{
|
{
|
||||||
if ([element isEqualToString:@"Left Thumbstick Left"] ||
|
if ([element isEqualToString:@"Left Thumbstick Left"] ||
|
||||||
@@ -345,6 +346,7 @@ static BOOL ElementAlreadyHandled(SDL_JoystickDeviceItem *device, NSString *elem
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
#endif /* ENABLE_PHYSICAL_INPUT_PROFILE */
|
||||||
|
|
||||||
static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCController *controller)
|
static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCController *controller)
|
||||||
{
|
{
|
||||||
@@ -378,6 +380,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
|
|||||||
NSLog(@"Product name: %@\n", controller.vendorName);
|
NSLog(@"Product name: %@\n", controller.vendorName);
|
||||||
NSLog(@"Product category: %@\n", controller.productCategory);
|
NSLog(@"Product category: %@\n", controller.productCategory);
|
||||||
NSLog(@"Elements available:\n");
|
NSLog(@"Elements available:\n");
|
||||||
|
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
|
||||||
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
||||||
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
||||||
for (id key in controller.physicalInputProfile.buttons) {
|
for (id key in controller.physicalInputProfile.buttons) {
|
||||||
@@ -390,6 +393,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
|
|||||||
NSLog(@"\tHat: %@\n", key);
|
NSLog(@"\tHat: %@\n", key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
device->is_xbox = IsControllerXbox(controller);
|
device->is_xbox = IsControllerXbox(controller);
|
||||||
@@ -506,7 +510,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
|
|||||||
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
||||||
|
|
||||||
/* Provide both axes and analog buttons as SDL axes */
|
/* Provide both axes and analog buttons as SDL axes */
|
||||||
device->axes = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
|
NSArray *axes = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
|
||||||
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
|
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
|
||||||
GCControllerElement *element;
|
GCControllerElement *element;
|
||||||
|
|
||||||
@@ -523,8 +527,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}]];
|
}]];
|
||||||
device->naxes = (int)device->axes.count;
|
NSArray *buttons = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
|
||||||
device->buttons = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
|
|
||||||
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
|
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
|
||||||
GCControllerElement *element;
|
GCControllerElement *element;
|
||||||
|
|
||||||
@@ -538,7 +541,12 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}]];
|
}]];
|
||||||
device->nbuttons = (int)device->buttons.count;
|
/* Explicitly retain the arrays because SDL_JoystickDeviceItem is a
|
||||||
|
* struct, and ARC doesn't work with structs. */
|
||||||
|
device->naxes = (int)axes.count;
|
||||||
|
device->axes = (__bridge NSArray *)CFBridgingRetain(axes);
|
||||||
|
device->nbuttons = (int)buttons.count;
|
||||||
|
device->buttons = (__bridge NSArray *)CFBridgingRetain(buttons);
|
||||||
subtype = 4;
|
subtype = 4;
|
||||||
|
|
||||||
#ifdef DEBUG_CONTROLLER_PROFILE
|
#ifdef DEBUG_CONTROLLER_PROFILE
|
||||||
@@ -775,13 +783,20 @@ static SDL_JoystickDeviceItem *IOS_RemoveJoystickDevice(SDL_JoystickDeviceItem *
|
|||||||
|
|
||||||
#ifdef SDL_JOYSTICK_MFI
|
#ifdef SDL_JOYSTICK_MFI
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
|
/* These were explicitly retained in the struct, so they should be explicitly released before freeing the struct. */
|
||||||
if (device->controller) {
|
if (device->controller) {
|
||||||
/* The controller was explicitly retained in the struct, so it
|
|
||||||
* should be explicitly released before freeing the struct. */
|
|
||||||
GCController *controller = CFBridgingRelease((__bridge CFTypeRef)(device->controller));
|
GCController *controller = CFBridgingRelease((__bridge CFTypeRef)(device->controller));
|
||||||
controller.controllerPausedHandler = nil;
|
controller.controllerPausedHandler = nil;
|
||||||
device->controller = nil;
|
device->controller = nil;
|
||||||
}
|
}
|
||||||
|
if (device->axes) {
|
||||||
|
CFRelease((__bridge CFTypeRef)device->axes);
|
||||||
|
device->axes = nil;
|
||||||
|
}
|
||||||
|
if (device->buttons) {
|
||||||
|
CFRelease((__bridge CFTypeRef)device->buttons);
|
||||||
|
device->buttons = nil;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* SDL_JOYSTICK_MFI */
|
#endif /* SDL_JOYSTICK_MFI */
|
||||||
|
|
||||||
@@ -1109,7 +1124,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
Uint8 hatstate = SDL_HAT_CENTERED;
|
Uint8 hatstate = SDL_HAT_CENTERED;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
#ifdef DEBUG_CONTROLLER_STATE
|
#if defined(DEBUG_CONTROLLER_STATE) && defined(ENABLE_PHYSICAL_INPUT_PROFILE)
|
||||||
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
||||||
if (controller.physicalInputProfile) {
|
if (controller.physicalInputProfile) {
|
||||||
for (id key in controller.physicalInputProfile.buttons) {
|
for (id key in controller.physicalInputProfile.buttons) {
|
||||||
@@ -1136,6 +1151,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
}
|
}
|
||||||
#endif /* DEBUG_CONTROLLER_STATE */
|
#endif /* DEBUG_CONTROLLER_STATE */
|
||||||
|
|
||||||
|
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
|
||||||
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
|
||||||
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
|
||||||
NSDictionary<NSString *, GCControllerButtonInput *> *buttons = controller.physicalInputProfile.buttons;
|
NSDictionary<NSString *, GCControllerButtonInput *> *buttons = controller.physicalInputProfile.buttons;
|
||||||
@@ -1162,7 +1178,9 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
|
|||||||
}
|
}
|
||||||
SDL_PrivateJoystickButton(joystick, button++, value);
|
SDL_PrivateJoystickButton(joystick, button++, value);
|
||||||
}
|
}
|
||||||
} else if (controller.extendedGamepad) {
|
} else
|
||||||
|
#endif
|
||||||
|
if (controller.extendedGamepad) {
|
||||||
SDL_bool isstack;
|
SDL_bool isstack;
|
||||||
GCExtendedGamepad *gamepad = controller.extendedGamepad;
|
GCExtendedGamepad *gamepad = controller.extendedGamepad;
|
||||||
|
|
||||||
|
|||||||
Loaded 100 of 301 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user