Compare commits

..
Author SHA1 Message Date
Sam Lantinga f461d91cd2 Updated to version 2.30.2 for release 2024-04-01 16:56:15 -07:00
Brian Collins ef54e0c4f4 Workaround a macOS cursor-related bug.
This fixes an macOS bug that is only known to occur in fullscreen windows on the built-in displays of newer MacBooks with camera notches. When the mouse is moved near the top of such a window (within about 44 units) and then moved back down, the cursor rects aren't respected. This can cause the default cursor to be visible when it should not be.

(cherry picked from commit f1690e265e)
2024-04-01 16:22:03 -07:00
Ryan C. Gordon 863f39fb9f psp: Fixed building with pspdev when not using CMake.
(psp-cmake defines `__PSP__` on the command line, but the compiler itself
only defines `__psp__` and some variations.

Fixes #9378.

(cherry picked from commit 0d8ce4a761)
2024-03-28 09:48:03 -04:00
Sam Lantinga d33b28c9fe Don't fail joystick initialization if udev isn't available
(cherry picked from commit 5fff9bc1e3)
2024-03-25 12:55:50 -07:00
Ozkan Sezer c15a87a614 remove non-existent vulkan.hpp and vulkan_mir.h from Xcode project
(cherry picked from commit 358a80a473)
2024-03-25 22:02:40 +03:00
Anonymous Maarten 45de0635ac VisualC: remove vulkan.hpp
(cherry picked from commit eb185e8d88)
2024-03-25 22:02:20 +03:00
Alynne bca314c339 Add Yawman Arrow flightstick controller
(cherry picked from commit 2b4c75690c)
(cherry picked from commit cbc9bd9804)
2024-03-25 06:36:09 -07:00
Tyson Whitehead f05490d0e2 udev: Fix O(n^2) device walking issue (closes #9092)
I believe there was a O(n^2) device walking issues on startup

- MaybeAddDevice gets called for every device at startup
- MaybeAddDevice calls IsJoystick
- IsJoystick calls SDL_UDEV_GetProductInfo
- SDL_UDEV_GetProductInfo calls udev_enumerate_scan_devices
- udev_enumerate_scan_devices walks all the devices

Prior to commit 3b1e0e1 this was mostly masked as IsJoystick only
called SDL_UDEV_GetProductInfo when a JSIOCGNAME ioctl was
successful. This fixes the O(n^2) behaviour by directly getting
the device via udev_device_new_from_devnum (based on type, major,
and minor number) instead of enumerating everything via
udev_enumerate_scan_devices and matching on name.

(cherry picked from commit 6e1611cc77)
2024-03-24 11:49:50 -07:00
Sylvain 442e201705 Fix bug #9331 - SDL3 Android crash getVibrator() == null
(cherry picked from commit 1855ce68af)
(cherry picked from commit 763d768f7d)
2024-03-23 16:32:17 -07:00
Marcel Hild 9c346b2321 Add support for MadCatz Saitek Side Panel Control Deck
Signed-off-by: Marcel Hild <hild@b4mad.net>
(cherry picked from commit 67e425bcf8)
(cherry picked from commit fa18c9bf4a)
2024-03-22 09:16:39 -07:00
Frank Praznik a6b684d05a wayland: Check the returned display pointer before dereferencing
Fixes a crash when all displays are disconnected.

(cherry picked from commit 5df737bb3c)
2024-03-20 15:45:58 -04:00
Sam Lantinga 8fb82da226 Poll for the initial controller state when using DirectInput
This fixes getting a deflected axis as the first buffered input reading on a generic USB controller (G-Shark GS-GP702)

(cherry picked from commit 70b0d33106)
(cherry picked from commit a9ac349846)
2024-03-20 10:42:39 -07:00
Pierre Wendling 0949f89028 N3DS: Fix locale name and early return.
- The name for simplified Chinese should be `zh_CN`.
- Ensure `cfguExit` is called even if `CFGU_GetSystemLanguage` failed.

(cherry picked from commit 390fff4ae0)
(cherry picked from commit 4a79fe44ff)
2024-03-19 16:54:46 -07:00
rofl0r 350a49e1cc PSP/Joystick: fix formatting
(cherry picked from commit c17d2246fb)
2024-03-17 13:24:12 -07:00
rofl0r bc19e38728 PSP: don't block on joystick event query
using the blocking sceCtrlReadBufferPositive() effectively turns SDL_PollEvent() into WaitForVblank(), because the functions does exactly that if no input is buffered.
due to this, calling SDL_PollEvent() once per frame averaged in 7 ms delay out of the available 16ms budget to get a frame calculated and drawn to achieve 60 fps.

(cherry picked from commit 86f223d664)
2024-03-17 13:24:11 -07:00
Sam Lantinga 228a2954d7 Added a mapping for the Defender Joystick Cobra R4 (thanks @kotenok2000!)
(cherry picked from commit d972244d3a)
(cherry picked from commit 2d6c100058)
2024-03-17 12:15:38 -07:00
Sam Lantinga 3d6d4ca2cd Use the CRC as part of the unique key for mappings
(cherry picked from commit 4697153d1e)
(cherry picked from commit 07f04bb35e)
2024-03-17 12:15:31 -07:00
Frank Praznik 4c3e5cf1d1 wayland: Always use the entire buffer for the viewport source
Not doing so can result in protocol errors if the viewport source region is updated and a buffer with the old, smaller dimensions is committed.

(cherry picked from commit 24aedc1439)
2024-03-17 10:48:07 -04:00
Frank Praznik 27b1b6d4eb Add checks for memfd_create() and posix_fallocate() to the autotools build
(cherry picked from commit 59d4a39456)
2024-03-13 11:45:41 -04:00
Frank Praznik 24269007d8 Fix build (C90 declaration order)
(cherry picked from commit 88bdc028ec)
2024-03-12 21:17:29 -07:00
Frank Praznik d849036927 wayland: Allocate the cursor shared memory buffer entirely in memory, if possible.
Use memfd_create() to allocate the temporary SHM backing file in memory, and set the size with posix_fallocate(), which will return an error on insufficient space vs ftruncate(), which will silently succeed and allow a SIGBUS error to occur if the unbacked memory is accessed.

Additionally, make the legacy path more robust by unlinking the temp file, so it won't persist after close, and unmapping the shared memory buffer.

(cherry picked from commit 9bdb992925)
(cherry picked from commit d3c89bb479)
2024-03-12 21:17:29 -07:00
Sam Lantinga 5be47255ba Removed incorrect mapping for a HORI controller
This broke support for the Hori Fighting Stick EX2, which gets a good mapping if the automatic mapping is allowed to create one.

If the original controller needs a mapping, it should be added with a crc, since that VID/PID combination is used by several HORI controllers.

(cherry picked from commit d79f865251)
(cherry picked from commit e54774faca)
2024-03-11 17:14:26 -07:00
Sam Lantinga 8f860b3698 Fixed crash if joystick functions are passed a NULL joystick
In particular this affects the doomsday game engine if no joystick or
gamepad is attached.

(cherry picked from commit 0dfdf1f3f2)
[smcv: Also included minor adjustment from https://github.com/libsdl-org/SDL/pull/9233]
(cherry picked from commit cd197be53b)
2024-03-09 08:41:16 -08:00
Sam Lantinga 35992597ae Added support for the 6-button SEGA Mega Drive Control Pad for Nintendo Online
(cherry picked from commit 528b71284f)
2024-03-08 13:08:27 -08:00
Sam Lantinga 3f0d7a2937 Fixed mapping for the Sanwa Supply JY-P76USV controller
(cherry picked from commit 57a160c9ab)
(cherry picked from commit 26054d9934)
2024-03-06 20:54:55 -08:00
Jade Macho dae1232489 GDK: Partially revert 2670eb44af
MsgWaitForMultipleObjects is desktop-only.

(cherry picked from commit e1e5d33420)
(cherry picked from commit da9bfc43e7)
2024-03-06 21:28:24 +03:00
Ozkan Sezer 8e388843b8 SDL_RWFromFile, stdio: allow named pipes along with regular files.
Fixes https://github.com/libsdl-org/SDL/issues/9174

(cherry picked from commit 177a836653)
2024-03-06 18:50:28 +03:00
Sam Lantinga 5adbf3765a Updated to version 2.30.1 for release 2024-03-05 14:33:57 -08:00
Sam Lantinga e910e6f13d Keep track of whether the Android on-screen keyboard was opened by the application
Fixes https://github.com/libsdl-org/SDL/issues/9202

(cherry picked from commit edbcef11ff)
(cherry picked from commit bdc7ad8f56)
2024-03-05 13:55:12 -08:00
Sam Lantinga 2f2cca8ac6 Added a mapping for the Sanwa Supply JY-P76USV controller
Fixes https://github.com/libsdl-org/SDL/issues/8644

(cherry picked from commit ccd309c433)
(cherry picked from commit d35dee76c7)
2024-03-03 12:24:15 -08:00
Sam Lantinga a2f39399a1 SDL_GameControllerGetAppleSFSymbolsNameForAxis() returns NULL if the symbol isn't found
(cherry picked from commit 627e15871a)
2024-03-03 11:56:53 -08:00
Sam Lantinga c1149f88b6 SDL_GameControllerGetAppleSFSymbolsNameForButton() returns NULL if the symbol isn't found
Fixes https://github.com/libsdl-org/SDL/issues/9071

(cherry picked from commit b87116ff03)
2024-03-03 11:13:04 -08:00
Sam Lantinga 54adba6a31 If the viewport changes the cliprect should be updated
The clip rectangle is defined to be viewport relative, so if the viewport changes we need to update it.

Fixes https://github.com/libsdl-org/SDL/issues/9094

(cherry picked from commit d0af01e7d4)
(cherry picked from commit 05f6709617)
2024-03-03 11:13:04 -08:00
Sam Lantinga b48106f8a8 Don't test 10-bit pixel format conversion
We either need to explicitly test using the sRGB colorspace or update the tests for HDR10 color conversion. We'll just disable them for now, as these formats aren't commonly used in games.

(cherry picked from commit f9c57e16b0)
2024-03-03 00:01:20 +03:00
scribam f345428367 ci: update deprecated node.js 16 actions
(cherry picked from commit 38d24778ed)
2024-02-23 23:42:56 +01:00
scribam e4287595c1 ci: bump cross-platform-actions/action version to v0.23.0
(cherry picked from commit cbe330befd)
2024-02-23 23:21:40 +03:00
Sam Lantinga 73efbf2e14 Fixed Visual Studio warning 4459
(cherry picked from commit d135daad5b)
2024-02-21 23:33:28 +03:00
Ryan C. Gordon ad342dfca9 audio: fix SSE conversion of Sint8 audio to Float32.
Fixes #9099.

(cherry picked from commit 4316c5ec02)
2024-02-21 15:16:46 -05:00
Sam Lantinga f13d6d4b0f Convert mouse wheel coordinates to renderer view
Fixes https://github.com/libsdl-org/SDL/issues/9097

(cherry picked from commit 903d888cc3)
2024-02-20 15:45:04 -08:00
Frank Praznik dfb8241317 wayland: Don't pass null string pointers to wl_cursor_theme_get_cursor
The function calls strcmp internally without checking for a null string parameter, and calling strcmp with a null parameter is undefined behavior.

(cherry picked from commit f24216c2ba)
2024-02-18 12:35:47 -05:00
Ryan C. Gordon c67f10e43f x11: Cleaned up system cursor code to match previous Wayland change.
(cherry picked from commit df00a7dd4c)
2024-02-16 08:38:13 -05:00
Ryan C. Gordon 932eea513e wayland: Minor cleanup in new mouse cursor selection code.
- Move legacy name choice to a separate function, so we can `return` a
  string in one line instead of assign a variable and `break` for each item.
- Have the case statement cover SDL_NUM_SYSTEM_CURSORS, and not `default`, so
  compiler will (maybe) warn us if an enum value is added but not included here.
- Only choose a legacy name if necessary.

(cherry picked from commit 827917ea60)
2024-02-16 08:38:08 -05:00
Simon McVittie 5e51a37518 emscripten, wayland, x11: Share the table of CSS cursor names
As suggested in #8939.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit 271df2fdd8)
2024-02-16 08:12:59 -05:00
Simon McVittie 372564299e emscripten, wayland, x11: Map SIZEALL to "all-scroll" instead of "move"
These previously mapped SIZEALL to "move", but "move" is not guaranteed
to be a four-pointed arrow: according to the CSS spec, it's actually
intended to be a drag-and-drop cursor, analogous to "alias" and "copy".
Map it to "all-scroll" instead, as in Wayland: while this is *also* not
semantically guaranteed to be a four-pointed arrow, it is at least
*suggested* to make it a four-pointed arrow.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit aa6c390bbd)
2024-02-16 08:12:54 -05:00
Ryan C. Gordon c397fe0c51 wayland: Prefer to use CSS names for cursors, falling back to X11
SDL3's Wayland code already uses the CSS names exclusively with no
fallback, but since SDL2 has historically used the older names, keeping
them as a fallback makes sense if the CSS names don't work out.

[smcv: Added commit message]
Tested-by: Simon McVittie <smcv@collabora.com>

(cherry picked from commit 67827c0b00)
2024-02-16 08:12:47 -05:00
Simon McVittie 95227e2732 wayland: Use CSS/freedesktop cursor name "default" as a fallback
The "left_ptr" name is an X11 thing, and there's no guarantee that
Wayland cursor themes contain it. In particular, GNOME's Adwaita theme
as of version 46.beta only contains the CSS/freedesktop names.

To test, either move one of the known cursors out of the way, or edit
the switch statement above to use a wrong name for one of them.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit e2535ba547)
2024-02-16 08:12:41 -05:00
Ryan C. Gordon 6f8d6da77f x11: Use XcursorLibraryLoadCursor to load system cursors when available.
Apparently this is necessary on the latest Gnome to get properly themed
cursors, vs ancient X11 standard cursors, as Gnome has dropped the old
theme names that XCreateFontCursor eventually expected to find.

Fixes #8939.

(cherry picked from commit cb9565354c)
2024-02-16 02:13:30 -05:00
Ozkan Sezer 6f15aec644 don't let SDL_render.c:render_drivers[] have an empty initializer list.
(cherry picked from commit bc30fb295d)
2024-02-15 22:51:50 +03:00
Ozkan Sezer 9bed177f10 Check the SDL_VIDEO_RENDER_??? macros with #if instead of #ifdef
Allows users to disable them by defining them as 0.

Closes https://github.com/libsdl-org/SDL/issues/8996
(cherry picked from commit d0731ab9a3)
2024-02-15 22:51:37 +03:00
Frank Praznik 7de4f16710 wayland: Don't store wl_output pointers in mode driver data
They aren't used for anything, and cause problems if the video core tries to free them.

Manual backport of f9ba0e1

(cherry picked from commit 699cec1a8d)
2024-02-14 11:53:07 -05:00
Sam Lantinga beac43f41f Revert "wayland: Don't initialize OpenGL when the window flags didn't specify it"
This reverts commit f522c5380c.

We don't want this change for SDL2, and we're doing further investigation for SDL3.

Fixes https://github.com/libsdl-org/SDL/issues/9035

(cherry picked from commit 120b8d4189)
2024-02-12 16:03:14 -08:00
Sam Lantinga 8538d5dcf1 Fixed error: unused variable 'axes' [-Werror,-Wunused-variable]
(cherry picked from commit 814a94c349)
(cherry picked from commit 6669d04ea6)
2024-02-12 11:18:54 -08:00
Sam Lantinga 0fb294ade4 Explicitly retain and release NSObjects in C structures
Fixes https://github.com/libsdl-org/SDL/issues/9021
Fixes https://github.com/libsdl-org/SDL/issues/9042

(cherry picked from commit 42cdbf6b21)
(cherry picked from commit 971c5c2610)
2024-02-12 10:21:59 -08:00
Chris Collins 0f6a682ea6 Wayland: Avoid SEGV if a modifier notification comes before the keymap
(cherry picked from commit 0f81598e9f)
(cherry picked from commit de0cb94e72)
2024-02-10 07:05:16 -08:00
Hans-Kristian Arntzen c4fc20a033 Fix broken use of MsgWaitForMultipleObjects.
- Timeout < 0 was not handled properly
- Return value for success is WAIT_OBJECT_0 + nCount, not positive value

(cherry picked from commit 69f2bd151e)
(cherry picked from commit 4ae87e215e)
2024-02-10 07:03:21 -08:00
Sam Lantinga a24e2bfc76 Guarded ElementAlreadyHandled with #ifdef ENABLE_PHYSICAL_INPUT_PROFILE (thanks @Donione!)
Fixes https://github.com/libsdl-org/SDL/issues/9033

(cherry picked from commit 3ebbf0f409)
(cherry picked from commit 646cccede7)
2024-02-09 16:13:14 -08:00
Sam Lantinga 6a83588fdd Redefine XINPUT_CAPABILITIES_EX as an SDL typedef
mingw-w64 has added this from Proton (which added this from SDL), so we need to re-define it as a local symbol to avoid conflicting with mingw-w64 headers.

Fixes https://github.com/libsdl-org/SDL/issues/9031

(cherry picked from commit b7c61569f8)
(cherry picked from commit 93d7b6e50c)
2024-02-09 01:28:48 -08:00
Sam Lantinga 0092b3629e Added VIDPID for OpenFFBoard wheel (thanks @groybe!)
Closes https://github.com/libsdl-org/SDL/pull/7987

(cherry picked from commit 26e947f8ea)
(cherry picked from commit 40b61b81f1)
2024-02-07 16:36:02 -08:00
pastdue c0eedcd4ce Emscripten_SetWindowFullscreen: Fix crash due to uninitialized EmscriptenFullscreenStrategy members
(cherry picked from commit 7b74e2eeb8)
(cherry picked from commit d2a3347c19)
2024-02-06 16:27:36 -08:00
meyraud705 d1b6d5f33d Fix memory leak in SDL_UpdateSteamVirtualGamepadInfo()
(cherry picked from commit 82d89ff4fb)
(cherry picked from commit a09b0b05eb)
2024-02-06 01:56:41 -08:00
Wohlstand fe297fc6d8 SDL_windowsopengl.c: WGL: Fixed null-pointer dereference crash
Fixes #8968

Fixed crash after https://github.com/libsdl-org/SDL/commit/594a79c2f9db21a11a76c012b2b1655a21fc8982

(cherry picked from commit a29f37c14a)
2024-02-03 06:19:26 -08:00
Wohlstand 384fcea585 SDL_audiotypecvt.c: Fixed memory corruption when resampling S16 t F32
(cherry picked from commit ca01016577)
2024-02-03 06:14:37 -08:00
Joshua Root 2f2b44a1bd Fix SDL_mfijoystick build issues
Add missing guards around use of physicalInputProfile.

Add explicit import of Foundation which seems to be needed on some
systems to get the NSArray definition.

Add __unsafe_unretained to ObjC types in struct so the compiler doesn't
complain about that not being allowed with ARC.

Closes: #8979
(cherry picked from commit e0158f68e4)
(cherry picked from commit c53c351921)
2024-02-02 22:25:49 -08:00
Sam Lantinga 8386daddcb vulkan_metal.h: Make compatible with ObjC ARC (thanks @jmroot!)
(re)Fixes #6598

We need to remember to apply this again once we update from upstream headers.

(cherry picked from commit e67e0c5d55)
(cherry picked from commit fc787a41dc)
2024-02-02 18:31:27 -08:00
Simon McVittie 739a23e506 testautomation_math: Fix misleading log output
These originally checked for expected ± EPSILON as logged, but since
commit 880c6939 they check for expected ± max_err, where max_err may
need to be greater than EPSILON for very large expected results like
the ones in exp_regularCases().

Also, EPSILON is so small that the default precision of the %f format
(6 decimal places) would never actually have shown its effect, so log
it in scientific notation instead.

Fixes: 880c6939 "testautomation_math: do relative comparison + more precise correct trigonometric values"
Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit 58907d2c27)
2024-02-02 07:45:57 -08:00
Simon McVittie 5a59155a05 test: Don't accept results that are much less than expected
While looking at the other tests in this file, I noticed that instead
of checking for a result in the range of expected ± FLT_EPSILON as I
would have expected, these tests would accept any result strictly less
than expected + FLT_EPSILON, for example a wrong result that is very
large and negative. This is presumably not what was intended, so add
the SDL_fabs() that I assume was meant to be here.

Fixes: 474c8d00 "testautomation: don't do float equality tests"
Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit a7bd18c0d5)
2024-02-02 07:45:57 -08:00
Simon McVittie 1ad917e2f6 testautomation: Don't expect exp to yield exact floating point results
In the Steam Runtime 1 'scout' environment, when compiling for i386
using the default gcc-4.6, Exp(34.125) matches the desired value to the
precision shown in the log (6 decimal places) but is not an exact match
for the desired value.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit f73abd49c3)
2024-02-02 07:45:57 -08:00
109 changed files with 824 additions and 528 deletions

No files matched your search

+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
- { name: CMake, cmake: 1, android_abi: "arm64-v8a", android_platform: 23, arch: "aarch64" }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: nttld/setup-ndk@v1
id: setup_ndk
with:
+2 -2
View File
@@ -8,9 +8,9 @@ jobs:
name: FreeBSD
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build
uses: cross-platform-actions/action@v0.19.1
uses: cross-platform-actions/action@v0.23.0
with:
operating_system: freebsd
version: '13.2'
+2 -2
View File
@@ -6,8 +6,8 @@ jobs:
emscripten:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: mymindstorm/setup-emsdk@v12
- uses: actions/checkout@v4
- uses: mymindstorm/setup-emsdk@v14
with:
version: 3.1.35
- name: Install ninja
+1 -1
View File
@@ -15,6 +15,6 @@ jobs:
- { name: tvOS, target: Static Library-tvOS, sdk: appletvos }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Build
run: xcodebuild -project Xcode/SDL/SDL.xcodeproj -target '${{ matrix.platform.target }}' -configuration Release -sdk ${{ matrix.platform.sdk }} clean build
+1 -1
View File
@@ -83,7 +83,7 @@ jobs:
# Install oneAPI
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
# We only need to run this once: arbitrarily use the Linux/CMake build
if: "runner.os == 'Linux' && ! matrix.platform.autotools"
+2 -2
View File
@@ -23,7 +23,7 @@ jobs:
project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0' }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Create CMake project using SDL as a subproject
shell: python
run: |
@@ -74,7 +74,7 @@ jobs:
- name: Add msbuild to PATH
if: ${{ matrix.platform.project != '' }}
uses: microsoft/setup-msbuild@v1.1.3
uses: microsoft/setup-msbuild@v2
- name: Build msbuild
if: ${{ matrix.platform.project != '' }}
run: msbuild ${{ matrix.platform.project }} /m /p:BuildInParallel=true /p:Configuration=Release ${{ matrix.platform.projectflags }}
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
container:
image: devkitpro/devkitarm:latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install build requirements
run: |
apt update
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
container: ps2dev/ps2dev:latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup dependencies
run: |
apk update
+1 -1
View File
@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
container: pspdev/pspdev:latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup dependencies
run: |
apk update
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
steps:
- name: Setup dependencies
run: apt-get update && apt-get install -y cmake ninja-build
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Configure (autotools)
if: ${{ contains(matrix.platform.name, 'autotools') }}
run: |
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
- { name: GLES (pib), os: windows-latest, pib: true }
- { name: GLES (PVR_PSP2 + gl4es4vita), os: windows-latest, pvr: true }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install build requirements
run: |
apk update
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- { name: OS/2, makefile: Makefile.os2 }
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: open-watcom/setup-watcom@v0
- name: Build SDL2
run: |
+3 -1
View File
@@ -87,7 +87,7 @@ endif()
# See docs/release_checklist.md
set(SDL_MAJOR_VERSION 2)
set(SDL_MINOR_VERSION 30)
set(SDL_MICRO_VERSION 0)
set(SDL_MICRO_VERSION 2)
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
# Set defaults preventing destination file conflicts
@@ -1107,6 +1107,8 @@ if(SDL_LIBC)
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(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)
if(HAVE_LIBM)
+1 -1
View File
@@ -15,7 +15,7 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 30
MICRO_VERSION = 0
MICRO_VERSION = 2
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
DESCRIPTION = Simple DirectMedia Layer 2
+1 -1
View File
@@ -6,7 +6,7 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 30
MICRO_VERSION = 0
MICRO_VERSION = 2
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
LIBHOME = .
-1
View File
@@ -499,7 +499,6 @@
<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\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_beta.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
-3
View File
@@ -780,9 +780,6 @@
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
-1
View File
@@ -394,7 +394,6 @@
<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\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_beta.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
-3
View File
@@ -780,9 +780,6 @@
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h">
<Filter>video\khronos\vulkan</Filter>
</ClInclude>
+2 -2
View File
@@ -19,10 +19,10 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.30.0</string>
<string>2.30.2</string>
<key>CFBundleSignature</key>
<string>SDLX</string>
<key>CFBundleVersion</key>
<string>2.30.0</string>
<string>2.30.2</string>
</dict>
</plist>
+6 -46
View File
@@ -206,7 +206,6 @@
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 */; };
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, ); }; };
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 */; };
@@ -282,7 +281,6 @@
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 */; };
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, ); }; };
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 */; };
@@ -580,7 +578,6 @@
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 */; };
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, ); }; };
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 */; };
@@ -656,7 +653,6 @@
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 */; };
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, ); }; };
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 */; };
@@ -974,7 +970,6 @@
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 */; };
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 */; };
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 */; };
@@ -1036,7 +1031,6 @@
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 */; };
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 */; };
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 */; };
@@ -2110,12 +2104,6 @@
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 */; };
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 */; };
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 */; };
@@ -2152,12 +2140,6 @@
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 */; };
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 */; };
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 */; };
@@ -3968,14 +3950,12 @@
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>"; };
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>"; };
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>"; };
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>"; };
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>"; };
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>"; };
@@ -5003,7 +4983,6 @@
A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */,
A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */,
A7D8A73623E2513E00DCD162 /* vulkan_macos.h */,
A7D8A73923E2513E00DCD162 /* vulkan_mir.h */,
A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */,
A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */,
A7D8A73523E2513E00DCD162 /* vulkan_win32.h */,
@@ -5011,7 +4990,6 @@
A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */,
A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */,
A7D8A73023E2513E00DCD162 /* vulkan.h */,
A7D8A73223E2513E00DCD162 /* vulkan.hpp */,
);
path = vulkan;
sourceTree = "<group>";
@@ -5596,7 +5574,6 @@
5616CA63252BB35F005D5928 /* SDL_sysurl.h in Headers */,
A75FCD4A23E25AB700529352 /* SDL_cocoakeyboard.h in Headers */,
A75FCD4B23E25AB700529352 /* SDL_uikitvulkan.h in Headers */,
A75FCD4E23E25AB700529352 /* vulkan.hpp in Headers */,
A75FCD4F23E25AB700529352 /* SDL_loadso.h in Headers */,
A75FCD5023E25AB700529352 /* gl2ext.h in Headers */,
A75FCD5123E25AB700529352 /* SDL_clipboardevents_c.h in Headers */,
@@ -5680,7 +5657,6 @@
A75FCDA123E25AB700529352 /* vulkan_xlib.h in Headers */,
A75FCDA223E25AB700529352 /* SDL_uikitwindow.h in Headers */,
A75FCDA323E25AB700529352 /* vulkan_vi.h in Headers */,
A75FCDA423E25AB700529352 /* vulkan_mir.h in Headers */,
A75FCDA523E25AB700529352 /* SDL_quit.h in Headers */,
A75FCDA623E25AB700529352 /* default_cursor.h in Headers */,
A75FCDA723E25AB700529352 /* SDL_render_sw_c.h in Headers */,
@@ -5833,7 +5809,6 @@
5616CA66252BB361005D5928 /* SDL_sysurl.h in Headers */,
A75FCF0323E25AC700529352 /* SDL_cocoakeyboard.h in Headers */,
A75FCF0423E25AC700529352 /* SDL_uikitvulkan.h in Headers */,
A75FCF0723E25AC700529352 /* vulkan.hpp in Headers */,
A75FCF0823E25AC700529352 /* SDL_loadso.h in Headers */,
A75FCF0923E25AC700529352 /* gl2ext.h in Headers */,
A75FCF0A23E25AC700529352 /* SDL_clipboardevents_c.h in Headers */,
@@ -5917,7 +5892,6 @@
A75FCF5A23E25AC700529352 /* vulkan_xlib.h in Headers */,
A75FCF5B23E25AC700529352 /* SDL_uikitwindow.h in Headers */,
A75FCF5C23E25AC700529352 /* vulkan_vi.h in Headers */,
A75FCF5D23E25AC700529352 /* vulkan_mir.h in Headers */,
A75FCF5E23E25AC700529352 /* SDL_quit.h in Headers */,
A75FCF5F23E25AC700529352 /* default_cursor.h in Headers */,
A75FCF6023E25AC700529352 /* SDL_render_sw_c.h in Headers */,
@@ -6043,7 +6017,6 @@
A769B0D023E259AE00872273 /* SDL_cocoakeyboard.h in Headers */,
5616CA5D252BB35E005D5928 /* SDL_sysurl.h in Headers */,
A769B0D123E259AE00872273 /* SDL_uikitvulkan.h in Headers */,
A769B0D423E259AE00872273 /* vulkan.hpp in Headers */,
A769B0D623E259AE00872273 /* gl2ext.h in Headers */,
A769B0D723E259AE00872273 /* SDL_clipboardevents_c.h in Headers */,
A769B0D923E259AE00872273 /* SDL_syshaptic_c.h in Headers */,
@@ -6114,7 +6087,6 @@
F386F6F52884663E001840AA /* SDL_utils_c.h in Headers */,
A769B12A23E259AE00872273 /* SDL_uikitwindow.h in Headers */,
A769B12B23E259AE00872273 /* vulkan_vi.h in Headers */,
A769B12C23E259AE00872273 /* vulkan_mir.h in Headers */,
A769B12E23E259AE00872273 /* default_cursor.h in Headers */,
A769B12F23E259AE00872273 /* SDL_render_sw_c.h in Headers */,
A769B13223E259AE00872273 /* SDL_nullvideo.h in Headers */,
@@ -6387,13 +6359,11 @@
A7D8B26723E2514200DCD162 /* vk_platform.h in Headers */,
A7D8B2AF23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
A7D8B26123E2514200DCD162 /* vulkan.h in Headers */,
A7D8B26D23E2514200DCD162 /* vulkan.hpp in Headers */,
A7D8B2B523E2514200DCD162 /* vulkan_android.h in Headers */,
A7D8B2A923E2514200DCD162 /* vulkan_core.h in Headers */,
A7D8B27323E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
A7D8B2A323E2514200DCD162 /* vulkan_ios.h in Headers */,
A7D8B28523E2514200DCD162 /* vulkan_macos.h in Headers */,
A7D8B29723E2514200DCD162 /* vulkan_mir.h in Headers */,
A7D8B25B23E2514200DCD162 /* vulkan_vi.h in Headers */,
A7D8B27923E2514200DCD162 /* vulkan_wayland.h in Headers */,
A7D8B27F23E2514200DCD162 /* vulkan_win32.h in Headers */,
@@ -6629,13 +6599,11 @@
A7D8B26823E2514200DCD162 /* vk_platform.h in Headers */,
A7D8B2B023E2514200DCD162 /* vk_sdk_platform.h in Headers */,
A7D8B26223E2514200DCD162 /* vulkan.h in Headers */,
A7D8B26E23E2514200DCD162 /* vulkan.hpp in Headers */,
A7D8B2B623E2514200DCD162 /* vulkan_android.h in Headers */,
A7D8B2AA23E2514200DCD162 /* vulkan_core.h in Headers */,
A7D8B27423E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
A7D8B2A423E2514200DCD162 /* vulkan_ios.h in Headers */,
A7D8B28623E2514200DCD162 /* vulkan_macos.h in Headers */,
A7D8B29823E2514200DCD162 /* vulkan_mir.h in Headers */,
A7D8B25C23E2514200DCD162 /* vulkan_vi.h in Headers */,
A7D8B27A23E2514200DCD162 /* vulkan_wayland.h in Headers */,
A7D8B28023E2514200DCD162 /* vulkan_win32.h in Headers */,
@@ -6704,7 +6672,6 @@
A7D8AE9223E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
5616CA5A252BB35D005D5928 /* SDL_sysurl.h in Headers */,
A7D8ACE523E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
A7D8B27023E2514200DCD162 /* vulkan.hpp in Headers */,
A7D8B22823E2514200DCD162 /* gl2ext.h in Headers */,
A7D8BB7323E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
A7D8AAE423E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
@@ -6775,7 +6742,6 @@
F386F6F42884663E001840AA /* SDL_utils_c.h in Headers */,
A7D8AC9D23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
A7D8B25E23E2514200DCD162 /* vulkan_vi.h in Headers */,
A7D8B29A23E2514200DCD162 /* vulkan_mir.h in Headers */,
A7D8BB4F23E2514500DCD162 /* default_cursor.h in Headers */,
A7D8B9FF23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
A7D8ABFB23E2514100DCD162 /* SDL_nullvideo.h in Headers */,
@@ -7048,13 +7014,11 @@
A7D8B26623E2514200DCD162 /* vk_platform.h in Headers */,
A7D8B2AE23E2514200DCD162 /* vk_sdk_platform.h in Headers */,
A7D8B26023E2514200DCD162 /* vulkan.h in Headers */,
A7D8B26C23E2514200DCD162 /* vulkan.hpp in Headers */,
A7D8B2B423E2514200DCD162 /* vulkan_android.h in Headers */,
A7D8B2A823E2514200DCD162 /* vulkan_core.h in Headers */,
A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */,
A7D8B2A223E2514200DCD162 /* vulkan_ios.h in Headers */,
A7D8B28423E2514200DCD162 /* vulkan_macos.h in Headers */,
A7D8B29623E2514200DCD162 /* vulkan_mir.h in Headers */,
A7D8B25A23E2514200DCD162 /* vulkan_vi.h in Headers */,
A7D8B27823E2514200DCD162 /* vulkan_wayland.h in Headers */,
A7D8B27E23E2514200DCD162 /* vulkan_win32.h in Headers */,
@@ -7118,7 +7082,6 @@
A7D8BA7623E2514400DCD162 /* SDL_shaders_gl.h in Headers */,
A7D8B42B23E2514300DCD162 /* SDL_systhread_c.h in Headers */,
A7D8AE9123E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
A7D8B26F23E2514200DCD162 /* vulkan.hpp in Headers */,
A7D8B22723E2514200DCD162 /* gl2ext.h in Headers */,
A7D8BB7223E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
A7D8AAE323E2514100DCD162 /* SDL_syshaptic_c.h in Headers */,
@@ -7189,7 +7152,6 @@
A7D8B29F23E2514200DCD162 /* vulkan_xlib.h in Headers */,
A7D8B25D23E2514200DCD162 /* vulkan_vi.h in Headers */,
F316AB882B5A02C3002EF551 /* yuv_rgb_common.h in Headers */,
A7D8B29923E2514200DCD162 /* vulkan_mir.h in Headers */,
A1BB8B6F27F6CF330057CFA8 /* SDL_list.h in Headers */,
A7D8BB4E23E2514500DCD162 /* default_cursor.h in Headers */,
A7D8B9FE23E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
@@ -7325,7 +7287,6 @@
DB313FDB17554B71006C0E22 /* SDL_keycode.h in Headers */,
A7D8AE9323E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */,
A7D8ACE623E2514100DCD162 /* SDL_uikitvulkan.h in Headers */,
A7D8B27123E2514200DCD162 /* vulkan.hpp in Headers */,
DB313FDC17554B71006C0E22 /* SDL_loadso.h in Headers */,
A7D8B22923E2514200DCD162 /* gl2ext.h in Headers */,
A7D8BB7423E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */,
@@ -7409,7 +7370,6 @@
A7D8B2A123E2514200DCD162 /* vulkan_xlib.h in Headers */,
A7D8AC9E23E2514100DCD162 /* SDL_uikitwindow.h in Headers */,
A7D8B25F23E2514200DCD162 /* vulkan_vi.h in Headers */,
A7D8B29B23E2514200DCD162 /* vulkan_mir.h in Headers */,
DB313FE817554B71006C0E22 /* SDL_quit.h in Headers */,
A7D8BB5023E2514500DCD162 /* default_cursor.h in Headers */,
A7D8BA0023E2514400DCD162 /* SDL_render_sw_c.h in Headers */,
@@ -9769,7 +9729,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_ALTIVEC_EXTENSIONS = YES;
@@ -9810,7 +9770,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.30.0;
MARKETING_VERSION = 2.30.2;
OTHER_LDFLAGS = "-liconv";
};
name = Release;
@@ -9854,7 +9814,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -9896,7 +9856,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.30.0;
MARKETING_VERSION = 2.30.2;
OTHER_LDFLAGS = "-liconv";
};
name = Debug;
@@ -10103,7 +10063,7 @@
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
@@ -10155,7 +10115,7 @@
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
+1 -1
View File
@@ -1,4 +1,4 @@
Title SDL 2.30.0
Title SDL 2.30.2
Version 1
Description SDL Library for Mac OS X (http://www.libsdl.org)
DefaultLocation /Library/Frameworks
@@ -61,7 +61,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
private static final String TAG = "SDL";
private static final int SDL_MAJOR_VERSION = 2;
private static final int SDL_MINOR_VERSION = 30;
private static final int SDL_MICRO_VERSION = 0;
private static final int SDL_MICRO_VERSION = 2;
/*
// Display InputType.SOURCE/CLASS of events and devices
//
@@ -546,13 +546,15 @@ class SDLHapticHandler {
if (haptic == null) {
InputDevice device = InputDevice.getDevice(deviceIds[i]);
Vibrator vib = device.getVibrator();
if (vib.hasVibrator()) {
haptic = new SDLHaptic();
haptic.device_id = deviceIds[i];
haptic.name = device.getName();
haptic.vib = vib;
mHaptics.add(haptic);
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
if (vib != null) {
if (vib.hasVibrator()) {
haptic = new SDLHaptic();
haptic.device_id = deviceIds[i];
haptic.name = device.getName();
haptic.vib = vib;
mHaptics.add(haptic);
SDLControllerManager.nativeAddHaptic(haptic.device_id, haptic.name);
}
}
}
}
Vendored
+13 -1
View File
@@ -3510,7 +3510,7 @@ orig_CFLAGS="$CFLAGS"
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=30
SDL_MICRO_VERSION=0
SDL_MICRO_VERSION=2
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
@@ -19749,6 +19749,18 @@ if test "x$ac_cv_func_poll" = xyes
then :
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
ac_fn_c_check_func "$LINENO" "_Exit" "ac_cv_func__Exit"
if test "x$ac_cv_func__Exit" = xyes
+2 -2
View File
@@ -13,7 +13,7 @@ dnl Set various version strings - taken gratefully from the GTk sources
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=30
SDL_MICRO_VERSION=0
SDL_MICRO_VERSION=2
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
@@ -359,7 +359,7 @@ dnl Checks for library functions.
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_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)
+2
View File
@@ -190,6 +190,8 @@
#cmakedefine HAVE_FOPEN64 1
#cmakedefine HAVE_FSEEKO 1
#cmakedefine HAVE_FSEEKO64 1
#cmakedefine HAVE_MEMFD_CREATE 1
#cmakedefine HAVE_POSIX_FALLOCATE 1
#cmakedefine HAVE_SIGACTION 1
#cmakedefine HAVE_SA_SIGACTION 1
#cmakedefine HAVE_SETJMP 1
+2
View File
@@ -211,6 +211,8 @@
#undef HAVE_GETAUXVAL
#undef HAVE_ELF_AUX_INFO
#undef HAVE_POLL
#undef HAVE_MEMFD_CREATE
#undef HAVE_POSIX_FALLOCATE
#undef HAVE__EXIT
#else
+3 -1
View File
@@ -199,8 +199,10 @@
#undef __GDK__
#define __GDK__ 1
#endif
#if defined(__PSP__)
#if defined(__PSP__) || defined(__psp__)
#ifdef __PSP__
#undef __PSP__
#endif
#define __PSP__ 1
#endif
#if defined(PS2)
+1 -1
View File
@@ -59,7 +59,7 @@ typedef struct SDL_version
*/
#define SDL_MAJOR_VERSION 2
#define SDL_MINOR_VERSION 30
#define SDL_PATCHLEVEL 0
#define SDL_PATCHLEVEL 2
/**
* Macro to determine SDL version program was compiled against.
+80
View File
@@ -125,6 +125,86 @@
#define SDL_HAVE_YUV !SDL_LEAN_AND_MEAN
#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_log.h"
+2 -2
View File
@@ -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)
{
const int num_samples = cvt->len_cvt;
const int num_samples = cvt->len_cvt / sizeof(Sint16);
const Sint16 *src = (const Sint16 *)cvt->buf;
float *dst = (float *)cvt->buf;
int i;
@@ -350,7 +350,7 @@ static void SDLCALL SDL_Convert_S8_to_F32_SSE2(SDL_AudioCVT *cvt, SDL_AudioForma
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 shorts2 = _mm_unpackhi_epi8(bytes, zero);
+44 -45
View File
@@ -31,6 +31,7 @@
#ifdef SDL_USE_LIBUDEV
#include <linux/input.h>
#include <sys/stat.h>
#include "SDL_assert.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)
{
struct udev_enumerate *enumerate = NULL;
struct udev_list_entry *devs = NULL;
struct udev_list_entry *item = NULL;
SDL_bool found = SDL_FALSE;
struct stat statbuf;
char type;
struct udev_device *dev;
const char* val;
int class_temp;
if (!_this) {
return SDL_FALSE;
}
enumerate = _this->syms.udev_enumerate_new(_this->udev);
if (!enumerate) {
SDL_SetError("udev_enumerate_new() failed");
if (stat(device_path, &statbuf) == -1) {
return SDL_FALSE;
}
_this->syms.udev_enumerate_scan_devices(enumerate);
devs = _this->syms.udev_enumerate_get_list_entry(enumerate);
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);
struct udev_device *dev = _this->syms.udev_device_new_from_syspath(_this->udev, path);
if (dev) {
const char *val = NULL;
const char *existing_path;
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);
}
if (S_ISBLK(statbuf.st_mode)) {
type = 'b';
}
else if (S_ISCHR(statbuf.st_mode)) {
type = 'c';
}
else {
return SDL_FALSE;
}
_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)
+1 -11
View File
@@ -36,7 +36,7 @@
#endif
#undef WINVER
#undef _WIN32_WINNT
#if defined(SDL_VIDEO_RENDER_D3D12)
#if SDL_VIDEO_RENDER_D3D12
#define _WIN32_WINNT 0xA00 /* For D3D12, 0xA00 is required */
#elif defined(HAVE_SHELLSCALINGAPI_H)
#define _WIN32_WINNT 0x603 /* For DPI support */
@@ -92,16 +92,6 @@
#include <windows.h>
#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"
/* Routines to convert from UTF8 to native Windows text */
+3 -3
View File
@@ -212,7 +212,7 @@ typedef struct
#endif /* HAVE_XINPUT_H */
/* This struct is not defined in XInput headers. */
typedef struct _XINPUT_CAPABILITIES_EX
typedef struct
{
XINPUT_CAPABILITIES Capabilities;
WORD VendorId;
@@ -220,7 +220,7 @@ typedef struct _XINPUT_CAPABILITIES_EX
WORD ProductVersion;
WORD unk1;
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 */
typedef DWORD(WINAPI *XInputGetState_t)(
@@ -244,7 +244,7 @@ typedef DWORD(WINAPI *XInputGetCapabilitiesEx_t)(
DWORD dwReserved, /* [in] Must be 1 */
DWORD dwUserIndex, /* [in] Index of the gamer associated with the device */
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)(
+2 -2
View File
@@ -58,7 +58,7 @@ extern "C" {
#include "SDL_winrtapp_common.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
* when Windows 8.1 apps are about to get suspended.
*/
@@ -622,7 +622,7 @@ void SDL_WinRTApp::OnSuspending(Platform::Object ^ sender, SuspendingEventArgs ^
// Let the Direct3D 11 renderer prepare for the app to be backgrounded.
// 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
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
if (WINRT_GlobalSDLWindow) {
SDL_Renderer *renderer = SDL_GetRenderer(WINRT_GlobalSDLWindow);
if (renderer && (SDL_strcmp(renderer->info.name, "direct3d11") == 0)) {
+10 -10
View File
@@ -38,7 +38,6 @@
#include <stdio.h>
#include <sys/stat.h>
#endif
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
@@ -525,16 +524,17 @@ static int SDLCALL mem_close(SDL_RWops *context)
/* Functions to create SDL_RWops structures from various data sources */
#if defined(HAVE_STDIO_H) && !(defined(__WIN32__) || defined(__GDK__))
static SDL_bool SDL_IsRegularFile(FILE *f)
static SDL_bool IsRegularFileOrPipe(FILE *f)
{
#ifdef __WINRT__
struct __stat64 st;
if (_fstat64(_fileno(f), &st) < 0 || (st.st_mode & _S_IFMT) != _S_IFREG) {
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)) {
if (fstat(fileno(f), &st) < 0 || !(S_ISREG(st.st_mode) || S_ISFIFO(st.st_mode))) {
return SDL_FALSE;
}
#endif
@@ -555,9 +555,9 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
if (*file == '/') {
FILE *fp = fopen(file, mode);
if (fp) {
if (!SDL_IsRegularFile(fp)) {
if (!IsRegularFileOrPipe(fp)) {
fclose(fp);
SDL_SetError("%s is not a regular file", file);
SDL_SetError("%s is not a regular file or pipe", file);
return NULL;
}
return SDL_RWFromFP(fp, 1);
@@ -575,9 +575,9 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
fp = fopen(path, mode);
SDL_stack_free(path);
if (fp) {
if (!SDL_IsRegularFile(fp)) {
if (!IsRegularFileOrPipe(fp)) {
fclose(fp);
SDL_SetError("%s is not a regular file", path);
SDL_SetError("%s is not a regular file or pipe", path);
return NULL;
}
return SDL_RWFromFP(fp, 1);
@@ -633,10 +633,10 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
#endif
if (!fp) {
SDL_SetError("Couldn't open %s", file);
} else if (!SDL_IsRegularFile(fp)) {
} else if (!IsRegularFileOrPipe(fp)) {
fclose(fp);
fp = NULL;
SDL_SetError("%s is not a regular file", file);
SDL_SetError("%s is not a regular file or pipe", file);
} else {
rwops = SDL_RWFromFP(fp, SDL_TRUE);
}
+9 -7
View File
@@ -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));
break;
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;
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));
@@ -3259,10 +3259,11 @@ const char *SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController
}
SDL_UnlockJoysticks();
return retval;
#else
return NULL;
if (retval && *retval) {
return retval;
}
#endif
return NULL;
}
const char *SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis)
@@ -3279,10 +3280,11 @@ const char *SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *g
}
SDL_UnlockJoysticks();
return retval;
#else
return NULL;
if (retval && *retval) {
return retval;
}
#endif
return NULL;
}
/* vi: set ts=4 sw=4 expandtab: */
+2 -1
View File
@@ -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,",
"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,",
"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,",
"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,",
@@ -317,6 +318,7 @@ 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,",
"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,",
"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,",
"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,",
@@ -858,7 +860,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,",
"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,",
"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: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,",
+29 -17
View File
@@ -293,6 +293,7 @@ static Uint32 initial_flightstick_devices[] = {
MAKE_VIDPID(0x046d, 0xc215), /* Logitech Extreme 3D */
MAKE_VIDPID(0x231d, 0x0126), /* Gunfighter Mk.III ‘Space Combat Edition’ (right) */
MAKE_VIDPID(0x231d, 0x0127), /* Gunfighter Mk.III ‘Space Combat Edition’ (left) */
MAKE_VIDPID(0x362c, 0x0001), /* Yawman Arrow */
};
static SDL_vidpid_list flightstick_devices = {
SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES, 0, 0, NULL,
@@ -381,6 +382,7 @@ static Uint32 initial_wheel_devices[] = {
MAKE_VIDPID(0x0eb7, 0x038e), /* Fanatec ClubSport Wheel Base V1 */
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(0x1209, 0xffb0), /* Generic FFBoard OpenFFBoard universal forcefeedback wheel */
MAKE_VIDPID(0x2433, 0xf300), /* Asetek SimSports Invicta Wheelbase */
MAKE_VIDPID(0x2433, 0xf301), /* Asetek SimSports Forte Wheelbase */
MAKE_VIDPID(0x2433, 0xf303), /* Asetek SimSports La Prima Wheelbase */
@@ -1312,13 +1314,15 @@ const char *SDL_JoystickName(SDL_Joystick *joystick)
const SDL_SteamVirtualGamepadInfo *info;
SDL_LockJoysticks();
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
if (info) {
retval = info->name;
} else {
{
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();
@@ -3101,13 +3105,17 @@ Uint16 SDL_JoystickGetVendor(SDL_Joystick *joystick)
const SDL_SteamVirtualGamepadInfo *info;
SDL_LockJoysticks();
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
if (info) {
vendor = info->vendor_id;
} else {
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
{
CHECK_JOYSTICK_MAGIC(joystick, 0);
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();
@@ -3120,13 +3128,17 @@ Uint16 SDL_JoystickGetProduct(SDL_Joystick *joystick)
const SDL_SteamVirtualGamepadInfo *info;
SDL_LockJoysticks();
info = SDL_GetJoystickInstanceVirtualGamepadInfo(joystick->instance_id);
if (info) {
product = info->product_id;
} else {
SDL_JoystickGUID guid = SDL_JoystickGetGUID(joystick);
{
CHECK_JOYSTICK_MAGIC(joystick, 0);
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();
+1
View File
@@ -221,6 +221,7 @@ SDL_bool SDL_UpdateSteamVirtualGamepadInfo(void)
if (slot >= 0) {
AddVirtualGamepadInfo(slot, &info);
}
SDL_free(info.name);
SDL_free(data);
SDL_steam_virtual_gamepad_info_file_mtime = mtime;
+4
View File
@@ -168,6 +168,10 @@ SDL_bool HIDAPI_SupportsPlaystationDetection(Uint16 vendor, Uint16 product)
}
return SDL_TRUE;
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_TRUE;
case USB_VENDOR_MAYFLASH:
return SDL_TRUE;
+26 -8
View File
@@ -247,6 +247,7 @@ static void CheckControllerSiriRemote(GCController *controller, int *is_siri_rem
*is_siri_remote = 0;
}
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
static BOOL ElementAlreadyHandled(SDL_JoystickDeviceItem *device, NSString *element, NSDictionary<NSString *, GCControllerElement *> *elements)
{
if ([element isEqualToString:@"Left Thumbstick Left"] ||
@@ -345,6 +346,7 @@ static BOOL ElementAlreadyHandled(SDL_JoystickDeviceItem *device, NSString *elem
}
return FALSE;
}
#endif /* ENABLE_PHYSICAL_INPUT_PROFILE */
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 category: %@\n", controller.productCategory);
NSLog(@"Elements available:\n");
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
for (id key in controller.physicalInputProfile.buttons) {
@@ -390,6 +393,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
NSLog(@"\tHat: %@\n", key);
}
}
#endif
#endif
device->is_xbox = IsControllerXbox(controller);
@@ -506,7 +510,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
/* 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) {
GCControllerElement *element;
@@ -523,8 +527,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
}
return NO;
}]];
device->naxes = (int)device->axes.count;
device->buttons = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
NSArray *buttons = [[[elements allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
GCControllerElement *element;
@@ -538,7 +541,12 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
}
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;
#ifdef DEBUG_CONTROLLER_PROFILE
@@ -775,13 +783,20 @@ static SDL_JoystickDeviceItem *IOS_RemoveJoystickDevice(SDL_JoystickDeviceItem *
#ifdef SDL_JOYSTICK_MFI
@autoreleasepool {
/* These were explicitly retained in the struct, so they should be explicitly released before freeing the struct. */
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));
controller.controllerPausedHandler = 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 */
@@ -1109,7 +1124,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
Uint8 hatstate = SDL_HAT_CENTERED;
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 (controller.physicalInputProfile) {
for (id key in controller.physicalInputProfile.buttons) {
@@ -1136,6 +1151,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
}
#endif /* DEBUG_CONTROLLER_STATE */
#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
NSDictionary<NSString *, GCControllerButtonInput *> *buttons = controller.physicalInputProfile.buttons;
@@ -1162,7 +1178,9 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
}
SDL_PrivateJoystickButton(joystick, button++, value);
}
} else if (controller.extendedGamepad) {
} else
#endif
if (controller.extendedGamepad) {
SDL_bool isstack;
GCExtendedGamepad *gamepad = controller.extendedGamepad;
+4 -3
View File
@@ -26,7 +26,8 @@
#include "SDL_stdinc.h"
#include "../SDL_sysjoystick.h"
#include <CoreFoundation/CoreFoundation.h>
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
@class GCController;
@@ -59,8 +60,8 @@ typedef struct joystick_hwdata
SDL_bool is_backbone_one;
int is_siri_remote;
NSArray *axes;
NSArray *buttons;
NSArray __unsafe_unretained *axes;
NSArray __unsafe_unretained *buttons;
SDL_bool has_dualshock_touchpad;
SDL_bool has_xbox_paddles;
+15 -12
View File
@@ -1036,21 +1036,24 @@ static int LINUX_JoystickInit(void)
}
if (enumeration_method == ENUMERATION_LIBUDEV) {
if (SDL_UDEV_Init() < 0) {
return SDL_SetError("Could not initialize UDEV");
}
if (SDL_UDEV_Init() == 0) {
/* Set up the udev callback */
if (SDL_UDEV_AddCallback(joystick_udev_callback) < 0) {
SDL_UDEV_Quit();
return SDL_SetError("Could not set up joystick <-> udev callback");
}
/* Set up the udev callback */
if (SDL_UDEV_AddCallback(joystick_udev_callback) < 0) {
SDL_UDEV_Quit();
return SDL_SetError("Could not set up joystick <-> udev callback");
/* Force a scan to build the initial device list */
SDL_UDEV_Scan();
} else {
SDL_LogDebug(SDL_LOG_CATEGORY_INPUT,
"udev init failed, disabling udev integration");
enumeration_method = ENUMERATION_FALLBACK;
}
/* Force a scan to build the initial device list */
SDL_UDEV_Scan();
} else
}
#endif
{
if (enumeration_method != ENUMERATION_LIBUDEV) {
#if defined(HAVE_INOTIFY)
inotify_fd = SDL_inotify_init1();
+3 -1
View File
@@ -210,7 +210,9 @@ static void PSP_JoystickUpdate(SDL_Joystick *joystick)
static enum PspCtrlButtons old_buttons = 0;
static unsigned char old_x = 0, old_y = 0;
sceCtrlReadBufferPositive(&pad, 1);
if (sceCtrlPeekBufferPositive(&pad, 1) <= 0) {
return;
}
buttons = pad.Buttons;
x = pad.Lx;
y = pad.Ly;
+11 -2
View File
@@ -35,6 +35,15 @@ def find_element(prefix, bindings):
return -1
def get_crc_from_entry(entry):
crc = ""
line = "".join(entry)
bindings = line.split(",")
pos = find_element("crc:", bindings)
if pos >= 0:
crc = bindings[pos][4:]
return crc
def save_controller(line):
global controllers
match = split_pattern.match(line)
@@ -85,7 +94,7 @@ def save_controller(line):
entry.append(match.group(5))
controllers.append(entry)
entry_id = entry[1] + entry[3]
entry_id = entry[1] + get_crc_from_entry(entry)
if ',sdk' in line or ',hint:' in line:
conditionals.append(entry_id)
@@ -94,7 +103,7 @@ def write_controllers():
global controller_guids
# Check for duplicates
for entry in controllers:
entry_id = entry[1] + entry[3]
entry_id = entry[1] + get_crc_from_entry(entry)
if (entry_id in controller_guids and entry_id not in conditionals):
current_name = entry[2]
existing_name = controller_guids[entry_id][2]
+1
View File
@@ -71,6 +71,7 @@
#define USB_PRODUCT_HORI_FIGHTING_STICK_ALPHA_PS5 0x0184
#define USB_PRODUCT_LOGITECH_F310 0xc216
#define USB_PRODUCT_LOGITECH_CHILLSTREAM 0xcad1
#define USB_PRODUCT_MADCATZ_SAITEK_SIDE_PANEL_CONTROL_DECK 0x2218
#define USB_PRODUCT_NACON_REVOLUTION_5_PRO_PS4_WIRELESS 0x0d16
#define USB_PRODUCT_NACON_REVOLUTION_5_PRO_PS4_WIRED 0x0d17
#define USB_PRODUCT_NACON_REVOLUTION_5_PRO_PS5_WIRELESS 0x0d18
+9 -1
View File
@@ -855,6 +855,7 @@ int SDL_DINPUT_JoystickOpen(SDL_Joystick *joystick, JoyStick_DeviceData *joystic
} else if (FAILED(result)) {
return SetDIerror("IDirectInputDevice8::SetProperty", result);
}
joystick->hwdata->first_update = SDL_TRUE;
/* Poll and wait for initial device state to be populated */
result = IDirectInputDevice8_Poll(joystick->hwdata->InputDevice);
@@ -1130,7 +1131,14 @@ void SDL_DINPUT_JoystickUpdate(SDL_Joystick *joystick)
IDirectInputDevice8_Poll(joystick->hwdata->InputDevice);
}
if (joystick->hwdata->buffered) {
if (joystick->hwdata->first_update) {
/* Poll to get the initial state of the joystick */
UpdateDINPUTJoystickState_Polled(joystick);
joystick->hwdata->first_update = SDL_FALSE;
return;
}
if (joystick->hwdata->buffered ) {
UpdateDINPUTJoystickState_Buffered(joystick);
} else {
UpdateDINPUTJoystickState_Polled(joystick);
@@ -77,6 +77,7 @@ struct joystick_hwdata
LPDIRECTINPUTDEVICE8 InputDevice;
DIDEVCAPS Capabilities;
SDL_bool buffered;
SDL_bool first_update;
input_t Inputs[MAX_INPUTS];
int NumInputs;
int NumSliders;
+2 -2
View File
@@ -117,7 +117,7 @@ static const char *GetXInputName(const Uint8 userid, BYTE SubType)
static SDL_bool GetXInputDeviceInfo(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Uint16 *pVersion)
{
XINPUT_CAPABILITIES_EX capabilities;
SDL_XINPUT_CAPABILITIES_EX capabilities;
if (!XINPUTGETCAPABILITIESEX || XINPUTGETCAPABILITIESEX(1, userid, 0, &capabilities) != ERROR_SUCCESS) {
return SDL_FALSE;
@@ -143,7 +143,7 @@ static SDL_bool GetXInputDeviceInfo(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Ui
int SDL_XINPUT_GetSteamVirtualGamepadSlot(Uint8 userid)
{
XINPUT_CAPABILITIES_EX capabilities;
SDL_XINPUT_CAPABILITIES_EX capabilities;
if (XINPUTGETCAPABILITIESEX &&
XINPUTGETCAPABILITIESEX(1, userid, 0, &capabilities) == ERROR_SUCCESS &&
+4 -5
View File
@@ -33,7 +33,7 @@ void SDL_SYS_GetPreferredLocales(char *buf, size_t buflen)
{
/* The 3DS only supports these 12 languages, only one can be active at a time */
static const char AVAILABLE_LOCALES[][6] = { "ja_JP", "en_US", "fr_FR", "de_DE",
"it_IT", "es_ES", "zn_CN", "ko_KR",
"it_IT", "es_ES", "zh_CN", "ko_KR",
"nl_NL", "pt_PT", "ru_RU", "zh_TW" };
u8 current_locale = GetLocaleIndex();
if (current_locale != BAD_LOCALE) {
@@ -45,14 +45,13 @@ SDL_FORCE_INLINE u8
GetLocaleIndex(void)
{
u8 current_locale;
Result result;
if (R_FAILED(cfguInit())) {
return BAD_LOCALE;
}
if (R_FAILED(CFGU_GetSystemLanguage(&current_locale))) {
return BAD_LOCALE;
}
result = CFGU_GetSystemLanguage(&current_locale);
cfguExit();
return current_locale;
return R_SUCCEEDED(result) ? current_locale : BAD_LOCALE;
}
/* vi: set sts=4 ts=4 sw=4 expandtab: */
+4 -4
View File
@@ -9,8 +9,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,30,0,0
PRODUCTVERSION 2,30,0,0
FILEVERSION 2,30,2,0
PRODUCTVERSION 2,30,2,0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS 0x40004L
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "SDL\0"
VALUE "FileVersion", "2, 30, 0, 0\0"
VALUE "FileVersion", "2, 30, 2, 0\0"
VALUE "InternalName", "SDL\0"
VALUE "LegalCopyright", "Copyright (C) 2024 Sam Lantinga\0"
VALUE "OriginalFilename", "SDL2.dll\0"
VALUE "ProductName", "Simple DirectMedia Layer\0"
VALUE "ProductVersion", "2, 30, 0, 0\0"
VALUE "ProductVersion", "2, 30, 2, 0\0"
END
END
BLOCK "VarFileInfo"
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../SDL_internal.h"
#if (defined(SDL_VIDEO_RENDER_D3D) || defined(SDL_VIDEO_RENDER_D3D11) || defined(SDL_VIDEO_RENDER_D3D12)) && !defined(SDL_RENDER_DISABLED)
#if (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12)
#include "SDL_stdinc.h"
#include "SDL_d3dmath.h"
@@ -130,6 +130,6 @@ Float4X4 MatrixRotationZ(float r)
return m;
}
#endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12) && !SDL_RENDER_DISABLED */
#endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12) */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../SDL_internal.h"
#if (defined(SDL_VIDEO_RENDER_D3D) || defined(SDL_VIDEO_RENDER_D3D11) || defined(SDL_VIDEO_RENDER_D3D12)) && !defined(SDL_RENDER_DISABLED)
#if (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12)
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
@@ -78,6 +78,6 @@ Float4X4 MatrixRotationZ(float r);
}
#endif
#endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12) && !SDL_RENDER_DISABLED */
#endif /* (SDL_VIDEO_RENDER_D3D || SDL_VIDEO_RENDER_D3D11 || SDL_VIDEO_RENDER_D3D12) */
/* vi: set ts=4 sw=4 expandtab: */
+28 -14
View File
@@ -91,37 +91,37 @@ this should probably be removed at some point in the future. --ryan. */
#ifndef SDL_RENDER_DISABLED
static const SDL_RenderDriver *render_drivers[] = {
#ifdef SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
&D3D_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_D3D11
#if SDL_VIDEO_RENDER_D3D11
&D3D11_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_D3D12
#if SDL_VIDEO_RENDER_D3D12
&D3D12_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_METAL
#if SDL_VIDEO_RENDER_METAL
&METAL_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_OGL
#if SDL_VIDEO_RENDER_OGL
&GL_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_OGL_ES2
#if SDL_VIDEO_RENDER_OGL_ES2
&GLES2_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_OGL_ES
#if SDL_VIDEO_RENDER_OGL_ES
&GLES_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_DIRECTFB
#if SDL_VIDEO_RENDER_DIRECTFB
&DirectFB_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_PS2
#if SDL_VIDEO_RENDER_PS2
&PS2_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_PSP
#if SDL_VIDEO_RENDER_PSP
&PSP_RenderDriver,
#endif
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
&VITA_GXM_RenderDriver,
#endif
#if SDL_VIDEO_RENDER_SW
@@ -799,6 +799,20 @@ static int SDLCALL SDL_RendererEventWatch(void *userdata, SDL_Event *event)
event->button.y = (int)(event->button.y / (scale.y * renderer->dpi_scale.y));
}
}
} else if (event->type == SDL_MOUSEWHEEL) {
SDL_Window *window = SDL_GetWindowFromID(event->wheel.windowID);
if (window == renderer->window) {
int logical_w, logical_h;
SDL_DRect viewport;
SDL_FPoint scale;
GetWindowViewportValues(renderer, &logical_w, &logical_h, &viewport, &scale);
if (logical_w) {
event->wheel.mouseX -= (int)(viewport.x * renderer->dpi_scale.x);
event->wheel.mouseY -= (int)(viewport.y * renderer->dpi_scale.y);
event->wheel.mouseX = (int)(event->wheel.mouseX / (scale.x * renderer->dpi_scale.x));
event->wheel.mouseY = (int)(event->wheel.mouseY / (scale.y * renderer->dpi_scale.y));
}
}
} else if (event->type == SDL_FINGERDOWN ||
event->type == SDL_FINGERUP ||
event->type == SDL_FINGERMOTION) {
@@ -1108,7 +1122,7 @@ error:
SDL_Renderer *SDL_CreateSoftwareRenderer(SDL_Surface *surface)
{
#if !defined(SDL_RENDER_DISABLED) && SDL_VIDEO_RENDER_SW
#if SDL_VIDEO_RENDER_SW
SDL_Renderer *renderer;
renderer = SW_CreateRendererForSurface(surface);
@@ -1451,7 +1465,7 @@ SDL_Texture *SDL_CreateTextureFromSurface(SDL_Renderer *renderer, SDL_Surface *s
SDL_UpdateTexture(texture, NULL, surface->pixels, surface->pitch);
}
#ifdef SDL_VIDEO_RENDER_DIRECTFB
#if SDL_VIDEO_RENDER_DIRECTFB
/* DirectFB allows palette format for textures.
* Copy SDL_Surface palette to the texture */
if (SDL_ISPIXELFORMAT_INDEXED(format)) {
@@ -2284,7 +2298,7 @@ static int UpdateLogicalSize(SDL_Renderer *renderer, SDL_bool flush_viewport_cmd
hint = SDL_GetHint(SDL_HINT_RENDER_LOGICAL_SIZE_MODE);
if (hint && (*hint == '1' || SDL_strcasecmp(hint, "overscan") == 0)) {
#ifdef SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
SDL_bool overscan_supported = SDL_TRUE;
/* Unfortunately, Direct3D 9 doesn't support negative viewport numbers
which the overscan implementation relies on.
+6 -5
View File
@@ -23,7 +23,7 @@
#include "SDL_render.h"
#include "SDL_system.h"
#if defined(SDL_VIDEO_RENDER_D3D) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D
#include "../../core/windows/SDL_windows.h"
@@ -34,7 +34,7 @@
#include "../SDL_d3dmath.h"
#include "../../video/windows/SDL_windowsvideo.h"
#ifdef SDL_VIDEO_RENDER_D3D
#if SDL_VIDEO_RENDER_D3D
#define D3D_DEBUG_INFO
#include <d3d9.h>
#endif
@@ -1170,6 +1170,7 @@ static int D3D_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
data->drawstate.viewport_dirty = SDL_TRUE;
data->drawstate.cliprect_dirty = SDL_TRUE;
}
break;
}
@@ -1731,7 +1732,7 @@ SDL_RenderDriver D3D_RenderDriver = {
0,
0 }
};
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D */
#if defined(__WIN32__) || defined(__WINGDK__)
/* This function needs to always exist on Windows, for the Dynamic API. */
@@ -1739,7 +1740,7 @@ IDirect3DDevice9 *SDL_RenderGetD3D9Device(SDL_Renderer *renderer)
{
IDirect3DDevice9 *device = NULL;
#if defined(SDL_VIDEO_RENDER_D3D) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D
D3D_RenderData *data = (D3D_RenderData *)renderer->driverdata;
/* Make sure that this is a D3D renderer */
@@ -1752,7 +1753,7 @@ IDirect3DDevice9 *SDL_RenderGetD3D9Device(SDL_Renderer *renderer)
if (device) {
IDirect3DDevice9_AddRef(device);
}
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D */
return device;
}
+2 -2
View File
@@ -23,7 +23,7 @@
#include "SDL_render.h"
#include "SDL_system.h"
#if defined(SDL_VIDEO_RENDER_D3D) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D
#include "../../core/windows/SDL_windows.h"
@@ -268,6 +268,6 @@ HRESULT D3D9_CreatePixelShader(IDirect3DDevice9 *d3dDevice, D3D9_Shader shader,
return IDirect3DDevice9_CreatePixelShader(d3dDevice, D3D9_shaders[shader], pixelShader);
}
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D */
/* vi: set ts=4 sw=4 expandtab: */
+5 -4
View File
@@ -23,7 +23,7 @@
#include "SDL_render.h"
#include "SDL_system.h"
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
#define COBJMACROS
#include "../../core/windows/SDL_windows.h"
@@ -2047,6 +2047,7 @@ static int D3D11_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
rendererData->viewportDirty = SDL_TRUE;
rendererData->cliprectDirty = SDL_TRUE;
}
break;
}
@@ -2415,7 +2416,7 @@ SDL_RenderDriver D3D11_RenderDriver = {
}
};
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D11 */
#if defined(__WIN32__) || defined(__WINGDK__)
/* This function needs to always exist on Windows, for the Dynamic API. */
@@ -2423,7 +2424,7 @@ ID3D11Device *SDL_RenderGetD3D11Device(SDL_Renderer *renderer)
{
ID3D11Device *device = NULL;
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
D3D11_RenderData *data = (D3D11_RenderData *)renderer->driverdata;
/* Make sure that this is a D3D renderer */
@@ -2436,7 +2437,7 @@ ID3D11Device *SDL_RenderGetD3D11Device(SDL_Renderer *renderer)
if (device) {
ID3D11Device_AddRef(device);
}
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D11 */
return device;
}
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
#include "SDL_syswm.h"
#include "../../video/winrt/SDL_winrtvideo_cpp.h"
@@ -109,6 +109,6 @@ D3D11_GetCurrentRotation()
return DXGI_MODE_ROTATION_IDENTITY;
}
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D11 */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
#include "SDL_render.h"
@@ -35,6 +35,6 @@ DXGI_MODE_ROTATION D3D11_GetCurrentRotation();
}
#endif
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D11 */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D11) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D11
#include "SDL_stdinc.h"
@@ -1949,6 +1949,6 @@ int D3D11_CreatePixelShader(ID3D11Device1 *d3dDevice, D3D11_Shader shader, ID3D1
return 0;
}
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D11 */
/* vi: set ts=4 sw=4 expandtab: */
+5 -4
View File
@@ -23,7 +23,7 @@
#include "SDL_render.h"
#include "SDL_system.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D12
#define SDL_D3D12_NUM_BUFFERS 2
#define SDL_D3D12_NUM_VERTEX_BUFFERS 256
@@ -2608,6 +2608,7 @@ static int D3D12_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
rendererData->viewportDirty = SDL_TRUE;
rendererData->cliprectDirty = SDL_TRUE;
}
break;
}
@@ -3055,7 +3056,7 @@ SDL_RenderDriver D3D12_RenderDriver = {
}
#endif
#endif /* SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D12 */
#if defined(__WIN32__) || defined(__GDK__)
#ifdef __cplusplus
@@ -3067,7 +3068,7 @@ extern "C"
{
ID3D12Device *device = NULL;
#if defined(SDL_VIDEO_RENDER_D3D12) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_D3D12
D3D12_RenderData *data = (D3D12_RenderData *)renderer->driverdata;
/* Make sure that this is a D3D renderer */
@@ -3080,7 +3081,7 @@ extern "C"
if (device) {
D3D_CALL(device, AddRef);
}
#endif /* SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_D3D12 */
return device;
}
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && (defined(__XBOXONE__) || defined(__XBOXSERIES__))
#if SDL_VIDEO_RENDER_D3D12 && (defined(__XBOXONE__) || defined(__XBOXSERIES__))
#include "SDL_render_d3d12_xbox.h"
#include "../../core/windows/SDL_windows.h"
#include <XGameRuntime.h>
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_D3D12) && !defined(SDL_RENDER_DISABLED) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
#if SDL_VIDEO_RENDER_D3D12 && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
#include "SDL_stdinc.h"
@@ -6934,6 +6934,6 @@ void D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECO
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif /* SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && !defined(__XBOXONE__) && !defined(__XBOXSERIES__) */
#endif /* SDL_VIDEO_RENDER_D3D12 && !defined(__XBOXONE__) && !defined(__XBOXSERIES__) */
/* vi: set ts=4 sw=4 expandtab: */
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && defined(__XBOXONE__)
#if SDL_VIDEO_RENDER_D3D12 && defined(__XBOXONE__)
#include <SDL_stdinc.h>
@@ -139,6 +139,6 @@ D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *o
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif /* SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && defined(__XBOXONE__) */
#endif /* SDL_VIDEO_RENDER_D3D12 && defined(__XBOXONE__) */
/* vi: set ts=4 sw=4 expandtab: */
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && defined(__XBOXSERIES__)
#if SDL_VIDEO_RENDER_D3D12 && defined(__XBOXSERIES__)
#include <SDL_stdinc.h>
@@ -139,6 +139,6 @@ D3D12_GetRootSignatureData(D3D12_RootSignature rootSig, D3D12_SHADER_BYTECODE *o
outBytecode->BytecodeLength = D3D12_rootsigs[rootSig].rs_shader_size;
}
#endif /* SDL_VIDEO_RENDER_D3D12 && !SDL_RENDER_DISABLED && defined(__XBOXSERIES__) */
#endif /* SDL_VIDEO_RENDER_D3D12 && defined(__XBOXSERIES__) */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_METAL) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_METAL
#include "SDL_hints.h"
#include "SDL_syswm.h"
@@ -1896,6 +1896,6 @@ SDL_RenderDriver METAL_RenderDriver = {
}
};
#endif /* SDL_VIDEO_RENDER_METAL && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_METAL */
/* vi: set ts=4 sw=4 expandtab: */
+3 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_OGL) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_OGL
#include "SDL_hints.h"
#include "../../video/SDL_sysvideo.h" /* For SDL_GL_SwapWindowWithResult */
#include "SDL_opengl.h"
@@ -1224,6 +1224,7 @@ static int GL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, vo
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
data->drawstate.viewport_dirty = SDL_TRUE;
data->drawstate.cliprect_dirty = SDL_TRUE;
}
break;
}
@@ -1969,6 +1970,6 @@ SDL_RenderDriver GL_RenderDriver = {
0 }
};
#endif /* SDL_VIDEO_RENDER_OGL && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_OGL */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_OGL) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_OGL
#include "SDL_stdinc.h"
#include "SDL_opengl.h"
@@ -577,6 +577,6 @@ void GL_DestroyShaderContext(GL_ShaderContext *ctx)
SDL_free(ctx);
}
#endif /* SDL_VIDEO_RENDER_OGL && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_OGL */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_OGL_ES) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_OGL_ES
#include "SDL_hints.h"
#include "../../video/SDL_sysvideo.h" /* For SDL_GL_SwapWindowWithResult */
@@ -1215,6 +1215,6 @@ SDL_RenderDriver GLES_RenderDriver = {
0 }
};
#endif /* SDL_VIDEO_RENDER_OGL_ES && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_OGL_ES */
/* vi: set ts=4 sw=4 expandtab: */
+3 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_OGL_ES2) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_OGL_ES2
#include "SDL_hints.h"
#include "../../video/SDL_sysvideo.h" /* For SDL_GL_SwapWindowWithResult */
@@ -1216,6 +1216,7 @@ static int GLES2_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
data->drawstate.viewport_dirty = SDL_TRUE;
data->drawstate.cliprect_dirty = SDL_TRUE;
}
break;
}
@@ -2244,6 +2245,6 @@ SDL_RenderDriver GLES2_RenderDriver = {
0 }
};
#endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_OGL_ES2 */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if defined(SDL_VIDEO_RENDER_OGL_ES2) && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_OGL_ES2
#include "SDL_hints.h"
#include "SDL_video.h"
@@ -444,6 +444,6 @@ const char *GLES2_GetShader(GLES2_ShaderType type)
}
}
#endif /* SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_OGL_ES2 */
/* vi: set ts=4 sw=4 expandtab: */
+1 -1
View File
@@ -23,7 +23,7 @@
#ifndef SDL_shaders_gles2_h_
#define SDL_shaders_gles2_h_
#if defined(SDL_VIDEO_RENDER_OGL_ES2)
#if SDL_VIDEO_RENDER_OGL_ES2
typedef enum
{
+2 -1
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_PS2
#if SDL_VIDEO_RENDER_PS2
#include "../SDL_sysrender.h"
#include "SDL_hints.h"
@@ -477,6 +477,7 @@ static int PS2_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
case SDL_RENDERCMD_SETVIEWPORT:
{
PS2_RenderSetViewPort(renderer, cmd);
/* FIXME: We need to update the clip rect too, see https://github.com/libsdl-org/SDL/issues/9094 */
break;
}
case SDL_RENDERCMD_SETCLIPRECT:
+2 -1
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_PSP
#if SDL_VIDEO_RENDER_PSP
#include "SDL_hints.h"
#include "../SDL_sysrender.h"
@@ -1053,6 +1053,7 @@ static int PSP_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
sceGuOffset(2048 - (viewport->w >> 1), 2048 - (viewport->h >> 1));
sceGuViewport(2048, 2048, viewport->w, viewport->h);
sceGuScissor(viewport->x, viewport->y, viewport->w, viewport->h);
/* FIXME: We need to update the clip rect too, see https://github.com/libsdl-org/SDL/issues/9094 */
break;
}
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "SDL_draw.h"
#include "SDL_blendfillrect.h"
@@ -343,6 +343,6 @@ int SDL_BlendFillRects(SDL_Surface *dst, const SDL_Rect *rects, int count,
return status;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "SDL_draw.h"
#include "SDL_blendline.h"
@@ -859,6 +859,6 @@ int SDL_BlendLines(SDL_Surface *dst, const SDL_Point *points, int count,
return 0;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "SDL_draw.h"
#include "SDL_blendpoint.h"
@@ -348,6 +348,6 @@ int SDL_BlendPoints(SDL_Surface *dst, const SDL_Point *points, int count,
return status;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "SDL_draw.h"
#include "SDL_drawline.h"
@@ -197,6 +197,6 @@ int SDL_DrawLines(SDL_Surface *dst, const SDL_Point *points, int count,
return 0;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "SDL_draw.h"
#include "SDL_drawpoint.h"
@@ -106,6 +106,6 @@ int SDL_DrawPoints(SDL_Surface *dst, const SDL_Point *points, int count,
return 0;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include "../SDL_sysrender.h"
#include "SDL_render_sw_c.h"
@@ -1093,6 +1093,6 @@ SDL_RenderDriver SW_RenderDriver = {
0}
};
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -2
View File
@@ -30,7 +30,7 @@ Andreas Schiffler -- aschiffler at ferzkopp dot net
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#if defined(__WIN32__) || defined(__GDK__)
#include "../../core/windows/SDL_windows.h"
@@ -617,4 +617,4 @@ SDL_Surface *SDLgfx_rotateSurface(SDL_Surface *src, double angle, int smooth, in
return rz_dst;
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
+2 -2
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#if SDL_VIDEO_RENDER_SW && !defined(SDL_RENDER_DISABLED)
#if SDL_VIDEO_RENDER_SW
#include <limits.h>
@@ -935,6 +935,6 @@ static void SDL_BlitTriangle_Slow(SDL_BlitInfo *info,
TRIANGLE_END_LOOP
}
#endif /* SDL_VIDEO_RENDER_SW && !SDL_RENDER_DISABLED */
#endif /* SDL_VIDEO_RENDER_SW */
/* vi: set ts=4 sw=4 expandtab: */
+2 -1
View File
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
#include "SDL_hints.h"
#include "../SDL_sysrender.h"
@@ -956,6 +956,7 @@ static int VITA_GXM_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *c
if (SDL_memcmp(viewport, &cmd->data.viewport.rect, sizeof(cmd->data.viewport.rect)) != 0) {
SDL_copyp(viewport, &cmd->data.viewport.rect);
data->drawstate.viewport_dirty = SDL_TRUE;
data->drawstate.cliprect_dirty = SDL_TRUE;
}
break;
}
@@ -21,7 +21,7 @@
#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
#include "SDL_render_vita_gxm_memory.h"
@@ -20,7 +20,7 @@
*/
#include "../../SDL_internal.h"
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
#include "SDL_hints.h"
#include "../SDL_sysrender.h"
+5
View File
@@ -24,6 +24,7 @@
#define SDL_sysvideo_h_
#include "SDL_messagebox.h"
#include "SDL_mouse.h"
#include "SDL_shape.h"
#include "SDL_thread.h"
#include "SDL_metal.h"
@@ -529,6 +530,10 @@ extern int SDL_GetPointDisplayIndex(const SDL_Point *point);
extern int SDL_GL_SwapWindowWithResult(SDL_Window *window);
#if defined(SDL_VIDEO_DRIVER_X11) || defined(SDL_VIDEO_DRIVER_WAYLAND) || defined(SDL_VIDEO_DRIVER_EMSCRIPTEN)
const char *SDL_GetCSSCursorName(SDL_SystemCursor id, const char **fallback_name);
#endif
#endif /* SDL_sysvideo_h_ */
/* vi: set ts=4 sw=4 expandtab: */
+89
View File
@@ -4780,4 +4780,93 @@ void SDL_Metal_GetDrawableSize(SDL_Window *window, int *w, int *h)
}
}
#if defined(SDL_VIDEO_DRIVER_X11) || defined(SDL_VIDEO_DRIVER_WAYLAND) || defined(SDL_VIDEO_DRIVER_EMSCRIPTEN)
const char *SDL_GetCSSCursorName(SDL_SystemCursor id, const char **fallback_name)
{
/* Reference: https://www.w3.org/TR/css-ui-4/#cursor */
/* Also in: https://www.freedesktop.org/wiki/Specifications/cursor-spec/ */
switch (id) {
case SDL_SYSTEM_CURSOR_ARROW:
return "default";
case SDL_SYSTEM_CURSOR_IBEAM:
return "text";
case SDL_SYSTEM_CURSOR_WAIT:
return "wait";
case SDL_SYSTEM_CURSOR_CROSSHAIR:
return "crosshair";
case SDL_SYSTEM_CURSOR_WAITARROW:
return "progress";
case SDL_SYSTEM_CURSOR_SIZENWSE:
if (fallback_name) {
/* only a single arrow */
*fallback_name = "nw-resize";
}
return "nwse-resize";
case SDL_SYSTEM_CURSOR_SIZENESW:
if (fallback_name) {
/* only a single arrow */
*fallback_name = "ne-resize";
}
return "nesw-resize";
case SDL_SYSTEM_CURSOR_SIZEWE:
if (fallback_name) {
*fallback_name = "col-resize";
}
return "ew-resize";
case SDL_SYSTEM_CURSOR_SIZENS:
if (fallback_name) {
*fallback_name = "row-resize";
}
return "ns-resize";
case SDL_SYSTEM_CURSOR_SIZEALL:
return "all-scroll";
case SDL_SYSTEM_CURSOR_NO:
return "not-allowed";
case SDL_SYSTEM_CURSOR_HAND:
return "pointer";
#if 0
case SDL_SYSTEM_CURSOR_WINDOW_TOPLEFT:
return "nw-resize";
case SDL_SYSTEM_CURSOR_WINDOW_TOP:
return "n-resize";
case SDL_SYSTEM_CURSOR_WINDOW_TOPRIGHT:
return "ne-resize";
case SDL_SYSTEM_CURSOR_WINDOW_RIGHT:
return "e-resize";
case SDL_SYSTEM_CURSOR_WINDOW_BOTTOMRIGHT:
return "se-resize";
case SDL_SYSTEM_CURSOR_WINDOW_BOTTOM:
return "s-resize";
case SDL_SYSTEM_CURSOR_WINDOW_BOTTOMLEFT:
return "sw-resize";
case SDL_SYSTEM_CURSOR_WINDOW_LEFT:
return "w-resize";
#endif
default:
SDL_assert(0);
return "default";
}
}
#endif
/* vi: set ts=4 sw=4 expandtab: */
+2 -8
View File
@@ -150,10 +150,7 @@ void Android_PumpEvents_Blocking(_THIS)
#endif
/* Make sure SW Keyboard is restored when an app becomes foreground */
if (SDL_IsTextInputActive() &&
SDL_GetHintBoolean(SDL_HINT_ENABLE_SCREEN_KEYBOARD, SDL_TRUE)) {
Android_ShowScreenKeyboard(_this, Android_Window); /* Only showTextInput */
}
Android_RestoreScreenKeyboardOnResume(_this, Android_Window);
}
} else {
if (videodata->isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
@@ -235,10 +232,7 @@ void Android_PumpEvents_NonBlocking(_THIS)
#endif
/* Make sure SW Keyboard is restored when an app becomes foreground */
if (SDL_IsTextInputActive() &&
SDL_GetHintBoolean(SDL_HINT_ENABLE_SCREEN_KEYBOARD, SDL_TRUE)) {
Android_ShowScreenKeyboard(_this, Android_Window); /* Only showTextInput */
}
Android_RestoreScreenKeyboardOnResume(_this, Android_Window);
}
} else {
if (videodata->isPausing || SDL_SemTryWait(Android_PauseSem) == 0) {
+11
View File
@@ -313,6 +313,8 @@ static SDL_Scancode Android_Keycodes[] = {
SDL_SCANCODE_PASTE, /* AKEYCODE_PASTE */
};
static SDL_bool SDL_screen_keyboard_shown;
static SDL_Scancode TranslateKeycode(int keycode)
{
SDL_Scancode scancode = SDL_SCANCODE_UNKNOWN;
@@ -345,11 +347,20 @@ void Android_ShowScreenKeyboard(_THIS, SDL_Window *window)
{
SDL_VideoData *videodata = _this->driverdata;
Android_JNI_ShowScreenKeyboard(&videodata->textRect);
SDL_screen_keyboard_shown = SDL_TRUE;
}
void Android_HideScreenKeyboard(_THIS, SDL_Window *window)
{
Android_JNI_HideScreenKeyboard();
SDL_screen_keyboard_shown = SDL_FALSE;
}
void Android_RestoreScreenKeyboardOnResume(_THIS, SDL_Window *window)
{
if (SDL_screen_keyboard_shown) {
Android_ShowScreenKeyboard(_this, window);
}
}
SDL_bool Android_IsScreenKeyboardShown(_THIS, SDL_Window *window)
+1
View File
@@ -28,6 +28,7 @@ extern int Android_OnKeyUp(int keycode);
extern SDL_bool Android_HasScreenKeyboardSupport(_THIS);
extern void Android_ShowScreenKeyboard(_THIS, SDL_Window *window);
extern void Android_HideScreenKeyboard(_THIS, SDL_Window *window);
extern void Android_RestoreScreenKeyboardOnResume(_THIS, SDL_Window *window);
extern SDL_bool Android_IsScreenKeyboardShown(_THIS, SDL_Window *window);
extern void Android_SetTextInputRect(_THIS, const SDL_Rect *rect);
+25 -11
View File
@@ -460,6 +460,17 @@ static void Cocoa_UpdateClipCursor(SDL_Window * window)
}
}
static NSCursor *Cocoa_GetDesiredCursor(void)
{
SDL_Mouse *mouse = SDL_GetMouse();
if (mouse->cursor_shown && mouse->cur_cursor && !mouse->relative_mode) {
return (__bridge NSCursor *)mouse->cur_cursor->driverdata;
}
return [NSCursor invisibleCursor];
}
@implementation Cocoa_WindowListener
@@ -1323,6 +1334,7 @@ static int Cocoa_SendMouseButtonClicks(SDL_Mouse * mouse, NSEvent *theEvent, SDL
NSPoint point;
int x, y;
SDL_Window *window;
NSView *contentView;
if (!mouse) {
return;
@@ -1330,6 +1342,17 @@ static int Cocoa_SendMouseButtonClicks(SDL_Mouse * mouse, NSEvent *theEvent, SDL
mouseID = mouse->mouseID;
window = _data.window;
contentView = _data.sdlContentView;
point = [theEvent locationInWindow];
if ([contentView mouse:[contentView convertPoint:point fromView:nil] inRect:[contentView bounds]] &&
[NSCursor currentCursor] != Cocoa_GetDesiredCursor()) {
// The wrong cursor is on screen, fix it. This fixes an macOS bug that is only known to
// occur in fullscreen windows on the built-in displays of newer MacBooks with camera
// notches. When the mouse is moved near the top of such a window (within about 44 units)
// and then moved back down, the cursor rects aren't respected.
[_data.nswindow invalidateCursorRectsForView:contentView];
}
if ([self processHitTest:theEvent]) {
SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIT_TEST, 0, 0);
@@ -1340,7 +1363,6 @@ static int Cocoa_SendMouseButtonClicks(SDL_Mouse * mouse, NSEvent *theEvent, SDL
return;
}
point = [theEvent locationInWindow];
x = (int)point.x;
y = (int)(window->h - point.y);
@@ -1590,17 +1612,9 @@ static int Cocoa_SendMouseButtonClicks(SDL_Mouse * mouse, NSEvent *theEvent, SDL
- (void)resetCursorRects
{
SDL_Mouse *mouse;
[super resetCursorRects];
mouse = SDL_GetMouse();
if (mouse->cursor_shown && mouse->cur_cursor && !mouse->relative_mode) {
[self addCursorRect:[self bounds]
cursor:(__bridge NSCursor *)mouse->cur_cursor->driverdata];
} else {
[self addCursorRect:[self bounds]
cursor:[NSCursor invisibleCursor]];
}
[self addCursorRect:[self bounds]
cursor:Cocoa_GetDesiredCursor()];
}
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
+1 -43
View File
@@ -141,49 +141,7 @@ static SDL_Cursor *Emscripten_CreateCursor(SDL_Surface *surface, int hot_x, int
static SDL_Cursor *Emscripten_CreateSystemCursor(SDL_SystemCursor id)
{
const char *cursor_name = NULL;
switch (id) {
case SDL_SYSTEM_CURSOR_ARROW:
cursor_name = "default";
break;
case SDL_SYSTEM_CURSOR_IBEAM:
cursor_name = "text";
break;
case SDL_SYSTEM_CURSOR_WAIT:
cursor_name = "wait";
break;
case SDL_SYSTEM_CURSOR_CROSSHAIR:
cursor_name = "crosshair";
break;
case SDL_SYSTEM_CURSOR_WAITARROW:
cursor_name = "progress";
break;
case SDL_SYSTEM_CURSOR_SIZENWSE:
cursor_name = "nwse-resize";
break;
case SDL_SYSTEM_CURSOR_SIZENESW:
cursor_name = "nesw-resize";
break;
case SDL_SYSTEM_CURSOR_SIZEWE:
cursor_name = "ew-resize";
break;
case SDL_SYSTEM_CURSOR_SIZENS:
cursor_name = "ns-resize";
break;
case SDL_SYSTEM_CURSOR_SIZEALL:
cursor_name = "move";
break;
case SDL_SYSTEM_CURSOR_NO:
cursor_name = "not-allowed";
break;
case SDL_SYSTEM_CURSOR_HAND:
cursor_name = "pointer";
break;
default:
SDL_assert(0);
return NULL;
}
const char *cursor_name = SDL_GetCSSCursorName(id, NULL);
return Emscripten_CreateCursorFromString(cursor_name, SDL_FALSE);
}
@@ -342,6 +342,7 @@ static void Emscripten_SetWindowFullscreen(_THIS, SDL_Window *window, SDL_VideoD
SDL_bool is_desktop_fullscreen = (window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP;
int res;
SDL_zero(strategy);
strategy.scaleMode = is_desktop_fullscreen ? EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH : EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT;
if (!is_desktop_fullscreen) {
+17 -9
View File
@@ -27,6 +27,14 @@ extern "C" {
typedef void CAMetalLayer;
#endif
#define SDL_UNSAFE_UNRETAINED
#if defined(__OBJC__) && defined(__has_feature)
#if __has_feature(objc_arc)
#undef SDL_UNSAFE_UNRETAINED
#define SDL_UNSAFE_UNRETAINED __unsafe_unretained
#endif
#endif
#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface"
typedef VkFlags VkMetalSurfaceCreateFlagsEXT;
@@ -34,7 +42,7 @@ typedef struct VkMetalSurfaceCreateInfoEXT {
VkStructureType sType;
const void* pNext;
VkMetalSurfaceCreateFlagsEXT flags;
const CAMetalLayer* pLayer;
const CAMetalLayer SDL_UNSAFE_UNRETAINED *pLayer;
} VkMetalSurfaceCreateInfoEXT;
typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
@@ -113,27 +121,27 @@ typedef struct VkExportMetalObjectsInfoEXT {
typedef struct VkExportMetalDeviceInfoEXT {
VkStructureType sType;
const void* pNext;
MTLDevice_id mtlDevice;
MTLDevice_id SDL_UNSAFE_UNRETAINED mtlDevice;
} VkExportMetalDeviceInfoEXT;
typedef struct VkExportMetalCommandQueueInfoEXT {
VkStructureType sType;
const void* pNext;
VkQueue queue;
MTLCommandQueue_id mtlCommandQueue;
MTLCommandQueue_id SDL_UNSAFE_UNRETAINED mtlCommandQueue;
} VkExportMetalCommandQueueInfoEXT;
typedef struct VkExportMetalBufferInfoEXT {
VkStructureType sType;
const void* pNext;
VkDeviceMemory memory;
MTLBuffer_id mtlBuffer;
MTLBuffer_id SDL_UNSAFE_UNRETAINED mtlBuffer;
} VkExportMetalBufferInfoEXT;
typedef struct VkImportMetalBufferInfoEXT {
VkStructureType sType;
const void* pNext;
MTLBuffer_id mtlBuffer;
MTLBuffer_id SDL_UNSAFE_UNRETAINED mtlBuffer;
} VkImportMetalBufferInfoEXT;
typedef struct VkExportMetalTextureInfoEXT {
@@ -143,14 +151,14 @@ typedef struct VkExportMetalTextureInfoEXT {
VkImageView imageView;
VkBufferView bufferView;
VkImageAspectFlagBits plane;
MTLTexture_id mtlTexture;
MTLTexture_id SDL_UNSAFE_UNRETAINED mtlTexture;
} VkExportMetalTextureInfoEXT;
typedef struct VkImportMetalTextureInfoEXT {
VkStructureType sType;
const void* pNext;
VkImageAspectFlagBits plane;
MTLTexture_id mtlTexture;
MTLTexture_id SDL_UNSAFE_UNRETAINED mtlTexture;
} VkImportMetalTextureInfoEXT;
typedef struct VkExportMetalIOSurfaceInfoEXT {
@@ -171,13 +179,13 @@ typedef struct VkExportMetalSharedEventInfoEXT {
const void* pNext;
VkSemaphore semaphore;
VkEvent event;
MTLSharedEvent_id mtlSharedEvent;
MTLSharedEvent_id SDL_UNSAFE_UNRETAINED mtlSharedEvent;
} VkExportMetalSharedEventInfoEXT;
typedef struct VkImportMetalSharedEventInfoEXT {
VkStructureType sType;
const void* pNext;
MTLSharedEvent_id mtlSharedEvent;
MTLSharedEvent_id SDL_UNSAFE_UNRETAINED mtlSharedEvent;
} VkImportMetalSharedEventInfoEXT;
typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
+2 -2
View File
@@ -26,13 +26,13 @@
#include "SDL_vitamessagebox.h"
#include <psp2/message_dialog.h>
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
#include "../../render/vitagxm/SDL_render_vita_gxm_tools.h"
#endif /* SDL_VIDEO_RENDER_VITA_GXM */
int VITA_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
{
#ifdef SDL_VIDEO_RENDER_VITA_GXM
#if SDL_VIDEO_RENDER_VITA_GXM
SceMsgDialogParam param;
SceMsgDialogUserMessageParam msgParam;
SceMsgDialogButtonsParam buttonParam;
+28
View File
@@ -994,6 +994,13 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
return;
}
if (input->xkb.keymap != NULL) {
/* if there's already a keymap loaded, throw it away rather than leaking it before
* parsing the new one
*/
WAYLAND_xkb_keymap_unref(input->xkb.keymap);
input->xkb.keymap = NULL;
}
input->xkb.keymap = WAYLAND_xkb_keymap_new_from_string(input->display->xkb_context,
map_str,
XKB_KEYMAP_FORMAT_TEXT_V1,
@@ -1016,6 +1023,13 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
input->xkb.idx_caps = 1 << GET_MOD_INDEX(CAPS);
#undef GET_MOD_INDEX
if (input->xkb.state != NULL) {
/* if there's already a state, throw it away rather than leaking it before
* trying to create a new one with the new keymap.
*/
WAYLAND_xkb_state_unref(input->xkb.state);
input->xkb.state = NULL;
}
input->xkb.state = WAYLAND_xkb_state_new(input->xkb.keymap);
if (!input->xkb.state) {
SDL_SetError("failed to create XKB state\n");
@@ -1061,10 +1075,18 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,
}
/* Set up XKB compose table */
if (input->xkb.compose_table != NULL) {
WAYLAND_xkb_compose_table_unref(input->xkb.compose_table);
input->xkb.compose_table = NULL;
}
input->xkb.compose_table = WAYLAND_xkb_compose_table_new_from_locale(input->display->xkb_context,
locale, XKB_COMPOSE_COMPILE_NO_FLAGS);
if (input->xkb.compose_table) {
/* Set up XKB compose state */
if (input->xkb.compose_state != NULL) {
WAYLAND_xkb_compose_state_unref(input->xkb.compose_state);
input->xkb.compose_state = NULL;
}
input->xkb.compose_state = WAYLAND_xkb_compose_state_new(input->xkb.compose_table,
XKB_COMPOSE_STATE_NO_FLAGS);
if (!input->xkb.compose_state) {
@@ -1299,6 +1321,12 @@ static void keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard,
Wayland_Keymap keymap;
const uint32_t modstate = (mods_depressed | mods_latched | mods_locked);
if (input->xkb.state == NULL) {
/* if we get a modifier notification before the keymap, there's nothing we can do with the information
*/
return;
}
WAYLAND_xkb_state_update_mask(input->xkb.state, mods_depressed, mods_latched,
mods_locked, 0, 0, group);
+110 -65
View File
@@ -23,11 +23,12 @@
#ifdef SDL_VIDEO_DRIVER_WAYLAND
#include <sys/types.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <limits.h>
#include <signal.h>
#include <errno.h>
#include "../SDL_sysvideo.h"
@@ -58,6 +59,7 @@ typedef struct
*/
SDL_SystemCursor system_cursor;
void *shm_data;
size_t shm_data_size;
} Wayland_CursorData;
#ifdef SDL_USE_LIBDBUS
@@ -156,10 +158,35 @@ static SDL_bool wayland_dbus_read_cursor_theme(char **theme)
#endif
static const char *GetLegacyCursorName(SDL_SystemCursor system_cursor)
{
switch (system_cursor) {
case SDL_SYSTEM_CURSOR_ARROW: return "left_ptr";
case SDL_SYSTEM_CURSOR_IBEAM: return "xterm";
case SDL_SYSTEM_CURSOR_WAIT: return "watch";
case SDL_SYSTEM_CURSOR_CROSSHAIR: return "tcross";
case SDL_SYSTEM_CURSOR_WAITARROW: return "watch";
case SDL_SYSTEM_CURSOR_SIZENWSE: return "top_left_corner";
case SDL_SYSTEM_CURSOR_SIZENESW: return "top_right_corner";
case SDL_SYSTEM_CURSOR_SIZEWE: return "sb_h_double_arrow";
case SDL_SYSTEM_CURSOR_SIZENS: return "sb_v_double_arrow";
case SDL_SYSTEM_CURSOR_SIZEALL: return "fleur";
case SDL_SYSTEM_CURSOR_NO: return "pirate";
case SDL_SYSTEM_CURSOR_HAND: return "hand2";
case SDL_NUM_SYSTEM_CURSORS: break; /* so the compiler might notice if an enum value is missing here. */
}
SDL_assert(0);
return NULL;
}
static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorData *cdata, float *scale)
{
struct wl_cursor_theme *theme = NULL;
struct wl_cursor *cursor;
const char *cssname = NULL;
const char *fallback_name = NULL;
char *xcursor_size;
int size = 0;
@@ -231,54 +258,28 @@ static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorDa
}
/* Next, find the cursor from the theme... */
switch (cdata->system_cursor) {
case SDL_SYSTEM_CURSOR_ARROW:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "left_ptr");
break;
case SDL_SYSTEM_CURSOR_IBEAM:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "xterm");
break;
case SDL_SYSTEM_CURSOR_WAIT:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "watch");
break;
case SDL_SYSTEM_CURSOR_CROSSHAIR:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "tcross");
break;
case SDL_SYSTEM_CURSOR_WAITARROW:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "watch");
break;
case SDL_SYSTEM_CURSOR_SIZENWSE:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "top_left_corner");
break;
case SDL_SYSTEM_CURSOR_SIZENESW:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "top_right_corner");
break;
case SDL_SYSTEM_CURSOR_SIZEWE:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "sb_h_double_arrow");
break;
case SDL_SYSTEM_CURSOR_SIZENS:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "sb_v_double_arrow");
break;
case SDL_SYSTEM_CURSOR_SIZEALL:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "fleur");
break;
case SDL_SYSTEM_CURSOR_NO:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "pirate");
break;
case SDL_SYSTEM_CURSOR_HAND:
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "hand2");
break;
default:
SDL_assert(0);
return SDL_FALSE;
cssname = SDL_GetCSSCursorName(cdata->system_cursor, &fallback_name);
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, cssname);
if (!cursor && fallback_name) {
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, fallback_name);
}
/* try the legacy name if the fancy new CSS name doesn't work... */
if (!cursor) {
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, GetLegacyCursorName(cdata->system_cursor));
}
/* Fallback to the default cursor if the chosen one wasn't found */
if (!cursor) {
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "default");
}
/* Try the old X11 name as a last resort */
if (!cursor) {
cursor = WAYLAND_wl_cursor_theme_get_cursor(theme, "left_ptr");
if (!cursor) {
return SDL_FALSE;
}
}
if (!cursor) {
return SDL_FALSE;
}
/* ... Set the cursor data, finally. */
@@ -290,27 +291,72 @@ static SDL_bool wayland_get_system_cursor(SDL_VideoData *vdata, Wayland_CursorDa
return SDL_TRUE;
}
static int wayland_create_tmp_file(off_t size)
static int set_tmp_file_size(int fd, off_t size)
{
static const char template[] = "/sdl-shared-XXXXXX";
char *xdg_path;
char tmp_path[PATH_MAX];
int fd;
#ifdef HAVE_POSIX_FALLOCATE
sigset_t set, old_set;
int ret;
xdg_path = SDL_getenv("XDG_RUNTIME_DIR");
if (!xdg_path) {
return -1;
}
/* SIGALRM can potentially block a large posix_fallocate() operation
* from succeeding, so block it.
*/
sigemptyset(&set);
sigaddset(&set, SIGALRM);
sigprocmask(SIG_BLOCK, &set, &old_set);
do {
ret = posix_fallocate(fd, 0, size);
} while (ret == EINTR);
SDL_strlcpy(tmp_path, xdg_path, PATH_MAX);
SDL_strlcat(tmp_path, template, PATH_MAX);
sigprocmask(SIG_SETMASK, &old_set, NULL);
fd = mkostemp(tmp_path, O_CLOEXEC);
if (fd < 0) {
if (ret == 0) {
return 0;
}
else if (ret != EINVAL && errno != EOPNOTSUPP) {
return -1;
}
#endif
if (ftruncate(fd, size) < 0) {
return -1;
}
return 0;
}
static int wayland_create_tmp_file(off_t size)
{
int fd;
#ifdef HAVE_MEMFD_CREATE
fd = memfd_create("SDL", MFD_CLOEXEC | MFD_ALLOW_SEALING);
if (fd >= 0) {
fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL);
} else
#endif
{
static const char template[] = "/sdl-shared-XXXXXX";
char *xdg_path;
char tmp_path[PATH_MAX];
xdg_path = SDL_getenv("XDG_RUNTIME_DIR");
if (!xdg_path) {
return -1;
}
SDL_strlcpy(tmp_path, xdg_path, PATH_MAX);
SDL_strlcat(tmp_path, template, PATH_MAX);
fd = mkostemp(tmp_path, O_CLOEXEC);
if (fd < 0) {
return -1;
}
/* Need to manually unlink the temp files, or they can persist after close and fill up the temp storage. */
unlink(tmp_path);
}
if (set_tmp_file_size(fd, size) < 0) {
close(fd);
return -1;
}
@@ -334,19 +380,18 @@ static int create_buffer_from_shm(Wayland_CursorData *d,
SDL_VideoDevice *vd = SDL_GetVideoDevice();
SDL_VideoData *data = (SDL_VideoData *)vd->driverdata;
struct wl_shm_pool *shm_pool;
int stride = width * 4;
int size = stride * height;
int shm_fd;
shm_fd = wayland_create_tmp_file(size);
int stride = width * 4;
d->shm_data_size = stride * height;
shm_fd = wayland_create_tmp_file(d->shm_data_size);
if (shm_fd < 0) {
return SDL_SetError("Creating mouse cursor buffer failed.");
}
d->shm_data = mmap(NULL,
size,
d->shm_data_size,
PROT_READ | PROT_WRITE,
MAP_SHARED,
shm_fd,
@@ -359,7 +404,7 @@ static int create_buffer_from_shm(Wayland_CursorData *d,
SDL_assert(d->shm_data != NULL);
shm_pool = wl_shm_create_pool(data->shm, shm_fd, size);
shm_pool = wl_shm_create_pool(data->shm, shm_fd, d->shm_data_size);
d->buffer = wl_shm_pool_create_buffer(shm_pool,
0,
width,
@@ -460,6 +505,7 @@ static void Wayland_FreeCursorData(Wayland_CursorData *d)
if (d->buffer) {
if (d->shm_data) {
wl_buffer_destroy(d->buffer);
munmap(d->shm_data, d->shm_data_size);
}
d->buffer = NULL;
}
@@ -483,7 +529,6 @@ static void Wayland_FreeCursor(SDL_Cursor *cursor)
Wayland_FreeCursorData((Wayland_CursorData *)cursor->driverdata);
/* Not sure what's meant to happen to shm_data */
SDL_free(cursor->driverdata);
SDL_free(cursor);
}
+1 -1
View File
@@ -126,7 +126,7 @@ int Wayland_GLES_SwapWindow(_THIS, SDL_Window *window)
struct wl_display *display = videodata->display;
SDL_VideoDisplay *sdldisplay = SDL_GetDisplayForWindow(window);
/* 1/3 speed (or 20hz), so we'll progress even if throttled to zero. */
const Uint32 max_wait = SDL_GetTicks() + (sdldisplay->current_mode.refresh_rate ? (3000 / sdldisplay->current_mode.refresh_rate) : 50);
const Uint32 max_wait = SDL_GetTicks() + (sdldisplay && sdldisplay->current_mode.refresh_rate ? (3000 / sdldisplay->current_mode.refresh_rate) : 50);
while (SDL_AtomicGet(&data->swap_interval_ready) == 0) {
Uint32 now;
Loaded 100 of 109 files, more files were not shown because too many files have changed in this diff. Show more