Compare commits

...
74 Commits
Author SHA1 Message Date
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
Sam Lantinga 859844eae3 Updated to version 2.30.0 for release 2024-02-01 16:02:20 -08:00
Sam Lantinga 857b9848d2 Don't use the system iconv on Apple mobile platforms
Fixes https://github.com/libsdl-org/SDL/issues/8964

(cherry picked from commit d6a48e4958)
(cherry picked from commit 8eed915dfa)
2024-02-01 15:55:20 -08:00
Sam Lantinga 5f98fcf00b Use the exact motion associated with the warp
When Windows DPI scaling is enabled, the warp coordinates will be modified, so make sure we send exactly the coordinates that the warp attempted.

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

(cherry picked from commit 8ce6fb2513)
2024-01-30 11:13:44 -08:00
Francisco Javier Trujillo Mata 5a492e8196 Fixing viewport
(cherry picked from commit d34a7c5ed2)
2024-01-29 20:44:07 -08:00
Francisco Javier Trujillo Mata 80cb52c944 Fix scissor usage
(cherry picked from commit 36b8438280)
2024-01-29 20:44:07 -08:00
Francisco Javier Trujillo Mata 4436c09c9d Fix color
(cherry picked from commit faa8fc2917)
2024-01-29 20:44:07 -08:00
Ozkan Sezer 23cf7a2e0d autotools: a few libtool updates from mainstream
(cherry picked from commit 971508c0d7)
2024-01-28 21:50:42 +03:00
Sam Lantinga 4a62e1c0ca Updated to version 2.29.3 for RC build 2024-01-27 22:50:08 -08:00
Sam Lantinga 173afd8564 Fixed testautomation log callback calling convention
(cherry picked from commit 9f7eb6c4c1)
(cherry picked from commit c55bd24827)
2024-01-27 22:45:13 -08:00
Ryan C. Gordon f6b9ebb838 wasapi: If GetDeviceBuf can't get a full buffer, go back to waiting.
Reference Issue #8924.

(cherry picked from commit f931b25f4c)
2024-01-28 00:23:40 -05:00
Ryan C. Gordon f1b109005c aaudio: Backport headphone hotplugging support from SDL3.
Fixes #4985.

(cherry picked from commit ec25d6b1e8)
2024-01-28 00:20:34 -05:00
Sam Lantinga 0bd58cd727 Fixed Watcom build
(cherry picked from commit bb30a35364)
2024-01-27 20:29:06 -08:00
Sam Lantinga de1292f8ac Fixed build
(cherry picked from commit 11c932bf1d)
2024-01-27 20:18:59 -08:00
Sam Lantinga a6d5c1fe05 Added the environment variable SDL_LOGGING to control default log output
(cherry picked from commit 12bdb2b4d0)
(cherry picked from commit f0b8fee88f)
2024-01-27 19:46:59 -08:00
Sam Lantinga fc5bd11dac Simplified the default log category logic
Now it's much clearer and easier to tweak the defaults

(cherry picked from commit 4fba663368)
(cherry picked from commit 6ec3f5a28e)
2024-01-27 19:46:59 -08:00
Sam Lantinga e767840874 Document that the default log priority is error, not critical
(cherry picked from commit a7a98d8bbb)
(cherry picked from commit 2c11068569)
2024-01-27 19:46:58 -08:00
Ozkan Sezer fd08ca3823 SDL_rwops.c (SDL_IsRegularFile): fix WinRT build failure due to S_ISREG
(cherry picked from commit fcd1c155cc)
2024-01-28 02:21:01 +03:00
Ozkan Sezer 3bf60755cb SDL_RWFromFile, stdio: reject if the file is not a regular file.
Fixes https://github.com/libsdl-org/SDL/issues/8935
(cherry picked from commit 230ae797a7)
2024-01-28 01:45:10 +03:00
Sam Lantinga aac7d1c2ae Report out of memory instead of crashing in SDL_LoadFile_RW()
Fixes https://github.com/libsdl-org/SDL/issues/8935

(cherry picked from commit 5297596132)
2024-01-27 12:17:04 -08:00
Sam Lantinga 55caed2011 Fixed N3DS build
(cherry picked from commit 332213163c)
2024-01-27 11:56:51 -08:00
Sam Lantinga 53058af284 Enable text input on video initialization without popping up an on-screen keyboard
Fixes https://github.com/libsdl-org/SDL/issues/8561

(cherry picked from commit 4ff3b28273)
2024-01-27 11:54:50 -08:00
Ryan C. Gordon ad1a11164c wasapi: Clamp device->spec.samples to the hardware buffer size.
Reference Issue #8924.
2024-01-26 13:58:38 -05:00
Ryan C. Gordon 5f6a4fe643 blendmode: Corrected docs for SDL_BLENDOPERATION_[REV_]SUBTRACT.
They were documented backwards.

Fixes #8910.

(cherry picked from commit ecbbef8b8d)
2024-01-25 17:49:55 -05:00
Sam Lantinga c85ea238ca Improved timing accuracy of SDL_WaitEventTimeout() on Windows
We don't need to use the hack of setting a timer and waiting for a timer message, MsgWaitForMultipleObjects() will allow us to wait for input directly with a timeout.

Before this change, sleeping for 20 ms would actually sleep for around 30 ms, with this change the sleep time is pretty accurate at 20-21 ms.

(cherry picked from commit 2670eb44af)
(cherry picked from commit 08caafe2f1)
2024-01-25 06:37:34 -08:00
Ningyuan Li 5c0b2d04f4 mayflash adapter PS4 support
(cherry picked from commit d6ebbc2fa4)
(cherry picked from commit 138fe3d43d)
2024-01-24 19:26:44 -08:00
Sam Lantinga 76e64053c3 Make sure we include the matching copy of vk_video headers
(cherry picked from commit 1ac9602909)
(cherry picked from commit b16ef14c7c)
2024-01-24 09:42:22 -08:00
Sam Lantinga ddfa59a52b Update to the latest version of the Khronos headers
(cherry picked from commit fc74bf8455)
(cherry picked from commit 0f5a815657)
2024-01-24 09:42:22 -08:00
Sam Lantinga e3fb974fc7 Fixed ambiguity between std::byte and byte in rpcndr.h
Fixes https://github.com/libsdl-org/SDL/issues/8911

(cherry picked from commit a71f99c71f)
(cherry picked from commit 9196584773)
2024-01-23 09:05:29 -08:00
Ozkan Sezer 9120fbd501 make video/pandora to actually compile somehow.
no one ever maintained it for years..
(cherry picked from commit 48b62e2e57)
2024-01-23 17:50:20 +03:00
Ozkan Sezer 52181848da fixes after ShowMessageBox changes:
- SDL_video.c (SDL_ShowMessageBox): remove C99'ism.
- SDL_os2video.c (OS2DIVE_bootstrap): add OS2_ShowMessageBox
- SDL_os2video.c (OS2VMAN_bootstrap): add OS2_ShowMessageBox
- SDL_DirectFB_video.c (DirectFB_bootstrap): NULL ShowMessageBox
- SDL_naclvideo.c (NACL_bootstrap): NULL ShowMessageBox
(cherry picked from commit 9e352e61db)
2024-01-23 04:12:32 +03:00
Ryan C. Gordon 10cbe04fc5 SDL_ShowMessageBox: Remove #ifdefs and respect SDL_VIDEO_DRIVER hint.
Fixes #8892.

(cherry picked from commit c5c0b2cb34)
2024-01-22 19:46:23 -05:00
Ryan C. Gordon 8367b00e8c aaudio: Set low-latency audio mode.
Note that apparently this has caused some weird-sounding audio
on some Android devices, so we might wrap this in a hint later,
or try to check for specific devices.

Fixes #8888.

(cherry picked from commit 1e016fd5ea)
2024-01-22 18:28:10 -05:00
Ozkan Sezer 4a4f289adc testhaptic.c: include stdlib.h for exit()
(cherry picked from commit aaf426e280)
2024-01-23 01:20:40 +03:00
Frank Praznik 467f1d52e4 wayland: Always create the backing input store, even if there is no seat
Fixes a crash if no seat was available at initialization, but still allows for one to still be created later if an input device is added.

Manual backport of 84e47b4

(cherry picked from commit a8eeb181b6)
2024-01-22 13:02:58 -05:00
166 changed files with 7782 additions and 2259 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 -3
View File
@@ -86,8 +86,8 @@ endif()
# See docs/release_checklist.md
set(SDL_MAJOR_VERSION 2)
set(SDL_MINOR_VERSION 29)
set(SDL_MICRO_VERSION 2)
set(SDL_MINOR_VERSION 30)
set(SDL_MICRO_VERSION 1)
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
# Set defaults preventing destination file conflicts
@@ -241,7 +241,7 @@ endif()
if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA OR PSP OR PS2 OR N3DS)
set(OPT_DEF_LIBC ON)
endif()
if(WINDOWS)
if(WINDOWS OR IOS OR TVOS)
set(SDL_SYSTEM_ICONV_DEFAULT OFF)
else()
set(SDL_SYSTEM_ICONV_DEFAULT ON)
+2 -2
View File
@@ -14,8 +14,8 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 29
MICRO_VERSION = 2
MINOR_VERSION = 30
MICRO_VERSION = 1
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
DESCRIPTION = Simple DirectMedia Layer 2
+2 -2
View File
@@ -5,8 +5,8 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 29
MICRO_VERSION = 2
MINOR_VERSION = 30
MICRO_VERSION = 1
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
LIBHOME = .
@@ -210,6 +210,7 @@
<ClCompile Include="..\..\..\test\testautomation_hints.c" />
<ClCompile Include="..\..\..\test\testautomation_joystick.c" />
<ClCompile Include="..\..\..\test\testautomation_keyboard.c" />
<ClCompile Include="..\..\..\test\testautomation_log.c" />
<ClCompile Include="..\..\..\test\testautomation_main.c" />
<ClCompile Include="..\..\..\test\testautomation_math.c" />
<ClCompile Include="..\..\..\test\testautomation_mouse.c" />
+1
View File
@@ -9,6 +9,7 @@ General:
* Added support for 2 bits-per-pixel indexed surface formats
* Added the function SDL_GameControllerGetSteamHandle() to get the Steam API handle for a controller, if available
* Added the event SDL_CONTROLLERSTEAMHANDLEUPDATED which is sent when the Steam API handle for a controller changes. This could also change the name, VID, and PID of the controller.
* Added the environment variable SDL_LOGGING to control default log output
macOS:
* Added the hint SDL_HINT_JOYSTICK_IOKIT to control whether the IOKit controller driver should be used
+2 -2
View File
@@ -19,10 +19,10 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.29.2</string>
<string>2.30.1</string>
<key>CFBundleSignature</key>
<string>SDLX</string>
<key>CFBundleVersion</key>
<string>2.29.2</string>
<string>2.30.1</string>
</dict>
</plist>
+10 -10
View File
@@ -9768,8 +9768,8 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
DYLIB_CURRENT_VERSION = 2903.0.0;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.1.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_ALTIVEC_EXTENSIONS = YES;
@@ -9810,7 +9810,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.29.2;
MARKETING_VERSION = 2.30.1;
OTHER_LDFLAGS = "-liconv";
};
name = Release;
@@ -9853,8 +9853,8 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
DYLIB_CURRENT_VERSION = 2903.0.0;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.1.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -9896,7 +9896,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.29.2;
MARKETING_VERSION = 2.30.1;
OTHER_LDFLAGS = "-liconv";
};
name = Debug;
@@ -10102,8 +10102,8 @@
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
DYLIB_CURRENT_VERSION = 2903.0.0;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.1.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
@@ -10154,8 +10154,8 @@
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 2903.0.0;
DYLIB_CURRENT_VERSION = 2903.0.0;
DYLIB_COMPATIBILITY_VERSION = 3001.0.0;
DYLIB_CURRENT_VERSION = 3001.1.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.29.2
Title SDL 2.30.1
Version 1
Description SDL Library for Mac OS X (http://www.libsdl.org)
DefaultLocation /Library/Frameworks
+56 -63
View File
@@ -219,8 +219,8 @@ esac
ofile=libtool
can_build_shared=yes
# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
# All known linkers require a '.a' archive for static linking (except MSVC and
# ICC, which need '.lib').
libext=a
with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -1365,7 +1365,7 @@ mips64*-*linux*)
;;
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
# Find out what ABI is being produced by ac_compile, and set linker
# options accordingly. Note that the listed cases only cover the
# situations where additional linker options are needed (such as when
@@ -1380,7 +1380,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
x86_64-*linux*|x86_64-gnu*)
case `/usr/bin/file conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
@@ -1409,7 +1409,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_x86_64_fbsd"
;;
x86_64-*linux*)
x86_64-*linux*|x86_64-gnu*)
LD="${LD-ld} -m elf_x86_64"
;;
powerpcle-*linux*|powerpc64le-*linux*)
@@ -1540,15 +1540,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -1687,7 +1680,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
lt_cv_sys_max_cmd_len=-1;
;;
cygwin* | mingw* | cegcc*)
cygwin* | mingw* | windows* | cegcc*)
# On Win9x/ME, this test blows up -- it succeeds, but takes
# about 5 minutes as the teststring grows exponentially.
# Worse, since 9x/ME are not pre-emptively multitasking,
@@ -1930,7 +1923,7 @@ else
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
mingw* | windows* | pw32* | cegcc*)
lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
@@ -2298,7 +2291,7 @@ if test yes = "$GCC"; then
*) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
*) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
@@ -2356,7 +2349,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
# AWK program above erroneously prepends '/' to C:/dos/paths
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
$SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
@@ -2525,7 +2518,7 @@ bsdi[[45]]*)
# libtool to hard-code these into programs
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
version_type=windows
shrext_cmds=.dll
need_version=no
@@ -2558,7 +2551,7 @@ cygwin* | mingw* | pw32* | cegcc*)
m4_if([$1], [],[
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
;;
mingw* | cegcc*)
mingw* | windows* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
@@ -2571,14 +2564,14 @@ m4_if([$1], [],[
dynamic_linker='Win32 ld.exe'
;;
*,cl*)
# Native MSVC
*,cl* | *,icl*)
# Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
mingw* | windows*)
sys_lib_search_path_spec=
lt_save_ifs=$IFS
IFS=';'
@@ -2628,7 +2621,7 @@ m4_if([$1], [],[
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@@ -3267,7 +3260,7 @@ if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by $CC])
case $host in
*-*-mingw*)
*-*-mingw* | *-*-windows*)
# gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -3376,7 +3369,7 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
if test yes != "$GCC"; then
reload_cmds=false
fi
@@ -3476,7 +3469,7 @@ cygwin*)
lt_cv_deplibs_check_method=pass_all # SDL customization
;;
mingw* | pw32*)
mingw* | windows* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
@@ -3641,7 +3634,7 @@ file_magic_glob=
want_nocaseglob=no
if test "$build" = "$host"; then
case $host_os in
mingw* | pw32*)
mingw* | windows* | pw32*)
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
want_nocaseglob=yes
else
@@ -3693,7 +3686,7 @@ else
# Tru64's nm complains that /dev/null is an invalid object file
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
case $build_os in
mingw*) lt_bad_file=conftest.nm/nofile ;;
mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
@@ -3784,7 +3777,7 @@ lt_cv_sharedlib_from_linklib_cmd,
[lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# two different shell functions defined in ltmain.sh;
# decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
@@ -3929,7 +3922,7 @@ case $host_os in
aix*)
symcode='[[BCDT]]'
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
symcode='[[ABCDGISTW]]'
;;
hpux*)
@@ -4008,7 +4001,7 @@ $lt_c_name_lib_hook\
# Handle CRLF in mingw tool chain
opt_cr=
case $build_os in
mingw*)
mingw* | windows*)
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
;;
esac
@@ -4023,7 +4016,7 @@ for ac_symprfx in "" "_"; do
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Fake it for dumpbin and say T for any non-static function,
# D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK ['"\
" {last_section=section; section=\$ 3};"\
@@ -4235,7 +4228,7 @@ m4_if([$1], [CXX], [
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
mingw* | cygwin* | os2* | pw32* | cegcc*)
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -4311,7 +4304,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
mingw* | cygwin* | os2* | pw32* | cegcc*)
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
m4_if([$1], [GCJ], [],
@@ -4559,7 +4552,7 @@ m4_if([$1], [CXX], [
# PIC is the default for these OSes.
;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -4663,7 +4656,7 @@ m4_if([$1], [CXX], [
esac
;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
m4_if([$1], [GCJ], [],
@@ -4938,9 +4931,9 @@ m4_if([$1], [CXX], [
pw32*)
_LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
;;
cygwin* | mingw* | cegcc*)
cygwin* | mingw* | windows* | cegcc*)
case $cc_basename in
cl*)
cl* | icl*)
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
;;
*)
@@ -4996,16 +4989,16 @@ dnl Note also adjust exclude_expsyms for C++ above.
extract_expsyms_cmds=
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
cygwin* | mingw* | windows* | pw32* | cegcc*)
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
openbsd* | bitrig*)
@@ -5111,7 +5104,7 @@ _LT_EOF
fi
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
# as there is no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
@@ -5568,14 +5561,14 @@ _LT_EOF
_LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
case $cc_basename in
cl*)
# Native MSVC
cl* | icl*)
# Native MSVC or ICC
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=yes
@@ -5585,14 +5578,14 @@ _LT_EOF
# Tell ltmain to make .dll files, not .so files.
shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
_LT_TAGVAR(archive_cmds, $1)='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
cp "$export_symbols" "$output_objdir/$soname.def";
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
else
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
fi~
$CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
$CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
@@ -5616,7 +5609,7 @@ _LT_EOF
fi'
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
# Tell ltmain to make .lib files, not .a files.
@@ -6435,7 +6428,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
GXX=no
@@ -6644,10 +6637,10 @@ if test yes != "$_lt_caught_CXX_error"; then
esac
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
case $GXX,$cc_basename in
,cl* | no,cl*)
# Native MSVC
,cl* | no,cl* | ,icl* | no,icl*)
# Native MSVC or ICC
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
@@ -6811,7 +6804,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -6876,7 +6869,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[[-]]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -7215,7 +7208,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
# FIXME: insert proper C++ library support
@@ -7299,7 +7292,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
else
# g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
@@ -7310,7 +7303,7 @@ if test yes != "$_lt_caught_CXX_error"; then
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[[-]]L"'
fi
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
@@ -8331,7 +8324,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
[case $host in
*-*-mingw* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
;;
*-*-cygwin* )
@@ -8344,7 +8337,7 @@ AC_CACHE_VAL(lt_cv_to_host_file_cmd,
;;
*-*-cygwin* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
;;
*-*-cygwin* )
@@ -8370,9 +8363,9 @@ AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
[#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
*-*-mingw* )
*-*-mingw* | *-*-windows* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
;;
esac
+1 -1
View File
@@ -128,7 +128,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll],
[enable_win32_dll=yes
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
AC_CHECK_TOOL(AS, as, false)
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
AC_CHECK_TOOL(OBJDUMP, objdump, false)
@@ -60,8 +60,8 @@ import java.util.Locale;
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
private static final String TAG = "SDL";
private static final int SDL_MAJOR_VERSION = 2;
private static final int SDL_MINOR_VERSION = 29;
private static final int SDL_MICRO_VERSION = 2;
private static final int SDL_MINOR_VERSION = 30;
private static final int SDL_MICRO_VERSION = 1;
/*
// Display InputType.SOURCE/CLASS of events and devices
//
+51 -37
View File
@@ -2418,7 +2418,7 @@ libtool_validate_options ()
case $host in
# Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
# see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
*cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
*cygwin* | *mingw* | *windows* | *pw32* | *cegcc* | *solaris2* | *os2*)
# don't eliminate duplications in $postdeps and $predeps
opt_duplicate_compiler_generated_deps=:
;;
@@ -2750,7 +2750,7 @@ EOF
# func_convert_core_file_wine_to_w32 ARG
# Helper function used by file name conversion functions when $build is *nix,
# and $host is mingw, cygwin, or some other w32 environment. Relies on a
# and $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
# correctly configured wine environment available, with the winepath program
# in $build's $PATH.
#
@@ -2782,9 +2782,10 @@ func_convert_core_file_wine_to_w32 ()
# func_convert_core_path_wine_to_w32 ARG
# Helper function used by path conversion functions when $build is *nix, and
# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
# configured wine environment available, with the winepath program in $build's
# $PATH. Assumes ARG has no leading or trailing path separator characters.
# $host is mingw, windows, cygwin, or some other w32 environment. Relies on a
# correctly configured wine environment available, with the winepath program
# in $build's $PATH. Assumes ARG has no leading or trailing path separator
# characters.
#
# ARG is path to be converted from $build format to win32.
# Result is available in $func_convert_core_path_wine_to_w32_result.
@@ -3439,7 +3440,7 @@ func_mode_compile ()
# On Cygwin there's no "real" PIC flag so we must build both object types
case $host_os in
cygwin* | mingw* | pw32* | os2* | cegcc*)
cygwin* | mingw* | windows* | pw32* | os2* | cegcc*)
pic_mode=default
;;
esac
@@ -4316,7 +4317,7 @@ func_mode_install ()
'exit $?'
tstripme=$stripme
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
case $realname in
*.dll.a)
tstripme=
@@ -4429,7 +4430,7 @@ func_mode_install ()
# Do a test to see if this is really a libtool program.
case $host in
*cygwin* | *mingw*)
*cygwin* | *mingw* | *windows*)
if func_ltwrapper_executable_p "$file"; then
func_ltwrapper_scriptname "$file"
wrapper=$func_ltwrapper_scriptname_result
@@ -4657,7 +4658,7 @@ extern \"C\" {
$RM $export_symbols
eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
case $host in
*cygwin* | *mingw* | *cegcc* )
*cygwin* | *mingw* | *windows* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
;;
@@ -4669,7 +4670,7 @@ extern \"C\" {
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
eval '$MV "$nlist"T "$nlist"'
case $host in
*cygwin* | *mingw* | *cegcc* )
*cygwin* | *mingw* | *windows* | *cegcc* )
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
;;
@@ -4683,7 +4684,7 @@ extern \"C\" {
func_basename "$dlprefile"
name=$func_basename_result
case $host in
*cygwin* | *mingw* | *cegcc* )
*cygwin* | *mingw* | *windows* | *cegcc* )
# if an import library, we need to obtain dlname
if func_win32_import_lib_p "$dlprefile"; then
func_tr_sh "$dlprefile"
@@ -4858,7 +4859,7 @@ static const void *lt_preloaded_setup() {
# Transform the symbol file into the correct name.
symfileobj=$output_objdir/${my_outputname}S.$objext
case $host in
*cygwin* | *mingw* | *cegcc* )
*cygwin* | *mingw* | *windows* | *cegcc* )
if test -f "$output_objdir/$my_outputname.def"; then
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
@@ -5201,7 +5202,7 @@ func_extract_archives ()
#
# Emit a libtool wrapper script on stdout.
# Don't directly open a file because we may want to
# incorporate the script contents within a cygwin/mingw
# incorporate the script contents within a cygwin/mingw/windows
# wrapper executable. Must ONLY be called from within
# func_mode_link because it depends on a number of variables
# set therein.
@@ -5209,7 +5210,7 @@ func_extract_archives ()
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
# variable will take. If 'yes', then the emitted script
# will assume that the directory where it is stored is
# the $objdir directory. This is a cygwin/mingw-specific
# the $objdir directory. This is a cygwin/mingw/windows-specific
# behavior.
func_emit_wrapper ()
{
@@ -5333,7 +5334,7 @@ func_exec_program_core ()
"
case $host in
# Backslashes separate directories on plain windows
*-*-mingw | *-*-os2* | *-cegcc*)
*-*-mingw* | *-*-windows* | *-*-os2* | *-cegcc*)
$ECHO "\
if test -n \"\$lt_option_debug\"; then
\$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
@@ -5401,7 +5402,7 @@ func_exec_program ()
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
done
# Usually 'no', except on cygwin/mingw when embedded into
# Usually 'no', except on cygwin/mingw/windows when embedded into
# the cwrapper.
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
@@ -5558,7 +5559,7 @@ EOF
/* declarations of non-ANSI functions */
#if defined __MINGW32__
# ifdef __STRICT_ANSI__
int _putenv (const char *);
_CRTIMP int __cdecl _putenv (const char *);
# endif
#elif defined __CYGWIN__
# ifdef __STRICT_ANSI__
@@ -5756,7 +5757,7 @@ main (int argc, char *argv[])
{
EOF
case $host in
*mingw* | *cygwin* )
*mingw* | *windows* | *cygwin* )
# make stdout use "unix" line endings
echo " setmode(1,_O_BINARY);"
;;
@@ -5859,7 +5860,7 @@ EOF
EOF
case $host_os in
mingw*)
mingw* | windows*)
cat <<"EOF"
{
char* p;
@@ -5901,7 +5902,7 @@ EOF
EOF
case $host_os in
mingw*)
mingw* | windows*)
cat <<"EOF"
/* execv doesn't actually work on mingw as expected on unix */
newargz = prepare_spawn (newargz);
@@ -6320,7 +6321,7 @@ lt_update_lib_path (const char *name, const char *value)
EOF
case $host_os in
mingw*)
mingw* | windows*)
cat <<"EOF"
/* Prepares an argument vector before calling spawn().
@@ -6495,7 +6496,7 @@ func_mode_link ()
$debug_cmd
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
# what system we are compiling for in order to pass an extra
@@ -7003,7 +7004,7 @@ func_mode_link ()
;;
esac
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$dir:"*) ;;
@@ -7023,7 +7024,7 @@ func_mode_link ()
-l*)
if test X-lc = "X$arg" || test X-lm = "X$arg"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
# These systems don't actually have a C or math library (as such)
continue
;;
@@ -7118,7 +7119,7 @@ func_mode_link ()
-no-install)
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
# The PATH hackery in wrapper scripts is required on Windows
# and Darwin in order for the loader to find any dlls it needs.
func_warning "'-no-install' is ignored for $host"
@@ -7303,13 +7304,26 @@ func_mode_link ()
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
# -specs=* GCC specs files
# -stdlib=* select c++ std lib with clang
# -fdiagnostics-color* simply affects output
# -frecord-gcc-switches used to verify flags were respected
# -fsanitize=* Clang/GCC memory and address sanitizer
# -fno-sanitize* Clang/GCC memory and address sanitizer
# -shared-libsan Link with shared sanitizer runtimes (Clang)
# -static-libsan Link with static sanitizer runtimes (Clang)
# -fuse-ld=* Linker select flags for GCC
# -rtlib=* select c runtime lib with clang
# --unwindlib=* select unwinder library with clang
# -f{file|debug|macro|profile}-prefix-map=* needed for lto linking
# -Wa,* Pass flags directly to the assembler
# -Werror, -Werror=* Report (specified) warnings as errors
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*)
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*| \
-stdlib=*|-rtlib=*|--unwindlib=*| \
-specs=*|-fsanitize=*|-fno-sanitize*|-shared-libsan|-static-libsan| \
-ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*|-fprofile-prefix-map=*| \
-fdiagnostics-color*|-frecord-gcc-switches| \
-fuse-ld=*|-Wa,*|-Werror|-Werror=*)
func_quote_for_eval "$arg"
arg=$func_quote_for_eval_result
func_append compile_command " $arg"
@@ -8022,7 +8036,7 @@ func_mode_link ()
fi
case $host in
# special handling for platforms with PE-DLLs.
*cygwin* | *mingw* | *cegcc* )
*cygwin* | *mingw* | *windows* | *cegcc* )
# Linker will automatically link against shared library if both
# static and shared are present. Therefore, ensure we extract
# symbols from the import library if a shared library is present
@@ -8166,7 +8180,7 @@ func_mode_link ()
if test -n "$library_names" &&
{ test no = "$use_static_libs" || test -z "$old_library"; }; then
case $host in
*cygwin* | *mingw* | *cegcc* | *os2*)
*cygwin* | *mingw* | *windows* | *cegcc* | *os2*)
# No point in relinking DLLs because paths are not encoded
func_append notinst_deplibs " $lib"
need_relink=no
@@ -8236,7 +8250,7 @@ func_mode_link ()
elif test -n "$soname_spec"; then
# bleh windows
case $host in
*cygwin* | mingw* | *cegcc*) # | *os2* # SDL customization: removed OS/2 versioning support.
*cygwin* | mingw* | *windows* | *cegcc*) # | *os2* # SDL customization: removed OS/2 versioning support.
func_arith $current - $age
major=$func_arith_result
versuffix=-$major
@@ -8845,7 +8859,7 @@ func_mode_link ()
age=$number_minor
revision=$number_revision
;;
freebsd-aout|qnx|sunos)
freebsd-aout|qnx|sco|sunos)
current=$number_major
revision=$number_minor
age=0
@@ -9146,7 +9160,7 @@ func_mode_link ()
if test yes = "$build_libtool_libs"; then
if test -n "$rpath"; then
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
# these systems don't actually have a c library (as such)!
;;
*-*-rhapsody* | *-*-darwin1.[012])
@@ -9660,7 +9674,7 @@ EOF
orig_export_symbols=
case $host_os in
cygwin* | mingw* | cegcc*)
cygwin* | mingw* | windows* | cegcc*)
if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
# exporting using user supplied symfile
func_dll_def_p "$export_symbols" || {
@@ -10330,7 +10344,7 @@ EOF
esac
fi
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-os2* | *-cegcc*)
testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
case :$dllsearchpath: in
*":$libdir:"*) ;;
@@ -10408,7 +10422,7 @@ EOF
# Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
wrappers_required=false
;;
*cygwin* | *mingw* )
*cygwin* | *mingw* | *windows* )
test yes = "$build_libtool_libs" || wrappers_required=false
;;
*)
@@ -10561,7 +10575,7 @@ EOF
*) exeext= ;;
esac
case $host in
*cygwin* | *mingw* )
*cygwin* | *mingw* | windows* )
func_dirname_and_basename "$output" "" "."
output_name=$func_basename_result
output_path=$func_dirname_result
@@ -10893,7 +10907,7 @@ EOF
# tests/bindir.at for full details.
tdlname=$dlname
case $host,$output,$installed,$module,$dlname in
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *windows*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
# If a -bindir argument was supplied, place the dll there.
if test -n "$bindir"; then
func_relative_path "$install_libdir" "$bindir"
Vendored
+66 -73
View File
@@ -3509,8 +3509,8 @@ orig_CFLAGS="$CFLAGS"
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=29
SDL_MICRO_VERSION=2
SDL_MINOR_VERSION=30
SDL_MICRO_VERSION=1
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
@@ -5035,7 +5035,7 @@ if test yes = "$GCC"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
*-*-mingw* | *-*-windows*)
# gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -5162,7 +5162,7 @@ else
# Tru64's nm complains that /dev/null is an invalid object file
# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
case $build_os in
mingw*) lt_bad_file=conftest.nm/nofile ;;
mingw* | windows*) lt_bad_file=conftest.nm/nofile ;;
*) lt_bad_file=/dev/null ;;
esac
case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
@@ -5391,7 +5391,7 @@ else $as_nop
lt_cv_sys_max_cmd_len=-1;
;;
cygwin* | mingw* | cegcc*)
cygwin* | mingw* | windows* | cegcc*)
# On Win9x/ME, this test blows up -- it succeeds, but takes
# about 5 minutes as the teststring grows exponentially.
# Worse, since 9x/ME are not pre-emptively multitasking,
@@ -5555,7 +5555,7 @@ else $as_nop
case $host in
*-*-mingw* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
;;
*-*-cygwin* )
@@ -5568,7 +5568,7 @@ else $as_nop
;;
*-*-cygwin* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
;;
*-*-cygwin* )
@@ -5603,9 +5603,9 @@ else $as_nop
#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
*-*-mingw* )
*-*-mingw* | *-*-windows* )
case $build in
*-*-mingw* ) # actually msys
*-*-mingw* | *-*-windows* ) # actually msys
lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
;;
esac
@@ -5639,7 +5639,7 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
if test yes != "$GCC"; then
reload_cmds=false
fi
@@ -5812,7 +5812,7 @@ cygwin*)
lt_cv_deplibs_check_method=pass_all # SDL customization
;;
mingw* | pw32*)
mingw* | windows* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
# func_win32_libid shell function, so use a weaker test based on 'objdump',
# unless we find 'file', for example because we are cross-compiling.
@@ -5980,7 +5980,7 @@ file_magic_glob=
want_nocaseglob=no
if test "$build" = "$host"; then
case $host_os in
mingw* | pw32*)
mingw* | windows* | pw32*)
if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
want_nocaseglob=yes
else
@@ -6134,7 +6134,7 @@ else $as_nop
lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# two different shell functions defined in ltmain.sh;
# decide which one to use based on capabilities of $DLLTOOL
case `$DLLTOOL --help 2>&1` in
@@ -6572,15 +6572,8 @@ old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
if test -n "$RANLIB"; then
case $host_os in
bitrig* | openbsd*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
;;
*)
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
;;
esac
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
fi
case $host_os in
@@ -6707,7 +6700,7 @@ case $host_os in
aix*)
symcode='[BCDT]'
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
symcode='[ABCDGISTW]'
;;
hpux*)
@@ -6786,7 +6779,7 @@ $lt_c_name_lib_hook\
# Handle CRLF in mingw tool chain
opt_cr=
case $build_os in
mingw*)
mingw* | windows*)
opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
;;
esac
@@ -6801,7 +6794,7 @@ for ac_symprfx in "" "_"; do
if test "$lt_cv_nm_interface" = "MS dumpbin"; then
# Fake it for dumpbin and say T for any non-static function,
# D for any global variable and I for any imported variable.
# Also find C++ and __fastcall symbols from MSVC++,
# Also find C++ and __fastcall symbols from MSVC++ or ICC,
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe="$AWK '"\
" {last_section=section; section=\$ 3};"\
@@ -7235,7 +7228,7 @@ mips64*-*linux*)
;;
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
s390*-*linux*|s390*-*tpf*|sparc*-*linux*|x86_64-gnu*)
# Find out what ABI is being produced by ac_compile, and set linker
# options accordingly. Note that the listed cases only cover the
# situations where additional linker options are needed (such as when
@@ -7254,7 +7247,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_i386_fbsd"
;;
x86_64-*linux*)
x86_64-*linux*|x86_64-gnu*)
case `/usr/bin/file conftest.o` in
*x86-64*)
LD="${LD-ld} -m elf32_x86_64"
@@ -7283,7 +7276,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*kfreebsd*-gnu)
LD="${LD-ld} -m elf_x86_64_fbsd"
;;
x86_64-*linux*)
x86_64-*linux*|x86_64-gnu*)
LD="${LD-ld} -m elf_x86_64"
;;
powerpcle-*linux*|powerpc64le-*linux*)
@@ -8279,7 +8272,7 @@ fi
enable_win32_dll=yes
case $host in
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
*-*-cygwin* | *-*-mingw* | *-*-windows* | *-*-pw32* | *-*-cegcc*)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
set dummy ${ac_tool_prefix}as; ac_word=$2
@@ -8895,8 +8888,8 @@ esac
ofile=libtool
can_build_shared=yes
# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
# All known linkers require a '.a' archive for static linking (except MSVC and
# ICC, which need '.lib').
libext=a
with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -9220,7 +9213,7 @@ lt_prog_compiler_static=
# PIC is the default for these OSes.
;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -9323,7 +9316,7 @@ lt_prog_compiler_static=
esac
;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
mingw* | windows* | cygwin* | pw32* | os2* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
lt_prog_compiler_pic='-DDLL_EXPORT'
@@ -9830,16 +9823,16 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
extract_expsyms_cmds=
case $host_os in
cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
cygwin* | mingw* | windows* | pw32* | cegcc*)
# FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
if test yes != "$GCC"; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
# we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
with_gnu_ld=yes
;;
openbsd* | bitrig*)
@@ -9945,7 +9938,7 @@ _LT_EOF
fi
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
# as there is no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
@@ -10490,14 +10483,14 @@ fi
export_dynamic_flag_spec=-rdynamic
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# Microsoft Visual C++ or Intel C++ Compiler.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
case $cc_basename in
cl*)
# Native MSVC
cl* | icl*)
# Native MSVC or ICC
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
always_export_symbols=yes
@@ -10507,14 +10500,14 @@ fi
# Tell ltmain to make .dll files, not .so files.
shrext_cmds=.dll
# FIXME: Setting linknames here is a bad hack.
archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
archive_cmds='$CC -Fe $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then
cp "$export_symbols" "$output_objdir/$soname.def";
echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
else
$SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
fi~
$CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
$CC -Fe $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
linknames='
# The linker will not automatically build a static lib if we build a DLL.
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
@@ -10538,7 +10531,7 @@ fi
fi'
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
hardcode_libdir_flag_spec=' '
allow_undefined_flag=unsupported
# Tell ltmain to make .lib files, not .a files.
@@ -11304,7 +11297,7 @@ if test yes = "$GCC"; then
*) lt_awk_arg='/^libraries:/' ;;
esac
case $host_os in
mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
mingw* | windows* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
*) lt_sed_strip_eq='s|=/|/|g' ;;
esac
lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
@@ -11362,7 +11355,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
# AWK program above erroneously prepends '/' to C:/dos/paths
# for these hosts.
case $host_os in
mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
mingw* | windows* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
$SED 's|/\([A-Za-z]:\)|\1|g'` ;;
esac
sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
@@ -11530,7 +11523,7 @@ bsdi[45]*)
# libtool to hard-code these into programs
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
version_type=windows
shrext_cmds=.dll
need_version=no
@@ -11563,7 +11556,7 @@ cygwin* | mingw* | pw32* | cegcc*)
sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
;;
mingw* | cegcc*)
mingw* | windows* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
@@ -11576,14 +11569,14 @@ cygwin* | mingw* | pw32* | cegcc*)
dynamic_linker='Win32 ld.exe'
;;
*,cl*)
# Native MSVC
*,cl* | *,icl*)
# Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
mingw* | windows*)
sys_lib_search_path_spec=
lt_save_ifs=$IFS
IFS=';'
@@ -11633,7 +11626,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
@@ -12303,7 +12296,7 @@ else
lt_cv_dlopen_self=yes
;;
mingw* | pw32* | cegcc*)
mingw* | windows* | pw32* | cegcc*)
lt_cv_dlopen=LoadLibrary
lt_cv_dlopen_libs=
;;
@@ -14579,7 +14572,7 @@ if test yes = "$GCC"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
*-*-mingw* | *-*-windows*)
# gcc leaves a trailing carriage return, which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
@@ -14713,7 +14706,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
else
GXX=no
@@ -15011,10 +15004,10 @@ fi
esac
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
case $GXX,$cc_basename in
,cl* | no,cl*)
# Native MSVC
,cl* | no,cl* | ,icl* | no,icl*)
# Native MSVC or ICC
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec_CXX=' '
@@ -15210,7 +15203,7 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "[-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -15275,7 +15268,7 @@ fi
# explicitly linking system object files so we need to strip them
# from the output so that they don't get included in the library
# dependencies.
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "[-]L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
;;
*)
if test yes = "$GXX"; then
@@ -15614,7 +15607,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
else
# FIXME: insert proper C++ library support
@@ -15698,7 +15691,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
else
# g++ 2.7 appears to require '-G' NOT '-shared' on this
# platform.
@@ -15709,7 +15702,7 @@ fi
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
# linking a shared library.
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "[-]L"'
fi
hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
@@ -16023,7 +16016,7 @@ lt_prog_compiler_static_CXX=
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
mingw* | cygwin* | os2* | pw32* | cegcc*)
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
# Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -16098,7 +16091,7 @@ lt_prog_compiler_static_CXX=
;;
esac
;;
mingw* | cygwin* | os2* | pw32* | cegcc*)
mingw* | windows* | cygwin* | os2* | pw32* | cegcc*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
@@ -16592,9 +16585,9 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
pw32*)
export_symbols_cmds_CXX=$ltdll_cmds
;;
cygwin* | mingw* | cegcc*)
cygwin* | mingw* | windows* | cegcc*)
case $cc_basename in
cl*)
cl* | icl*)
exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
;;
*)
@@ -16914,7 +16907,7 @@ bsdi[45]*)
# libtool to hard-code these into programs
;;
cygwin* | mingw* | pw32* | cegcc*)
cygwin* | mingw* | windows* | pw32* | cegcc*)
version_type=windows
shrext_cmds=.dll
need_version=no
@@ -16946,7 +16939,7 @@ cygwin* | mingw* | pw32* | cegcc*)
soname_spec='`echo $libname | sed -e 's/^lib//'`$shared_ext' # SDL customization
;;
mingw* | cegcc*)
mingw* | windows* | cegcc*)
# MinGW DLLs use traditional 'lib' prefix
#soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
soname_spec='`echo $libname | $SED -e 's/^lib//'`$shared_ext' # SDL customization
@@ -16959,14 +16952,14 @@ cygwin* | mingw* | pw32* | cegcc*)
dynamic_linker='Win32 ld.exe'
;;
*,cl*)
# Native MSVC
*,cl* | *,icl*)
# Native MSVC or ICC
libname_spec='$name'
soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
library_names_spec='$libname.dll.lib'
case $build_os in
mingw*)
mingw* | windows*)
sys_lib_search_path_spec=
lt_save_ifs=$IFS
IFS=';'
@@ -17016,7 +17009,7 @@ cygwin* | mingw* | pw32* | cegcc*)
;;
*)
# Assume MSVC wrapper
# Assume MSVC and ICC wrapper
library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
dynamic_linker='Win32 ld.exe'
;;
+2 -2
View File
@@ -12,8 +12,8 @@ orig_CFLAGS="$CFLAGS"
dnl Set various version strings - taken gratefully from the GTk sources
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=29
SDL_MICRO_VERSION=2
SDL_MINOR_VERSION=30
SDL_MICRO_VERSION=1
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
+2 -2
View File
@@ -65,8 +65,8 @@ typedef enum
typedef enum
{
SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
} SDL_BlendOperation;
+16
View File
@@ -1282,6 +1282,22 @@ extern "C" {
*/
#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
/**
* \brief A variable controlling the default SDL log levels.
*
* This variable is a comma separated set of category=level tokens that define the default logging levels for SDL applications.
*
* The category can be a numeric category, one of "app", "error", "assert", "system", "audio", "video", "render", "input", "test", or `*` for any unspecified category.
*
* The level can be a numeric level, one of "verbose", "debug", "info", "warn", "error", "critical", or "quiet" to disable that category.
*
* You can omit the category if you want to set the logging level for all categories.
*
* If this hint isn't set, the default log levels are equivalent to:
* "app=info,assert=warn,test=verbose,*=error"
*/
#define SDL_HINT_LOGGING "SDL_LOGGING"
/**
* \brief When set don't force the SDL app to become a foreground process
*
+1 -1
View File
@@ -59,7 +59,7 @@ extern "C" {
* By default the application category is enabled at the INFO level,
* the assert category is enabled at the WARN level, test is enabled
* at the VERBOSE level and all other categories are enabled at the
* CRITICAL level.
* ERROR level.
*/
typedef enum
{
+2 -2
View File
@@ -58,8 +58,8 @@ typedef struct SDL_version
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
*/
#define SDL_MAJOR_VERSION 2
#define SDL_MINOR_VERSION 29
#define SDL_PATCHLEVEL 2
#define SDL_MINOR_VERSION 30
#define SDL_PATCHLEVEL 1
/**
* 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"
+134 -28
View File
@@ -28,6 +28,7 @@
#include "SDL_error.h"
#include "SDL_log.h"
#include "SDL_hints.h"
#include "SDL_mutex.h"
#include "SDL_log_c.h"
@@ -44,10 +45,7 @@
/* The size of the stack buffer to use for rendering log messages. */
#define SDL_MAX_LOG_MESSAGE_STACK 256
#define DEFAULT_PRIORITY SDL_LOG_PRIORITY_CRITICAL
#define DEFAULT_ASSERT_PRIORITY SDL_LOG_PRIORITY_WARN
#define DEFAULT_APPLICATION_PRIORITY SDL_LOG_PRIORITY_INFO
#define DEFAULT_TEST_PRIORITY SDL_LOG_PRIORITY_VERBOSE
#define DEFAULT_CATEGORY -1
typedef struct SDL_LogLevel
{
@@ -60,15 +58,14 @@ typedef struct SDL_LogLevel
static void SDLCALL SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message);
static SDL_LogLevel *SDL_loglevels;
static SDL_LogPriority SDL_default_priority = DEFAULT_PRIORITY;
static SDL_LogPriority SDL_assert_priority = DEFAULT_ASSERT_PRIORITY;
static SDL_LogPriority SDL_application_priority = DEFAULT_APPLICATION_PRIORITY;
static SDL_LogPriority SDL_test_priority = DEFAULT_TEST_PRIORITY;
static SDL_bool SDL_forced_priority = SDL_FALSE;
static SDL_LogPriority SDL_forced_priority_level;
static SDL_LogOutputFunction SDL_log_function = SDL_LogOutput;
static void *SDL_log_userdata = NULL;
static SDL_mutex *log_function_mutex = NULL;
static const char *SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES] = {
/* If this list changes, update the documentation for SDL_HINT_LOGGING */
static const char *SDL_priority_prefixes[] = {
NULL,
"VERBOSE",
"DEBUG",
@@ -77,8 +74,9 @@ static const char *SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES] = {
"ERROR",
"CRITICAL"
};
SDL_COMPILE_TIME_ASSERT(priority_prefixes, SDL_arraysize(SDL_priority_prefixes) == SDL_NUM_LOG_PRIORITIES);
#ifdef __ANDROID__
/* If this list changes, update the documentation for SDL_HINT_LOGGING */
static const char *SDL_category_prefixes[] = {
"APP",
"ERROR",
@@ -90,9 +88,9 @@ static const char *SDL_category_prefixes[] = {
"INPUT",
"TEST"
};
SDL_COMPILE_TIME_ASSERT(category_prefixes, SDL_arraysize(SDL_category_prefixes) == SDL_LOG_CATEGORY_RESERVED1);
SDL_COMPILE_TIME_ASSERT(category_prefixes_enum, SDL_TABLESIZE(SDL_category_prefixes) == SDL_LOG_CATEGORY_RESERVED1);
#ifdef __ANDROID__
static int SDL_android_priority[SDL_NUM_LOG_PRIORITIES] = {
ANDROID_LOG_UNKNOWN,
ANDROID_LOG_VERBOSE,
@@ -128,9 +126,9 @@ void SDL_LogSetAllPriority(SDL_LogPriority priority)
for (entry = SDL_loglevels; entry; entry = entry->next) {
entry->priority = priority;
}
SDL_default_priority = priority;
SDL_assert_priority = priority;
SDL_application_priority = priority;
SDL_forced_priority = SDL_TRUE;
SDL_forced_priority_level = priority;
}
void SDL_LogSetPriority(int category, SDL_LogPriority priority)
@@ -154,6 +152,122 @@ void SDL_LogSetPriority(int category, SDL_LogPriority priority)
}
}
static SDL_bool SDL_ParseLogCategory(const char *string, size_t length, int *category)
{
int i;
if (SDL_isdigit(*string)) {
*category = SDL_atoi(string);
return SDL_TRUE;
}
if (*string == '*') {
*category = DEFAULT_CATEGORY;
return SDL_TRUE;
}
for (i = 0; i < SDL_arraysize(SDL_category_prefixes); ++i) {
if (SDL_strncasecmp(string, SDL_category_prefixes[i], length) == 0) {
*category = i;
return SDL_TRUE;
}
}
return SDL_FALSE;
}
static SDL_bool SDL_ParseLogPriority(const char *string, size_t length, SDL_LogPriority *priority)
{
int i;
if (SDL_isdigit(*string)) {
i = SDL_atoi(string);
if (i == 0) {
/* 0 has a special meaning of "disable this category" */
*priority = SDL_NUM_LOG_PRIORITIES;
return SDL_TRUE;
}
if (i >= SDL_LOG_PRIORITY_VERBOSE && i < SDL_NUM_LOG_PRIORITIES) {
*priority = (SDL_LogPriority)i;
return SDL_TRUE;
}
return SDL_FALSE;
}
if (SDL_strncasecmp(string, "quiet", length) == 0) {
*priority = SDL_NUM_LOG_PRIORITIES;
return SDL_TRUE;
}
for (i = SDL_LOG_PRIORITY_VERBOSE; i < SDL_NUM_LOG_PRIORITIES; ++i) {
if (SDL_strncasecmp(string, SDL_priority_prefixes[i], length) == 0) {
*priority = (SDL_LogPriority)i;
return SDL_TRUE;
}
}
return SDL_FALSE;
}
static SDL_bool SDL_ParseLogCategoryPriority(const char *hint, int category, SDL_LogPriority *priority)
{
const char *name, *next;
int current_category;
if (category == DEFAULT_CATEGORY && SDL_strchr(hint, '=') == NULL) {
return SDL_ParseLogPriority(hint, SDL_strlen(hint), priority);
}
for (name = hint; name; name = next) {
const char *sep = SDL_strchr(name, '=');
if (!sep) {
break;
}
next = SDL_strchr(sep, ',');
if (next) {
++next;
}
if (SDL_ParseLogCategory(name, (sep - name), &current_category)) {
if (current_category == category) {
const char *value = sep + 1;
size_t len;
if (next) {
len = (next - value - 1);
} else {
len = SDL_strlen(value);
}
return SDL_ParseLogPriority(value, len, priority);
}
}
}
return SDL_FALSE;
}
static SDL_LogPriority SDL_GetDefaultLogPriority(int category)
{
const char *hint = SDL_GetHint(SDL_HINT_LOGGING);
if (hint) {
SDL_LogPriority priority;
if (SDL_ParseLogCategoryPriority(hint, category, &priority)) {
return priority;
}
if (SDL_ParseLogCategoryPriority(hint, DEFAULT_CATEGORY, &priority)) {
return priority;
}
}
switch (category) {
case SDL_LOG_CATEGORY_APPLICATION:
return SDL_LOG_PRIORITY_INFO;
case SDL_LOG_CATEGORY_ASSERT:
return SDL_LOG_PRIORITY_WARN;
case SDL_LOG_CATEGORY_TEST:
return SDL_LOG_PRIORITY_VERBOSE;
default:
return SDL_LOG_PRIORITY_ERROR;
}
}
SDL_LogPriority SDL_LogGetPriority(int category)
{
SDL_LogLevel *entry;
@@ -164,15 +278,11 @@ SDL_LogPriority SDL_LogGetPriority(int category)
}
}
if (category == SDL_LOG_CATEGORY_TEST) {
return SDL_test_priority;
} else if (category == SDL_LOG_CATEGORY_APPLICATION) {
return SDL_application_priority;
} else if (category == SDL_LOG_CATEGORY_ASSERT) {
return SDL_assert_priority;
} else {
return SDL_default_priority;
if (SDL_forced_priority) {
return SDL_forced_priority_level;
}
return SDL_GetDefaultLogPriority(category);
}
void SDL_LogResetPriorities(void)
@@ -184,11 +294,7 @@ void SDL_LogResetPriorities(void)
SDL_loglevels = entry->next;
SDL_free(entry);
}
SDL_default_priority = DEFAULT_PRIORITY;
SDL_assert_priority = DEFAULT_ASSERT_PRIORITY;
SDL_application_priority = DEFAULT_APPLICATION_PRIORITY;
SDL_test_priority = DEFAULT_TEST_PRIORITY;
SDL_forced_priority = SDL_FALSE;
}
void SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...)
+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);
+107 -12
View File
@@ -102,25 +102,21 @@ static int aaudio_OpenDevice(_THIS, const char *devname)
ctx.AAudioStreamBuilder_setSampleRate(ctx.builder, this->spec.freq);
ctx.AAudioStreamBuilder_setChannelCount(ctx.builder, this->spec.channels);
if(devname) {
int aaudio_device_id = SDL_atoi(devname);
LOGI("Opening device id %d", aaudio_device_id);
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, aaudio_device_id);
private->devid = SDL_atoi(devname);
LOGI("Opening device id %d", private->devid);
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, private->devid);
}
{
aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
const aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
ctx.AAudioStreamBuilder_setDirection(ctx.builder, direction);
}
{
aaudio_format_t format = AAUDIO_FORMAT_PCM_FLOAT;
if (this->spec.format == AUDIO_S16SYS) {
format = AAUDIO_FORMAT_PCM_I16;
} else if (this->spec.format == AUDIO_S16SYS) {
format = AAUDIO_FORMAT_PCM_FLOAT;
}
const aaudio_format_t format = (this->spec.format == AUDIO_S16SYS) ? AAUDIO_FORMAT_PCM_I16 : AAUDIO_FORMAT_PCM_FLOAT;
ctx.AAudioStreamBuilder_setFormat(ctx.builder, format);
}
ctx.AAudioStreamBuilder_setErrorCallback(ctx.builder, aaudio_errorCallback, private);
ctx.AAudioStreamBuilder_setPerformanceMode(ctx.builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
LOGI("AAudio Try to open %u hz %u bit chan %u %s samples %u",
this->spec.freq, SDL_AUDIO_BITSIZE(this->spec.format),
@@ -211,6 +207,97 @@ static Uint8 *aaudio_GetDeviceBuf(_THIS)
return private->mixbuf;
}
/* Try to reestablish an AAudioStream.
This needs to get a stream with the same format as the previous one,
even if this means AAudio needs to handle a conversion it didn't when
we initially opened the device. If we can't get that, we are forced
to give up here.
(This is more robust in SDL3, which is designed to handle
abrupt format changes.)
*/
static int RebuildAAudioStream(SDL_AudioDevice *device)
{
struct SDL_PrivateAudioData *hidden = device->hidden;
const SDL_bool iscapture = device->iscapture;
aaudio_result_t res;
ctx.AAudioStreamBuilder_setSampleRate(ctx.builder, device->spec.freq);
ctx.AAudioStreamBuilder_setChannelCount(ctx.builder, device->spec.channels);
if(hidden->devid) {
LOGI("Reopening device id %d", hidden->devid);
ctx.AAudioStreamBuilder_setDeviceId(ctx.builder, hidden->devid);
}
{
const aaudio_direction_t direction = (iscapture ? AAUDIO_DIRECTION_INPUT : AAUDIO_DIRECTION_OUTPUT);
ctx.AAudioStreamBuilder_setDirection(ctx.builder, direction);
}
{
const aaudio_format_t format = (device->spec.format == AUDIO_S16SYS) ? AAUDIO_FORMAT_PCM_I16 : AAUDIO_FORMAT_PCM_FLOAT;
ctx.AAudioStreamBuilder_setFormat(ctx.builder, format);
}
ctx.AAudioStreamBuilder_setErrorCallback(ctx.builder, aaudio_errorCallback, hidden);
ctx.AAudioStreamBuilder_setPerformanceMode(ctx.builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
LOGI("AAudio Try to reopen %u hz %u bit chan %u %s samples %u",
device->spec.freq, SDL_AUDIO_BITSIZE(device->spec.format),
device->spec.channels, (device->spec.format & 0x1000) ? "BE" : "LE", device->spec.samples);
res = ctx.AAudioStreamBuilder_openStream(ctx.builder, &hidden->stream);
if (res != AAUDIO_OK) {
LOGI("SDL Failed AAudioStreamBuilder_openStream %d", res);
return SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
}
{
const aaudio_format_t fmt = ctx.AAudioStream_getFormat(hidden->stream);
SDL_AudioFormat sdlfmt = (SDL_AudioFormat) 0;
if (fmt == AAUDIO_FORMAT_PCM_I16) {
sdlfmt = AUDIO_S16SYS;
} else if (fmt == AAUDIO_FORMAT_PCM_FLOAT) {
sdlfmt = AUDIO_F32SYS;
}
/* We handle this better in SDL3, but this _needs_ to match the previous stream for SDL2. */
if ( (device->spec.freq != ctx.AAudioStream_getSampleRate(hidden->stream)) ||
(device->spec.channels != ctx.AAudioStream_getChannelCount(hidden->stream)) ||
(device->spec.format != sdlfmt) ) {
LOGI("Didn't get an identical spec from AAudioStream during reopen!");
ctx.AAudioStream_close(hidden->stream);
hidden->stream = NULL;
return SDL_SetError("Didn't get an identical spec from AAudioStream during reopen!");
}
}
res = ctx.AAudioStream_requestStart(hidden->stream);
if (res != AAUDIO_OK) {
LOGI("SDL Failed AAudioStream_requestStart %d iscapture:%d", res, iscapture);
return SDL_SetError("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
}
return 0;
}
static int RecoverAAudioDevice(SDL_AudioDevice *device)
{
struct SDL_PrivateAudioData *hidden = device->hidden;
AAudioStream *stream = hidden->stream;
/* attempt to build a new stream, in case there's a new default device. */
hidden->stream = NULL;
ctx.AAudioStream_requestStop(stream);
ctx.AAudioStream_close(stream);
if (RebuildAAudioStream(device) < 0) {
return -1; // oh well, we tried.
}
return 0;
}
static void aaudio_PlayDevice(_THIS)
{
struct SDL_PrivateAudioData *private = this->hidden;
@@ -219,6 +306,9 @@ static void aaudio_PlayDevice(_THIS)
res = ctx.AAudioStream_write(private->stream, private->mixbuf, private->mixlen / private->frame_size, timeoutNanoseconds);
if (res < 0) {
LOGI("%s : %s", __func__, ctx.AAudio_convertResultToText(res));
if (RecoverAAudioDevice(this) < 0) {
return; /* oh well, we went down hard. */
}
} else {
LOGI("SDL AAudio play: %d frames, wanted:%d frames", (int)res, private->mixlen / private->frame_size);
}
@@ -407,6 +497,7 @@ void aaudio_ResumeDevices(void)
*/
SDL_bool aaudio_DetectBrokenPlayState(void)
{
AAudioStream *stream;
struct SDL_PrivateAudioData *private;
int64_t framePosition, timeNanoseconds;
aaudio_result_t res;
@@ -416,10 +507,14 @@ SDL_bool aaudio_DetectBrokenPlayState(void)
}
private = audioDevice->hidden;
stream = private->stream;
if (!stream) {
return SDL_FALSE;
}
res = ctx.AAudioStream_getTimestamp(private->stream, CLOCK_MONOTONIC, &framePosition, &timeNanoseconds);
res = ctx.AAudioStream_getTimestamp(stream, CLOCK_MONOTONIC, &framePosition, &timeNanoseconds);
if (res == AAUDIO_ERROR_INVALID_STATE) {
aaudio_stream_state_t currentState = ctx.AAudioStream_getState(private->stream);
aaudio_stream_state_t currentState = ctx.AAudioStream_getState(stream);
/* AAudioStream_getTimestamp() will also return AAUDIO_ERROR_INVALID_STATE while the stream is still initially starting. But we only care if it silently went invalid while playing. */
if (currentState == AAUDIO_STREAM_STATE_STARTED) {
LOGI("SDL aaudio_DetectBrokenPlayState: detected invalid audio device state: AAudioStream_getTimestamp result=%d, framePosition=%lld, timeNanoseconds=%lld, getState=%d", (int)res, (long long)framePosition, (long long)timeNanoseconds, (int)currentState);
+1
View File
@@ -38,6 +38,7 @@ struct SDL_PrivateAudioData
Uint8 *mixbuf;
int mixlen;
int frame_size;
int devid;
};
void aaudio_ResumeDevices(void);
+1 -1
View File
@@ -32,7 +32,7 @@ SDL_PROC(void, AAudioStreamBuilder_setFormat, (AAudioStreamBuilder * builder, aa
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setSharingMode, (AAudioStreamBuilder * builder, aaudio_sharing_mode_t sharingMode))
SDL_PROC(void, AAudioStreamBuilder_setDirection, (AAudioStreamBuilder * builder, aaudio_direction_t direction))
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setBufferCapacityInFrames, (AAudioStreamBuilder * builder, int32_t numFrames))
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setPerformanceMode, (AAudioStreamBuilder * builder, aaudio_performance_mode_t mode))
SDL_PROC(void, AAudioStreamBuilder_setPerformanceMode, (AAudioStreamBuilder * builder, aaudio_performance_mode_t mode))
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setUsage, (AAudioStreamBuilder * builder, aaudio_usage_t usage)) /* API 28 */
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setContentType, (AAudioStreamBuilder * builder, aaudio_content_type_t contentType)) /* API 28 */
SDL_PROC_UNUSED(void, AAudioStreamBuilder_setInputPreset, (AAudioStreamBuilder * builder, aaudio_input_preset_t inputPreset)) /* API 28 */
+11 -1
View File
@@ -172,13 +172,18 @@ static SDL_bool RecoverWasapiIfLost(_THIS)
return lost ? RecoverWasapiDevice(this) : SDL_TRUE;
}
static void WASAPI_WaitDevice(_THIS);
static Uint8 *WASAPI_GetDeviceBuf(_THIS)
{
/* get an endpoint buffer from WASAPI. */
BYTE *buffer = NULL;
while (RecoverWasapiIfLost(this) && this->hidden->render) {
if (!WasapiFailed(this, IAudioRenderClient_GetBuffer(this->hidden->render, this->spec.samples, &buffer))) {
const HRESULT ret = IAudioRenderClient_GetBuffer(this->hidden->render, this->spec.samples, &buffer);
if (ret == AUDCLNT_E_BUFFER_TOO_LARGE) {
WASAPI_WaitDevice(this); /* see if we can wait on the buffer to drain some more first... */
} else if (!WasapiFailed(this, ret)) {
return (Uint8 *)buffer;
}
SDL_assert(buffer == NULL);
@@ -486,6 +491,11 @@ int WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
this->spec.samples = (Uint16)SDL_ceilf(period_frames);
}
/* regardless of what we calculated for the period size, clamp it to the expected hardware buffer size. */
if (this->spec.samples > bufsize) {
this->spec.samples = bufsize;
}
/* Update the fragment size as size in bytes */
SDL_CalculateAudioSpec(&this->spec);
+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 -8
View File
@@ -20,12 +20,6 @@
*/
#include "../../SDL_internal.h"
/* Standard C++11 includes */
#include <functional>
#include <string>
#include <sstream>
using namespace std;
/* Windows includes */
#include "ppltasks.h"
using namespace concurrency;
@@ -64,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.
*/
@@ -628,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)) {
+42 -6
View File
@@ -36,6 +36,7 @@
#ifdef HAVE_STDIO_H
#include <stdio.h>
#include <sys/stat.h>
#endif
#ifdef HAVE_LIMITS_H
@@ -523,6 +524,24 @@ 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)
{
#ifdef __WINRT__
struct __stat64 st;
if (_fstat64(_fileno(f), &st) < 0 || (st.st_mode & _S_IFMT) != _S_IFREG) {
return SDL_FALSE;
}
#else
struct stat st;
if (fstat(fileno(f), &st) < 0 || !S_ISREG(st.st_mode)) {
return SDL_FALSE;
}
#endif
return SDL_TRUE;
}
#endif
SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
{
SDL_RWops *rwops = NULL;
@@ -536,6 +555,11 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
if (*file == '/') {
FILE *fp = fopen(file, mode);
if (fp) {
if (!SDL_IsRegularFile(fp)) {
fclose(fp);
SDL_SetError("%s is not a regular file", file);
return NULL;
}
return SDL_RWFromFP(fp, 1);
}
} else {
@@ -551,6 +575,11 @@ SDL_RWops *SDL_RWFromFile(const char *file, const char *mode)
fp = fopen(path, mode);
SDL_stack_free(path);
if (fp) {
if (!SDL_IsRegularFile(fp)) {
fclose(fp);
SDL_SetError("%s is not a regular file", path);
return NULL;
}
return SDL_RWFromFP(fp, 1);
}
}
@@ -604,6 +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)) {
fclose(fp);
fp = NULL;
SDL_SetError("%s is not a regular file", file);
} else {
rwops = SDL_RWFromFP(fp, SDL_TRUE);
}
@@ -718,12 +751,12 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
{
static const Sint64 FILE_CHUNK_SIZE = 1024;
Sint64 size;
size_t size_read, size_total;
size_t size_read, size_total = 0;
void *data = NULL, *newdata;
if (!src) {
SDL_InvalidParamError("src");
return NULL;
goto done;
}
size = SDL_RWsize(src);
@@ -731,8 +764,11 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
size = FILE_CHUNK_SIZE;
}
data = SDL_malloc((size_t)(size + 1));
if (!data) {
SDL_OutOfMemory();
goto done;
}
size_total = 0;
for (;;) {
if ((((Sint64)size_total) + FILE_CHUNK_SIZE) > size) {
size = (size_total + FILE_CHUNK_SIZE);
@@ -753,12 +789,12 @@ void *SDL_LoadFile_RW(SDL_RWops *src, size_t *datasize, int freesrc)
size_total += size_read;
}
if (datasize) {
*datasize = size_total;
}
((char *)data)[size_total] = '\0';
done:
if (datasize) {
*datasize = size_total;
}
if (freesrc && src) {
SDL_RWclose(src);
}
+8 -6
View File
@@ -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: */
+1
View File
@@ -317,6 +317,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,+leftx:+a0,+rightx:+a2,+righty:a4,-leftx:-a0,-lefty:-a1,-rightx:-a2,-righty:-a4,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,lefty:+a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,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,",
+1
View File
@@ -381,6 +381,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 */
+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;
+2
View File
@@ -169,6 +169,8 @@ SDL_bool HIDAPI_SupportsPlaystationDetection(Uint16 vendor, Uint16 product)
return SDL_TRUE;
case USB_VENDOR_MADCATZ:
return SDL_TRUE;
case USB_VENDOR_MAYFLASH:
return SDL_TRUE;
case USB_VENDOR_NACON:
case USB_VENDOR_NACON_ALT:
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;
+1
View File
@@ -36,6 +36,7 @@
#define USB_VENDOR_HYPERKIN 0x2e24
#define USB_VENDOR_LOGITECH 0x046d
#define USB_VENDOR_MADCATZ 0x0738
#define USB_VENDOR_MAYFLASH 0x33df
#define USB_VENDOR_MICROSOFT 0x045e
#define USB_VENDOR_NACON 0x146b
#define USB_VENDOR_NACON_ALT 0x3285
+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 -4
View File
@@ -9,8 +9,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,29,2,0
PRODUCTVERSION 2,29,2,0
FILEVERSION 2,30,1,0
PRODUCTVERSION 2,30,1,0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS 0x40004L
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "SDL\0"
VALUE "FileVersion", "2, 29, 2, 0\0"
VALUE "FileVersion", "2, 30, 1, 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, 29, 2, 0\0"
VALUE "ProductVersion", "2, 30, 1, 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
{
+57 -27
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"
@@ -47,6 +47,7 @@ typedef struct
{
GSGLOBAL *gsGlobal;
uint64_t drawColor;
SDL_Rect *viewport;
int32_t vsync_callback_id;
uint8_t vsync; /* 0 (Disabled), 1 (Enabled), 2 (Dynamic) */
} PS2_RenderData;
@@ -190,6 +191,19 @@ static int PS2_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
}
static int PS2_QueueSetViewport(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
const SDL_Rect *viewport = &cmd->data.viewport.rect;
data->viewport = (SDL_Rect *)viewport;
data->gsGlobal->OffsetX = (int)((2048.0f + (float)viewport->x) * 16.0f);
data->gsGlobal->OffsetY = (int)((2048.0f + (float)viewport->y) * 16.0f);
gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(viewport->x, viewport->x + viewport->w, viewport->y, viewport->y + viewport->h));
return 0;
}
static int PS2_QueueSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
return 0; /* nothing to do in this backend. */
}
@@ -208,10 +222,10 @@ static int PS2_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, c
cmd->data.draw.count = count;
colorR = cmd->data.draw.r >> 1;
colorG = cmd->data.draw.g >> 1;
colorB = cmd->data.draw.b >> 1;
colorA = cmd->data.draw.a >> 1;
colorR = cmd->data.draw.r;
colorG = cmd->data.draw.g;
colorB = cmd->data.draw.b;
colorA = cmd->data.draw.a;
rgbaq = color_to_RGBAQ(colorR, colorG, colorB, colorA, 0.0f);
for (i = 0; i < count; i++, vertices++, points++) {
@@ -261,7 +275,7 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
uv_ = (float *)((char *)uv + j * uv_stride);
vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0);
vertices->rgbaq = color_to_RGBAQ(col_.r >> 1, col_.g >> 1, col_.b >> 1, col_.a >> 1, 0);
vertices->rgbaq = color_to_RGBAQ(col_.r, col_.g, col_.b, col_.a, 0);
vertices->uv = vertex_to_UV(ps2_tex, uv_[0] * ps2_tex->Width, uv_[1] * ps2_tex->Height);
vertices++;
@@ -292,7 +306,7 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
col_ = *(SDL_Color *)((char *)color + j * color_stride);
vertices->xyz2 = vertex_to_XYZ2(data->gsGlobal, xy_[0] * scale_x, xy_[1] * scale_y, 0);
vertices->rgbaq = color_to_RGBAQ(col_.r >> 1, col_.g >> 1, col_.b >> 1, col_.a >> 1, 0.0f);
vertices->rgbaq = color_to_RGBAQ(col_.r, col_.g, col_.b, col_.a, 0.0f);
vertices++;
}
@@ -303,26 +317,24 @@ static int PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL
static int PS2_RenderSetViewPort(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
const SDL_Rect *viewport = &cmd->data.viewport.rect;
gsKit_set_display_offset(data->gsGlobal, viewport->x, viewport->y);
gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(viewport->x, viewport->y, viewport->w, viewport->h));
return 0;
return 0; /* nothing to do in this backend. */
}
static int PS2_RenderSetClipRect(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
SDL_Rect *viewport = data->viewport;
const SDL_Rect *rect = &cmd->data.cliprect.rect;
if (cmd->data.cliprect.enabled) {
gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(rect->x, rect->y, rect->w, rect->h));
} else {
gsKit_set_scissor(data->gsGlobal, GS_SCISSOR_RESET);
/* We need to do it relative to saved viewport */
viewport->x += rect->x;
viewport->y += rect->y;
viewport->w = SDL_min(viewport->w, rect->w);
viewport->h = SDL_min(viewport->h, rect->h);
}
gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(viewport->x, viewport->x + viewport->w, viewport->y, viewport->y + viewport->h));
return 0;
}
@@ -333,26 +345,43 @@ static int PS2_RenderSetDrawColor(SDL_Renderer *renderer, SDL_RenderCommand *cmd
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
colorR = (cmd->data.color.r) >> 1;
colorG = (cmd->data.color.g) >> 1;
colorB = (cmd->data.color.b) >> 1;
colorA = (cmd->data.color.a) >> 1;
colorR = (cmd->data.color.r);
colorG = (cmd->data.color.g);
colorB = (cmd->data.color.b);
colorA = (cmd->data.color.a);
data->drawColor = GS_SETREG_RGBAQ(colorR, colorG, colorB, colorA, 0x00);
return 0;
}
static int PS2_RenderClear(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
{
int colorR, colorG, colorB, colorA;
int colorR, colorG, colorB, colorA, offsetX, offsetY;
SDL_Rect *viewport;
PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata;
colorR = (cmd->data.color.r) >> 1;
colorG = (cmd->data.color.g) >> 1;
colorB = (cmd->data.color.b) >> 1;
colorA = (cmd->data.color.a) >> 1;
colorR = (cmd->data.color.r);
colorG = (cmd->data.color.g);
colorB = (cmd->data.color.b);
colorA = (cmd->data.color.a);
/* Clear the screen, so let's put default viewport */
gsKit_set_scissor(data->gsGlobal, GS_SCISSOR_RESET);
/* Put back original offset */
offsetX = data->gsGlobal->OffsetX;
offsetY = data->gsGlobal->OffsetY;
data->gsGlobal->OffsetX = (int)(2048.0f * 16.0f);
data->gsGlobal->OffsetY = (int)(2048.0f * 16.0f);
gsKit_clear(data->gsGlobal, GS_SETREG_RGBAQ(colorR, colorG, colorB, colorA, 0x00));
/* Put back original offset */
data->gsGlobal->OffsetX = offsetX;
data->gsGlobal->OffsetY = offsetY;
// /* Put back view port */
viewport = data->viewport;
gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(viewport->x, viewport->x + viewport->w, viewport->y, viewport->y + viewport->h));
return 0;
}
@@ -448,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:
@@ -645,7 +675,7 @@ static SDL_Renderer *PS2_CreateRenderer(SDL_Window *window, Uint32 flags)
renderer->SetTextureScaleMode = PS2_SetTextureScaleMode;
renderer->SetRenderTarget = PS2_SetRenderTarget;
renderer->QueueSetViewport = PS2_QueueSetViewport;
renderer->QueueSetDrawColor = PS2_QueueSetViewport;
renderer->QueueSetDrawColor = PS2_QueueSetDrawColor;
renderer->QueueDrawPoints = PS2_QueueDrawPoints;
renderer->QueueDrawLines = PS2_QueueDrawPoints;
renderer->QueueGeometry = PS2_QueueGeometry;
+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"
+6
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"
@@ -451,6 +452,7 @@ typedef struct VideoBootStrap
const char *name;
const char *desc;
SDL_VideoDevice *(*create)(void);
int (*ShowMessageBox)(const SDL_MessageBoxData *messageboxdata, int *buttonid); /* can be done without initializing backend! */
} VideoBootStrap;
/* Not all of these are available in a given build. Use #ifdefs, etc. */
@@ -528,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: */
+131 -136
View File
@@ -562,16 +562,21 @@ int SDL_VideoInit(const char *driver_name)
SDL_DisableScreenSaver();
}
/* If we don't use a screen keyboard, turn on text input by default,
otherwise programs that expect to get text events without enabling
UNICODE input won't get any events.
Actually, come to think of it, you needed to call SDL_EnableUNICODE(1)
in SDL 1.2 before you got text input events. Hmm...
#if !defined(SDL_VIDEO_DRIVER_N3DS)
/* In the initial state we don't want to pop up an on-screen keyboard,
* but we do want to allow text input from other mechanisms.
*/
if (!SDL_HasScreenKeyboardSupport()) {
{
const char *hint = SDL_GetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD);
if (!hint) {
SDL_SetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD, "0");
}
SDL_StartTextInput();
if (!hint) {
SDL_SetHint(SDL_HINT_ENABLE_SCREEN_KEYBOARD, NULL);
}
}
#endif /* !SDL_VIDEO_DRIVER_N3DS */
SDL_MousePostInit();
@@ -4401,59 +4406,6 @@ int SDL_GetMessageBoxCount(void)
return SDL_AtomicGet(&SDL_messagebox_count);
}
#ifdef SDL_VIDEO_DRIVER_ANDROID
#include "android/SDL_androidmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_WINDOWS
#include "windows/SDL_windowsmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_WINRT
#include "winrt/SDL_winrtmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_COCOA
#include "cocoa/SDL_cocoamessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_UIKIT
#include "uikit/SDL_uikitmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_X11
#include "x11/SDL_x11messagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_WAYLAND
#include "wayland/SDL_waylandmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_HAIKU
#include "haiku/SDL_bmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_OS2
#include "os2/SDL_os2messagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_RISCOS
#include "riscos/SDL_riscosmessagebox.h"
#endif
#ifdef SDL_VIDEO_DRIVER_VITA
#include "vita/SDL_vitamessagebox.h"
#endif
#if defined(SDL_VIDEO_DRIVER_WINDOWS) || defined(SDL_VIDEO_DRIVER_WINRT) || defined(SDL_VIDEO_DRIVER_COCOA) || defined(SDL_VIDEO_DRIVER_UIKIT) || defined(SDL_VIDEO_DRIVER_X11) || defined(SDL_VIDEO_DRIVER_WAYLAND) || defined(SDL_VIDEO_DRIVER_HAIKU) || defined(SDL_VIDEO_DRIVER_OS2) || defined(SDL_VIDEO_DRIVER_RISCOS)
static SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
{
SDL_SysWMinfo info;
SDL_Window *window = messageboxdata->window;
if (!window) {
return SDL_TRUE;
}
SDL_VERSION(&info.version);
if (!SDL_GetWindowWMInfo(window, &info)) {
return SDL_TRUE;
} else {
return (info.subsystem == drivertype);
}
}
#endif
int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
{
int dummybutton;
@@ -4495,84 +4447,38 @@ int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
if (_this && _this->ShowMessageBox) {
retval = _this->ShowMessageBox(_this, messageboxdata, buttonid);
} else {
/* It's completely fine to call this function before video is initialized */
const char *driver_name = SDL_GetHint(SDL_HINT_VIDEODRIVER);
int i;
if (driver_name && *driver_name != 0) {
const char *driver_attempt = driver_name;
while (driver_attempt && (*driver_attempt != 0) && (retval == -1)) {
const char *driver_attempt_end = SDL_strchr(driver_attempt, ',');
size_t driver_attempt_len = (driver_attempt_end) ? (driver_attempt_end - driver_attempt)
: SDL_strlen(driver_attempt);
for (i = 0; bootstrap[i]; ++i) {
if (bootstrap[i]->ShowMessageBox && (driver_attempt_len == SDL_strlen(bootstrap[i]->name)) &&
(SDL_strncasecmp(bootstrap[i]->name, driver_attempt, driver_attempt_len) == 0)) {
if (bootstrap[i]->ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
break;
}
}
driver_attempt = (driver_attempt_end) ? (driver_attempt_end + 1) : NULL;
}
} else {
for (i = 0; bootstrap[i]; ++i) {
if (bootstrap[i]->ShowMessageBox && bootstrap[i]->ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
break;
}
}
}
}
/* It's completely fine to call this function before video is initialized */
#ifdef SDL_VIDEO_DRIVER_ANDROID
if (retval == -1 &&
Android_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#if defined(SDL_VIDEO_DRIVER_WINDOWS) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WINDOWS) &&
WIN_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_WINRT
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WINRT) &&
WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_COCOA
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_COCOA) &&
Cocoa_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_UIKIT
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_UIKIT) &&
UIKit_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_X11
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_X11) &&
X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_WAYLAND
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WAYLAND) &&
Wayland_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_HAIKU
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_HAIKU) &&
HAIKU_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_OS2
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_OS2) &&
OS2_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_RISCOS
if (retval == -1 &&
SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_RISCOS) &&
RISCOS_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
#ifdef SDL_VIDEO_DRIVER_VITA
if (retval == -1 &&
VITA_ShowMessageBox(messageboxdata, buttonid) == 0) {
retval = 0;
}
#endif
if (retval == -1) {
const char *error = SDL_GetError();
@@ -4874,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);
+3 -1
View File
@@ -41,6 +41,7 @@
#include "SDL_androidtouch.h"
#include "SDL_androidwindow.h"
#include "SDL_androidvulkan.h"
#include "SDL_androidmessagebox.h"
#define ANDROID_VID_DRIVER_NAME "Android"
@@ -166,7 +167,8 @@ static SDL_VideoDevice *Android_CreateDevice(void)
VideoBootStrap Android_bootstrap = {
ANDROID_VID_DRIVER_NAME, "SDL Android video driver",
Android_CreateDevice
Android_CreateDevice,
Android_ShowMessageBox
};
int Android_VideoInit(_THIS)
+3 -1
View File
@@ -33,6 +33,7 @@
#include "SDL_cocoavulkan.h"
#include "SDL_cocoametalview.h"
#include "SDL_cocoaopengles.h"
#include "SDL_cocoamessagebox.h"
@implementation SDL_VideoData
@@ -179,7 +180,8 @@ static SDL_VideoDevice *Cocoa_CreateDevice(void)
VideoBootStrap COCOA_bootstrap = {
"cocoa", "SDL Cocoa video driver",
Cocoa_CreateDevice
Cocoa_CreateDevice,
Cocoa_ShowMessageBox
};
+2 -1
View File
@@ -65,7 +65,8 @@ static SDL_VideoDevice *DirectFB_CreateDevice(void);
VideoBootStrap DirectFB_bootstrap = {
"directfb", "DirectFB",
DirectFB_CreateDevice
DirectFB_CreateDevice,
NULL /* no ShowMessageBox implementation */
};
static const DirectFBSurfaceDrawingFlagsNames(drawing_flags);
+4 -2
View File
@@ -120,13 +120,15 @@ static SDL_VideoDevice *DUMMY_CreateDevice(void)
VideoBootStrap DUMMY_bootstrap = {
DUMMYVID_DRIVER_NAME, "SDL dummy video driver",
DUMMY_CreateDevice
DUMMY_CreateDevice,
NULL /* no ShowMessageBox implementation */
};
#ifdef SDL_INPUT_LINUXEV
VideoBootStrap DUMMY_evdev_bootstrap = {
DUMMYVID_DRIVER_EVDEV_NAME, "SDL dummy video driver with evdev",
DUMMY_CreateDevice
DUMMY_CreateDevice,
NULL /* no ShowMessageBox implementation */
};
void SDL_EVDEV_Init(void);
void SDL_EVDEV_Poll();
+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);
}
+3 -1
View File
@@ -125,7 +125,8 @@ static SDL_VideoDevice *Emscripten_CreateDevice(void)
VideoBootStrap Emscripten_bootstrap = {
EMSCRIPTENVID_DRIVER_NAME, "SDL emscripten video driver",
Emscripten_CreateDevice
Emscripten_CreateDevice,
NULL /* no ShowMessageBox implementation */
};
int Emscripten_VideoInit(_THIS)
@@ -341,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) {
+3 -1
View File
@@ -39,6 +39,7 @@ extern "C" {
#include "SDL_bmodes.h"
#include "SDL_bframebuffer.h"
#include "SDL_bevents.h"
#include "SDL_bmessagebox.h"
static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) {
return (SDL_BWin *)(window->driverdata);
@@ -131,7 +132,8 @@ static SDL_VideoDevice * HAIKU_CreateDevice(void)
VideoBootStrap HAIKU_bootstrap = {
"haiku", "Haiku graphics",
HAIKU_CreateDevice
HAIKU_CreateDevice,
HAIKU_ShowMessageBox
};
void HAIKU_DeleteDevice(SDL_VideoDevice * device)
+2 -2
View File
@@ -14,7 +14,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
** Khronos $Git commit SHA1: f4cc936b88 $ on $Git commit date: 2023-12-16 01:21:49 -0500 $
*/
#include <EGL/eglplatform.h>
@@ -23,7 +23,7 @@ extern "C" {
#define EGL_EGL_PROTOTYPES 1
#endif
/* Generated on date 20220525 */
/* Generated on date 20231215 */
/* Generated C header for:
* API: egl
+26 -2
View File
@@ -14,12 +14,12 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.khronos.org/registry/egl
**
** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $
** Khronos $Git commit SHA1: f4cc936b88 $ on $Git commit date: 2023-12-16 01:21:49 -0500 $
*/
#include <EGL/eglplatform.h>
#define EGL_EGLEXT_VERSION 20220525
#define EGL_EGLEXT_VERSION 20231215
/* Generated C header for:
* API: egl
@@ -727,6 +727,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLi
#define EGL_EXT_explicit_device 1
#endif /* EGL_EXT_explicit_device */
#ifndef EGL_EXT_gl_colorspace_bt2020_hlg
#define EGL_EXT_gl_colorspace_bt2020_hlg 1
#define EGL_GL_COLORSPACE_BT2020_HLG_EXT 0x3540
#endif /* EGL_EXT_gl_colorspace_bt2020_hlg */
#ifndef EGL_EXT_gl_colorspace_bt2020_linear
#define EGL_EXT_gl_colorspace_bt2020_linear 1
#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
@@ -923,6 +928,10 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy,
#define EGL_EXT_protected_surface 1
#endif /* EGL_EXT_protected_surface */
#ifndef EGL_EXT_query_reset_notification_strategy
#define EGL_EXT_query_reset_notification_strategy 1
#endif /* EGL_EXT_query_reset_notification_strategy */
#ifndef EGL_EXT_stream_consumer_egloutput
#define EGL_EXT_stream_consumer_egloutput 1
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
@@ -1223,6 +1232,11 @@ EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStream
#endif
#endif /* EGL_NV_stream_consumer_eglimage */
#ifndef EGL_NV_stream_consumer_eglimage_use_scanout_attrib
#define EGL_NV_stream_consumer_eglimage_use_scanout_attrib 1
#define EGL_STREAM_CONSUMER_IMAGE_USE_SCANOUT_NV 0x3378
#endif /* EGL_NV_stream_consumer_eglimage_use_scanout_attrib */
#ifndef EGL_NV_stream_consumer_gltexture_yuv
#define EGL_NV_stream_consumer_gltexture_yuv 1
#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
@@ -1432,6 +1446,16 @@ EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
#define EGL_TRIPLE_BUFFER_NV 0x3230
#endif /* EGL_NV_triple_buffer */
#ifndef EGL_QNX_image_native_buffer
#define EGL_QNX_image_native_buffer 1
#define EGL_NATIVE_BUFFER_QNX 0x3551
#endif /* EGL_QNX_image_native_buffer */
#ifndef EGL_QNX_platform_screen
#define EGL_QNX_platform_screen 1
#define EGL_PLATFORM_SCREEN_QNX 0x3550
#endif /* EGL_QNX_platform_screen */
#ifndef EGL_TIZEN_image_native_buffer
#define EGL_TIZEN_image_native_buffer 1
#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
+6
View File
@@ -64,6 +64,12 @@ typedef HDC EGLNativeDisplayType;
typedef HBITMAP EGLNativePixmapType;
typedef HWND EGLNativeWindowType;
#elif defined(__QNX__)
typedef khronos_uintptr_t EGLNativeDisplayType;
typedef struct _screen_pixmap* EGLNativePixmapType; /* screen_pixmap_t */
typedef struct _screen_window* EGLNativeWindowType; /* screen_window_t */
#elif defined(__EMSCRIPTEN__)
typedef int EGLNativeDisplayType;
Loaded 100 of 166 files, more files were not shown because too many files have changed in this diff. Show more