diff --git a/libs/SDL2.props b/libs/SDL2.props
deleted file mode 100644
index 5234554fc..000000000
--- a/libs/SDL2.props
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- $(SolutionDir)libs\SDL2\include;$(IncludePath)
- $(SolutionDir)libs\SDL2\lib\$(PlatformTarget);$(LibraryPath)
-
-
-
- SDL2.lib;%(AdditionalDependencies)
-
-
-
-
\ No newline at end of file
diff --git a/libs/SDL2/INSTALL.txt b/libs/SDL2/INSTALL.txt
index 607dafd0e..f570cb33f 100644
--- a/libs/SDL2/INSTALL.txt
+++ b/libs/SDL2/INSTALL.txt
@@ -1,18 +1,41 @@
-The 32-bit files are in i686-w64-mingw32
-The 64-bit files are in x86_64-w64-mingw32
+To compile and install SDL:
-To install SDL for native development:
- make native
+ 1. Windows with Visual Studio:
+ * Read ./docs/README-visualc.md
-To install SDL for cross-compiling development:
- make cross
+ Windows with gcc, either native or cross-compiling:
+ * Read the FAQ at https://wiki.libsdl.org/FAQWindows
+ * Run './configure; make; make install'
-Look at the example programs in ./test, and check out online documentation:
- http://wiki.libsdl.org/
+ macOS with Xcode:
+ * Read docs/README-macosx.md
-Join the SDL developer mailing list if you want to join the community:
- http://www.libsdl.org/mailing-list.php
+ macOS from the command line:
+ * Run './configure; make; make install'
+
+ Linux and other UNIX systems:
+ * Run './configure; make; make install'
+
+ Android:
+ * Read docs/README-android.md
+
+ iOS:
+ * Read docs/README-ios.md
+
+ Using Cmake:
+ * Read docs/README-cmake.md
+
+ 2. Look at the example programs in ./test, and check out the online
+ documentation at https://wiki.libsdl.org/
+
+ 3. Join the SDL developer discussions, sign up on
+ https://discourse.libsdl.org/
+ and go to the development forum
+ https://discourse.libsdl.org/c/sdl-development/6
+
+ 4. Sign up for the announcement list through the web interface:
+ https://www.libsdl.org/mailing-list.php
That's it!
Sam Lantinga
diff --git a/libs/SDL2/LICENSE.txt b/libs/SDL2/LICENSE.txt
new file mode 100644
index 000000000..23abb73f2
--- /dev/null
+++ b/libs/SDL2/LICENSE.txt
@@ -0,0 +1,18 @@
+Copyright (C) 1997-2025 Sam Lantinga
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
diff --git a/libs/SDL2/README.txt b/libs/SDL2/README.md
similarity index 69%
rename from libs/SDL2/README.txt
rename to libs/SDL2/README.md
index e8630c713..d1719bb6f 100644
--- a/libs/SDL2/README.txt
+++ b/libs/SDL2/README.md
@@ -1,21 +1,17 @@
-
- Simple DirectMedia Layer
-
- (SDL)
-
- Version 2.0
-
----
-https://www.libsdl.org/
-
-Simple DirectMedia Layer is a cross-platform development library designed
-to provide low level access to audio, keyboard, mouse, joystick, and graphics
-hardware via OpenGL and Direct3D. It is used by video playback software,
-emulators, and popular games including Valve's award winning catalog
-and many Humble Bundle games.
-
-More extensive documentation is available in the docs directory, starting
-with README.md
-
-Enjoy!
- Sam Lantinga (slouken@libsdl.org)
+
+# Simple DirectMedia Layer (SDL) Version 2.0
+
+https://www.libsdl.org/
+
+Simple DirectMedia Layer is a cross-platform development library designed
+to provide low level access to audio, keyboard, mouse, joystick, and graphics
+hardware via OpenGL and Direct3D. It is used by video playback software,
+emulators, and popular games including Valve's award winning catalog
+and many Humble Bundle games.
+
+More extensive documentation is available in the docs directory, starting
+with README.md
+
+Enjoy!
+
+Sam Lantinga (slouken@libsdl.org)
diff --git a/libs/SDL2/WhatsNew.txt b/libs/SDL2/WhatsNew.txt
index 1d7c27e20..90d94243d 100644
--- a/libs/SDL2/WhatsNew.txt
+++ b/libs/SDL2/WhatsNew.txt
@@ -1,9 +1,28 @@
This is a list of major changes in SDL's version history.
+---------------------------------------------------------------------------
+2.30.0:
+---------------------------------------------------------------------------
+
+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
+* Added the hint SDL_HINT_JOYSTICK_MFI to control whether the GCController controller driver should be used
+* Added the hint SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE to choose whether high or low power GPU should be used for rendering, in the case where there are multiple GPUs available
+
+Xbox:
+* Added the function SDL_GDKGetDefaultUser()
+
---------------------------------------------------------------------------
2.28.2:
---------------------------------------------------------------------------
+
General:
* Added the hint SDL_HINT_JOYSTICK_WGI to control whether to use Windows.Gaming.Input for controllers
diff --git a/libs/SDL2/docs/CONTRIBUTING.md b/libs/SDL2/docs/CONTRIBUTING.md
deleted file mode 100644
index a25055370..000000000
--- a/libs/SDL2/docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Contributing to SDL
-
-We appreciate your interest in contributing to SDL, this document will describe how to report bugs, contribute code or ideas or edit documentation.
-
-**Table Of Contents**
-
-- [Filing a GitHub issue](#filing-a-github-issue)
- - [Reporting a bug](#reporting-a-bug)
- - [Suggesting enhancements](#suggesting-enhancements)
-- [Contributing code](#contributing-code)
- - [Forking the project](#forking-the-project)
- - [Following the style guide](#following-the-style-guide)
- - [Running the tests](#running-the-tests)
- - [Opening a pull request](#opening-a-pull-request)
-- [Contributing to the documentation](#contributing-to-the-documentation)
- - [Editing a function documentation](#editing-a-function-documentation)
- - [Editing the wiki](#editing-the-wiki)
-
-## Filing a GitHub issue
-
-### Reporting a bug
-
-If you think you have found a bug and would like to report it, here are the steps you should take:
-
-- Before opening a new issue, ensure your bug has not already been reported on the [GitHub Issues page](https://github.com/libsdl-org/SDL/issues).
-- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
-- Include details about your environment, such as your Operating System and SDL version.
-- If possible, provide a small example that reproduces your bug.
-
-### Suggesting enhancements
-
-If you want to suggest changes for the project, here are the steps you should take:
-
-- Check if the suggestion has already been made on:
- - the [issue tracker](https://github.com/libsdl-org/SDL/issues);
- - the [discourse forum](https://discourse.libsdl.org/);
- - or if a [pull request](https://github.com/libsdl-org/SDL/pulls) already exists.
-- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
-- Describe what change you would like to happen.
-
-## Contributing code
-
-This section will cover how the process of forking the project, making a change and opening a pull request.
-
-### Forking the project
-
-The first step consists in making a fork of the project, this is only necessary for the first contribution.
-
-Head over to https://github.com/libsdl-org/SDL and click on the `Fork` button in the top right corner of your screen, you may leave the fields unchanged and click `Create Fork`.
-
-You will be redirected to your fork of the repository, click the green `Code` button and copy the git clone link.
-
-If you had already forked the repository, you may update it from the web page using the `Fetch upstream` button.
-
-### Following the style guide
-
-Code formatting is done using a custom `.clang-format` file, you can learn more about how to run it [here](https://clang.llvm.org/docs/ClangFormat.html).
-
-Some legacy code may not be formatted, as such avoid formatting the whole file at once and only format around your changes.
-
-For your commit message to be properly displayed on GitHub, it should contain:
-
-- A short description of the commit of 50 characters or less on the first line.
-- If necessary, add a blank line followed by a long description, each line should be 72 characters or less.
-
-For example:
-
-```
-Fix crash in SDL_FooBar.
-
-This addresses the issue #123456 by making sure Foo was successful
-before calling Bar.
-```
-
-### Running the tests
-
-Tests allow you to verify if your changes did not break any behaviour, here are the steps to follow:
-
-- Before pushing, run the `testautomation` suite on your machine, there should be no more failing tests after your change than before.
-- After pushing to your fork, Continuous Integration (GitHub Actions) will ensure compilation and tests still pass on other systems.
-
-### Opening a pull request
-
-- Head over to your fork's GitHub page.
-- Click on the `Contribute` button and `Open Pull Request`.
-- Fill out the pull request template.
-- If any changes are requested, you can add new commits to your fork and they will be automatically added to the pull request.
-
-## Contributing to the documentation
-
-### Editing a function documentation
-
-The wiki documentation for API functions is synchronised from the headers' doxygen comments. As such, all modifications to syntax; function parameters; return value; version; related functions should be done in the header directly.
-
-### Editing the wiki
-
-Other changes to the wiki should done directly from https://wiki.libsdl.org/
diff --git a/libs/SDL2/docs/README-android.md b/libs/SDL2/docs/README-android.md
deleted file mode 100644
index 5e25cab77..000000000
--- a/libs/SDL2/docs/README-android.md
+++ /dev/null
@@ -1,483 +0,0 @@
-Android
-================================================================================
-
-Matt Styles wrote a tutorial on building SDL for Android with Visual Studio:
-http://trederia.blogspot.de/2017/03/building-sdl2-for-android-with-visual.html
-
-The rest of this README covers the Android gradle style build process.
-
-If you are using the older ant build process, it is no longer officially
-supported, but you can use the "android-project-ant" directory as a template.
-
-
-Requirements
-================================================================================
-
-Android SDK (version 34 or later)
-https://developer.android.com/sdk/index.html
-
-Android NDK r15c or later
-https://developer.android.com/tools/sdk/ndk/index.html
-
-Minimum API level supported by SDL: 19 (Android 4.4)
-
-
-How the port works
-================================================================================
-
-- Android applications are Java-based, optionally with parts written in C
-- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to
- the SDL library
-- This means that your application C code must be placed inside an Android
- Java project, along with some C support code that communicates with Java
-- This eventually produces a standard Android .apk package
-
-The Android Java code implements an "Activity" and can be found in:
-android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
-
-The Java code loads your game code, the SDL shared library, and
-dispatches to native functions implemented in the SDL library:
-src/core/android/SDL_android.c
-
-
-Building an app
-================================================================================
-
-For simple projects you can use the script located at build-scripts/androidbuild.sh
-
-There's two ways of using it:
-
- androidbuild.sh com.yourcompany.yourapp < sources.list
- androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
-
-sources.list should be a text file with a source file name in each line
-Filenames should be specified relative to the current directory, for example if
-you are in the build-scripts directory and want to create the testgles.c test, you'll
-run:
-
- ./androidbuild.sh org.libsdl.testgles ../test/testgles.c
-
-One limitation of this script is that all sources provided will be aggregated into
-a single directory, thus all your source files should have a unique name.
-
-Once the project is complete the script will tell you where the debug APK is located.
-If you want to create a signed release APK, you can use the project created by this
-utility to generate it.
-
-Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
-done in the build directory for the app!
-
-
-
-For more complex projects, follow these instructions:
-
-1. Get the source code for SDL and copy the 'android-project' directory located at SDL/android-project to a suitable location. Also make sure to rename it to your project name (In these examples: YOURPROJECT).
-
- (The 'android-project' directory can basically be seen as a sort of starting point for the android-port of your project. It contains the glue code between the Android Java 'frontend' and the SDL code 'backend'. It also contains some standard behaviour, like how events should be handled, which you will be able to change.)
-
-2. Move or [symlink](https://en.wikipedia.org/wiki/Symbolic_link) the SDL directory into the "YOURPROJECT/app/jni" directory
-
-(This is needed as the source of SDL has to be compiled by the Android compiler)
-
-3. Edit "YOURPROJECT/app/jni/src/Android.mk" to include your source files.
-
-(They should be separated by spaces after the "LOCAL_SRC_FILES := " declaration)
-
-4a. If you want to use Android Studio, simply open your 'YOURPROJECT' directory and start building.
-
-4b. If you want to build manually, run './gradlew installDebug' in the project directory. This compiles the .java, creates an .apk with the native code embedded, and installs it on any connected Android device
-
-
-If you already have a project that uses CMake, the instructions change somewhat:
-
-1. Do points 1 and 2 from the instruction above.
-2. Edit "YOURPROJECT/app/build.gradle" to comment out or remove sections containing ndk-build
- and uncomment the cmake sections. Add arguments to the CMake invocation as needed.
-3. Edit "YOURPROJECT/app/jni/CMakeLists.txt" to include your project (it defaults to
- adding the "src" subdirectory). Note that you'll have SDL2, SDL2main and SDL2-static
- as targets in your project, so you should have "target_link_libraries(yourgame SDL2 SDL2main)"
- in your CMakeLists.txt file. Also be aware that you should use add_library() instead of
- add_executable() for the target containing your "main" function.
-
-If you wish to use Android Studio, you can skip the last step.
-
-4. Run './gradlew installDebug' or './gradlew installRelease' in the project directory. It will build and install your .apk on any
- connected Android device
-
-Here's an explanation of the files in the Android project, so you can customize them:
-
- android-project/app
- build.gradle - build info including the application version and SDK
- src/main/AndroidManifest.xml - package manifest. Among others, it contains the class name of the main Activity and the package name of the application.
- jni/ - directory holding native code
- jni/Application.mk - Application JNI settings, including target platform and STL library
- jni/Android.mk - Android makefile that can call recursively the Android.mk files in all subdirectories
- jni/CMakeLists.txt - Top-level CMake project that adds SDL as a subproject
- jni/SDL/ - (symlink to) directory holding the SDL library files
- jni/SDL/Android.mk - Android makefile for creating the SDL shared library
- jni/src/ - directory holding your C/C++ source
- jni/src/Android.mk - Android makefile that you should customize to include your source code and any library references
- jni/src/CMakeLists.txt - CMake file that you may customize to include your source code and any library references
- src/main/assets/ - directory holding asset files for your application
- src/main/res/ - directory holding resources for your application
- src/main/res/mipmap-* - directories holding icons for different phone hardware
- src/main/res/values/strings.xml - strings used in your application, including the application name
- src/main/java/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding to SDL. Be very careful changing this, as the SDL library relies on this implementation. You should instead subclass this for your application.
-
-
-Customizing your application name
-================================================================================
-
-To customize your application name, edit AndroidManifest.xml and replace
-"org.libsdl.app" with an identifier for your product package.
-
-Then create a Java class extending SDLActivity and place it in a directory
-under src matching your package, e.g.
-
- src/com/gamemaker/game/MyGame.java
-
-Here's an example of a minimal class file:
-
- --- MyGame.java --------------------------
- package com.gamemaker.game;
-
- import org.libsdl.app.SDLActivity;
-
- /**
- * A sample wrapper class that just calls SDLActivity
- */
-
- public class MyGame extends SDLActivity { }
-
- ------------------------------------------
-
-Then replace "SDLActivity" in AndroidManifest.xml with the name of your
-class, .e.g. "MyGame"
-
-
-Customizing your application icon
-================================================================================
-
-Conceptually changing your icon is just replacing the "ic_launcher.png" files in
-the drawable directories under the res directory. There are several directories
-for different screen sizes.
-
-
-Loading assets
-================================================================================
-
-Any files you put in the "app/src/main/assets" directory of your project
-directory will get bundled into the application package and you can load
-them using the standard functions in SDL_rwops.h.
-
-There are also a few Android specific functions that allow you to get other
-useful paths for saving and loading data:
-* SDL_AndroidGetInternalStoragePath()
-* SDL_AndroidGetExternalStorageState()
-* SDL_AndroidGetExternalStoragePath()
-
-See SDL_system.h for more details on these functions.
-
-The asset packaging system will, by default, compress certain file extensions.
-SDL includes two asset file access mechanisms, the preferred one is the so
-called "File Descriptor" method, which is faster and doesn't involve the Dalvik
-GC, but given this method does not work on compressed assets, there is also the
-"Input Stream" method, which is automatically used as a fall back by SDL. You
-may want to keep this fact in mind when building your APK, specially when large
-files are involved.
-For more information on which extensions get compressed by default and how to
-disable this behaviour, see for example:
-
-http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
-
-
-Pause / Resume behaviour
-================================================================================
-
-If SDL_HINT_ANDROID_BLOCK_ON_PAUSE hint is set (the default),
-the event loop will block itself when the app is paused (ie, when the user
-returns to the main Android dashboard). Blocking is better in terms of battery
-use, and it allows your app to spring back to life instantaneously after resume
-(versus polling for a resume message).
-
-Upon resume, SDL will attempt to restore the GL context automatically.
-In modern devices (Android 3.0 and up) this will most likely succeed and your
-app can continue to operate as it was.
-
-However, there's a chance (on older hardware, or on systems under heavy load),
-where the GL context can not be restored. In that case you have to listen for
-a specific message (SDL_RENDER_DEVICE_RESET) and restore your textures
-manually or quit the app.
-
-You should not use the SDL renderer API while the app going in background:
-- SDL_APP_WILLENTERBACKGROUND:
- after you read this message, GL context gets backed-up and you should not
- use the SDL renderer API.
-
- When this event is received, you have to set the render target to NULL, if you're using it.
- (eg call SDL_SetRenderTarget(renderer, NULL))
-
-- SDL_APP_DIDENTERFOREGROUND:
- GL context is restored, and the SDL renderer API is available (unless you
- receive SDL_RENDER_DEVICE_RESET).
-
-Mouse / Touch events
-================================================================================
-
-In some case, SDL generates synthetic mouse (resp. touch) events for touch
-(resp. mouse) devices.
-To enable/disable this behavior, see SDL_hints.h:
-- SDL_HINT_TOUCH_MOUSE_EVENTS
-- SDL_HINT_MOUSE_TOUCH_EVENTS
-
-Misc
-================================================================================
-
-For some device, it appears to works better setting explicitly GL attributes
-before creating a window:
- SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
- SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
- SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
-
-Threads and the Java VM
-================================================================================
-
-For a quick tour on how Linux native threads interoperate with the Java VM, take
-a look here: https://developer.android.com/guide/practices/jni.html
-
-If you want to use threads in your SDL app, it's strongly recommended that you
-do so by creating them using SDL functions. This way, the required attach/detach
-handling is managed by SDL automagically. If you have threads created by other
-means and they make calls to SDL functions, make sure that you call
-Android_JNI_SetupThread() before doing anything else otherwise SDL will attach
-your thread automatically anyway (when you make an SDL call), but it'll never
-detach it.
-
-
-If you ever want to use JNI in a native thread (created by "SDL_CreateThread()"),
-it won't be able to find your java class and method because of the java class loader
-which is different for native threads, than for java threads (eg your "main()").
-
-the work-around is to find class/method, in you "main()" thread, and to use them
-in your native thread.
-
-see:
-https://developer.android.com/training/articles/perf-jni#faq:-why-didnt-findclass-find-my-class
-
-Using STL
-================================================================================
-
-You can use STL in your project by creating an Application.mk file in the jni
-folder and adding the following line:
-
- APP_STL := c++_shared
-
-For more information go here:
- https://developer.android.com/ndk/guides/cpp-support
-
-
-Using the emulator
-================================================================================
-
-There are some good tips and tricks for getting the most out of the
-emulator here: https://developer.android.com/tools/devices/emulator.html
-
-Especially useful is the info on setting up OpenGL ES 2.0 emulation.
-
-Notice that this software emulator is incredibly slow and needs a lot of disk space.
-Using a real device works better.
-
-
-Troubleshooting
-================================================================================
-
-You can see if adb can see any devices with the following command:
-
- adb devices
-
-You can see the output of log messages on the default device with:
-
- adb logcat
-
-You can push files to the device with:
-
- adb push local_file remote_path_and_file
-
-You can push files to the SD Card at /sdcard, for example:
-
- adb push moose.dat /sdcard/moose.dat
-
-You can see the files on the SD card with a shell command:
-
- adb shell ls /sdcard/
-
-You can start a command shell on the default device with:
-
- adb shell
-
-You can remove the library files of your project (and not the SDL lib files) with:
-
- ndk-build clean
-
-You can do a build with the following command:
-
- ndk-build
-
-You can see the complete command line that ndk-build is using by passing V=1 on the command line:
-
- ndk-build V=1
-
-If your application crashes in native code, you can use ndk-stack to get a symbolic stack trace:
- https://developer.android.com/ndk/guides/ndk-stack
-
-If you want to go through the process manually, you can use addr2line to convert the
-addresses in the stack trace to lines in your code.
-
-For example, if your crash looks like this:
-
- I/DEBUG ( 31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
- I/DEBUG ( 31): r0 00000000 r1 00001000 r2 00000003 r3 400085d4
- I/DEBUG ( 31): r4 400085d0 r5 40008000 r6 afd41504 r7 436c6a7c
- I/DEBUG ( 31): r8 436c6b30 r9 435c6fb0 10 435c6f9c fp 4168d82c
- I/DEBUG ( 31): ip 8346aff0 sp 436c6a60 lr afd1c8ff pc afd1c902 cpsr 60000030
- I/DEBUG ( 31): #00 pc 0001c902 /system/lib/libc.so
- I/DEBUG ( 31): #01 pc 0001ccf6 /system/lib/libc.so
- I/DEBUG ( 31): #02 pc 000014bc /data/data/org.libsdl.app/lib/libmain.so
- I/DEBUG ( 31): #03 pc 00001506 /data/data/org.libsdl.app/lib/libmain.so
-
-You can see that there's a crash in the C library being called from the main code.
-I run addr2line with the debug version of my code:
-
- arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
-
-and then paste in the number after "pc" in the call stack, from the line that I care about:
-000014bc
-
-I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
-
-You can add logging to your code to help show what's happening:
-
- #include
-
- __android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
-
-If you need to build without optimization turned on, you can create a file called
-"Application.mk" in the jni directory, with the following line in it:
-
- APP_OPTIM := debug
-
-
-Memory debugging
-================================================================================
-
-The best (and slowest) way to debug memory issues on Android is valgrind.
-Valgrind has support for Android out of the box, just grab code using:
-
- svn co svn://svn.valgrind.org/valgrind/trunk valgrind
-
-... and follow the instructions in the file README.android to build it.
-
-One thing I needed to do on Mac OS X was change the path to the toolchain,
-and add ranlib to the environment variables:
-export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
-
-Once valgrind is built, you can create a wrapper script to launch your
-application with it, changing org.libsdl.app to your package identifier:
-
- --- start_valgrind_app -------------------
- #!/system/bin/sh
- export TMPDIR=/data/data/org.libsdl.app
- exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
- ------------------------------------------
-
-Then push it to the device:
-
- adb push start_valgrind_app /data/local
-
-and make it executable:
-
- adb shell chmod 755 /data/local/start_valgrind_app
-
-and tell Android to use the script to launch your application:
-
- adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
-
-If the setprop command says "could not set property", it's likely that
-your package name is too long and you should make it shorter by changing
-AndroidManifest.xml and the path to your class file in android-project/src
-
-You can then launch your application normally and waaaaaaaiiittt for it.
-You can monitor the startup process with the logcat command above, and
-when it's done (or even while it's running) you can grab the valgrind
-output file:
-
- adb pull /sdcard/valgrind.log
-
-When you're done instrumenting with valgrind, you can disable the wrapper:
-
- adb shell setprop wrap.org.libsdl.app ""
-
-
-Graphics debugging
-================================================================================
-
-If you are developing on a compatible Tegra-based tablet, NVidia provides
-Tegra Graphics Debugger at their website. Because SDL2 dynamically loads EGL
-and GLES libraries, you must follow their instructions for installing the
-interposer library on a rooted device. The non-rooted instructions are not
-compatible with applications that use SDL2 for video.
-
-The Tegra Graphics Debugger is available from NVidia here:
-https://developer.nvidia.com/tegra-graphics-debugger
-
-
-Why is API level 19 the minimum required?
-================================================================================
-
-The latest NDK toolchain doesn't support targeting earlier than API level 19.
-As of this writing, according to https://www.composables.com/tools/distribution-chart
-about 99.7% of the Android devices accessing Google Play support API level 19 or
-higher (August 2023).
-
-
-A note regarding the use of the "dirty rectangles" rendering technique
-================================================================================
-
-If your app uses a variation of the "dirty rectangles" rendering technique,
-where you only update a portion of the screen on each frame, you may notice a
-variety of visual glitches on Android, that are not present on other platforms.
-This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
-contexts, in particular the use of the eglSwapBuffers function. As stated in the
-documentation for the function "The contents of ancillary buffers are always
-undefined after calling eglSwapBuffers".
-Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
-is not possible for SDL as it requires EGL 1.4, available only on the API level
-17+, so the only workaround available on this platform is to redraw the entire
-screen each frame.
-
-Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
-
-
-Ending your application
-================================================================================
-
-Two legitimate ways:
-
-- return from your main() function. Java side will automatically terminate the
-Activity by calling Activity.finish().
-
-- Android OS can decide to terminate your application by calling onDestroy()
-(see Activity life cycle). Your application will receive a SDL_QUIT event you
-can handle to save things and quit.
-
-Don't call exit() as it stops the activity badly.
-
-NB: "Back button" can be handled as a SDL_KEYDOWN/UP events, with Keycode
-SDLK_AC_BACK, for any purpose.
-
-Known issues
-================================================================================
-
-- The number of buttons reported for each joystick is hardcoded to be 36, which
-is the current maximum number of buttons Android can report.
-
diff --git a/libs/SDL2/docs/README-cmake.md b/libs/SDL2/docs/README-cmake.md
deleted file mode 100644
index cfd40664c..000000000
--- a/libs/SDL2/docs/README-cmake.md
+++ /dev/null
@@ -1,163 +0,0 @@
-# CMake
-
-(www.cmake.org)
-
-SDL's build system was traditionally based on autotools. Over time, this
-approach has suffered from several issues across the different supported
-platforms.
-To solve these problems, a new build system based on CMake was introduced.
-It is developed in parallel to the legacy autotools build system, so users
-can experiment with it without complication.
-
-The CMake build system is supported on the following platforms:
-
-* FreeBSD
-* Linux
-* Microsoft Visual C
-* MinGW and Msys
-* macOS, iOS, and tvOS, with support for XCode
-* Android
-* Emscripten
-* RiscOS
-* Playstation Vita
-
-## Building SDL
-
-Assuming the source for SDL is located at `~/sdl`
-```sh
-cd ~
-mkdir build
-cd build
-cmake ~/sdl
-cmake --build .
-```
-
-This will build the static and dynamic versions of SDL in the `~/build` directory.
-Installation can be done using:
-
-```sh
-cmake --install . # '--install' requires CMake 3.15, or newer
-```
-
-## Including SDL in your project
-
-SDL can be included in your project in 2 major ways:
-- using a system SDL library, provided by your (*nix) distribution or a package manager
-- using a vendored SDL library: this is SDL copied or symlinked in a subfolder.
-
-The following CMake script supports both, depending on the value of `MYGAME_VENDORED`.
-
-```cmake
-cmake_minimum_required(VERSION 3.5)
-project(mygame)
-
-# Create an option to switch between a system sdl library and a vendored sdl library
-option(MYGAME_VENDORED "Use vendored libraries" OFF)
-
-if(MYGAME_VENDORED)
- add_subdirectory(vendored/sdl EXCLUDE_FROM_ALL)
-else()
- # 1. Look for a SDL2 package, 2. look for the SDL2 component and 3. fail if none can be found
- find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
-
- # 1. Look for a SDL2 package, 2. Look for the SDL2maincomponent and 3. DO NOT fail when SDL2main is not available
- find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
-endif()
-
-# Create your game executable target as usual
-add_executable(mygame WIN32 mygame.c)
-
-# SDL2::SDL2main may or may not be available. It is e.g. required by Windows GUI applications
-if(TARGET SDL2::SDL2main)
- # It has an implicit dependency on SDL2 functions, so it MUST be added before SDL2::SDL2 (or SDL2::SDL2-static)
- target_link_libraries(mygame PRIVATE SDL2::SDL2main)
-endif()
-
-# Link to the actual SDL2 library. SDL2::SDL2 is the shared SDL library, SDL2::SDL2-static is the static SDL libarary.
-target_link_libraries(mygame PRIVATE SDL2::SDL2)
-```
-
-### A system SDL library
-
-For CMake to find SDL, it must be installed in [a default location CMake is looking for](https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure).
-
-The following components are available, to be used as an argument of `find_package`.
-
-| Component name | Description |
-|----------------|--------------------------------------------------------------------------------------------|
-| SDL2 | The SDL2 shared library, available through the `SDL2::SDL2` target [^SDL_TARGET_EXCEPTION] |
-| SDL2-static | The SDL2 static library, available through the `SDL2::SDL2-static` target |
-| SDL2main | The SDL2main static library, available through the `SDL2::SDL2main` target |
-| SDL2test | The SDL2test static library, available through the `SDL2::SDL2test` target |
-
-### Using a vendored SDL
-
-This only requires a copy of SDL in a subdirectory.
-
-## CMake configuration options for platforms
-
-### iOS/tvOS
-
-CMake 3.14+ natively includes support for iOS and tvOS. SDL binaries may be built
-using Xcode or Make, possibly among other build-systems.
-
-When using a recent version of CMake (3.14+), it should be possible to:
-
-- build SDL for iOS, both static and dynamic
-- build SDL test apps (as iOS/tvOS .app bundles)
-- generate a working SDL_config.h for iOS (using SDL_config.h.cmake as a basis)
-
-To use, set the following CMake variables when running CMake's configuration stage:
-
-- `CMAKE_SYSTEM_NAME=` (either `iOS` or `tvOS`)
-- `CMAKE_OSX_SYSROOT=` (examples: `iphoneos`, `iphonesimulator`, `iphoneos12.4`, `/full/path/to/iPhoneOS.sdk`,
- `appletvos`, `appletvsimulator`, `appletvos12.4`, `/full/path/to/AppleTVOS.sdk`, etc.)
-- `CMAKE_OSX_ARCHITECTURES=` (example: "arm64;armv7s;x86_64")
-
-
-#### Examples
-
-- for iOS-Simulator, using the latest, installed SDK:
-
- ```bash
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
- ```
-
-- for iOS-Device, using the latest, installed SDK, 64-bit only
-
- ```bash
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES=arm64
- ```
-
-- for iOS-Device, using the latest, installed SDK, mixed 32/64 bit
-
- ```cmake
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES="arm64;armv7s"
- ```
-
-- for iOS-Device, using a specific SDK revision (iOS 12.4, in this example):
-
- ```cmake
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos12.4 -DCMAKE_OSX_ARCHITECTURES=arm64
- ```
-
-- for iOS-Simulator, using the latest, installed SDK, and building SDL test apps (as .app bundles):
-
- ```cmake
- cmake ~/sdl -DSDL_TESTS=1 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
- ```
-
-- for tvOS-Simulator, using the latest, installed SDK:
-
- ```cmake
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvsimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
- ```
-
-- for tvOS-Device, using the latest, installed SDK:
-
- ```cmake
- cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_ARCHITECTURES=arm64`
- ```
-
-
-[^SDL_TARGET_EXCEPTION]: `SDL2::SDL2` can be an ALIAS to a static `SDL2::SDL2-static` target for multiple reasons.
diff --git a/libs/SDL2/docs/README-directfb.md b/libs/SDL2/docs/README-directfb.md
deleted file mode 100644
index bbc6e993b..000000000
--- a/libs/SDL2/docs/README-directfb.md
+++ /dev/null
@@ -1,123 +0,0 @@
-DirectFB
-========
-
-Supports:
-
-- Hardware YUV overlays
-- OpenGL - software only
-- 2D/3D accelerations (depends on directfb driver)
-- multiple displays
-- windows
-
-What you need:
-
-* DirectFB 1.0.1, 1.2.x, 1.3.0
-* Kernel-Framebuffer support: required: vesafb, radeonfb ....
-* Mesa 7.0.x - optional for OpenGL
-
-The `/etc/directfbrc` file should contain the following lines to make
-your joystick work and avoid crashes:
-
-```
-disable-module=joystick
-disable-module=cle266
-disable-module=cyber5k
-no-linux-input-grab
-```
-
-To disable to use x11 backend when DISPLAY variable is found use
-
-```
-export SDL_DIRECTFB_X11_CHECK=0
-```
-
-To disable the use of linux input devices, i.e. multimice/multikeyboard support,
-use
-
-```
-export SDL_DIRECTFB_LINUX_INPUT=0
-```
-
-To use hardware accelerated YUV-overlays for YUV-textures, use:
-
-```
-export SDL_DIRECTFB_YUV_DIRECT=1
-```
-
-This is disabled by default. It will only support one
-YUV texture, namely the first. Every other YUV texture will be
-rendered in software.
-
-In addition, you may use (directfb-1.2.x)
-
-```
-export SDL_DIRECTFB_YUV_UNDERLAY=1
-```
-
-to make the YUV texture an underlay. This will make the cursor to
-be shown.
-
-Simple Window Manager
-=====================
-
-The driver has support for a very, very basic window manager you may
-want to use when running with `wm=default`. Use
-
-```
-export SDL_DIRECTFB_WM=1
-```
-
-to enable basic window borders. In order to have the window title rendered,
-you need to have the following font installed:
-
-```
-/usr/share/fonts/truetype/freefont/FreeSans.ttf
-```
-
-OpenGL Support
-==============
-
-The following instructions will give you *software* OpenGL. However this
-works at least on all directfb supported platforms.
-
-As of this writing 20100802 you need to pull Mesa from git and do the following:
-
-```
-git clone git://anongit.freedesktop.org/git/mesa/mesa
-cd mesa
-git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
-```
-
-Edit `configs/linux-directfb` so that the Directories-section looks like this:
-
-```
-# Directories
-SRC_DIRS = mesa glu
-GLU_DIRS = sgi
-DRIVER_DIRS = directfb
-PROGRAM_DIRS =
-```
-
-Then do the following:
-
-```
-make linux-directfb
-make
-
-echo Installing - please enter sudo pw.
-
-sudo make install INSTALL_DIR=/usr/local/dfb_GL
-cd src/mesa/drivers/directfb
-make
-sudo make install INSTALL_DIR=/usr/local/dfb_GL
-```
-
-To run the SDL - testprograms:
-
-```
-export SDL_VIDEODRIVER=directfb
-export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
-export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
-
-./testgl
-```
diff --git a/libs/SDL2/docs/README-dynapi.md b/libs/SDL2/docs/README-dynapi.md
deleted file mode 100644
index 7649c1d93..000000000
--- a/libs/SDL2/docs/README-dynapi.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# Dynamic API
-
-Originally posted on Ryan's Google+ account.
-
-Background:
-
-- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2,
- but developers are shipping their own SDL2 with individual Steam games.
- These games might stop getting updates, but a newer SDL2 might be needed later.
- Certainly we'll always be fixing bugs in SDL, even if a new video target isn't
- ever needed, and these fixes won't make it to a game shipping its own SDL.
-- Even if we replace the SDL2 in those games with a compatible one, that is to
- say, edit a developer's Steam depot (yuck!), there are developers that are
- statically linking SDL2 that we can't do this for. We can't even force the
- dynamic loader to ignore their SDL2 in this case, of course.
-- If you don't ship an SDL2 with the game in some form, people that disabled the
- Steam Runtime, or just tried to run the game from the command line instead of
- Steam might find themselves unable to run the game, due to a missing dependency.
-- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
- generic Linux boxes that may or may not have SDL2 installed, you have to ship
- the library or risk a total failure to launch. So now, you might have to have
- a non-Steam build plus a Steam build (that is, one with and one without SDL2
- included), which is inconvenient if you could have had one universal build
- that works everywhere.
-- We like the zlib license, but the biggest complaint from the open source
- community about the license change is the static linking. The LGPL forced this
- as a legal, not technical issue, but zlib doesn't care. Even those that aren't
- concerned about the GNU freedoms found themselves solving the same problems:
- swapping in a newer SDL to an older game often times can save the day.
- Static linking stops this dead.
-
-So here's what we did:
-
-SDL now has, internally, a table of function pointers. So, this is what SDL_Init
-now looks like:
-
-```c
-UInt32 SDL_Init(Uint32 flags)
-{
- return jump_table.SDL_Init(flags);
-}
-```
-
-Except that is all done with a bunch of macro magic so we don't have to maintain
-every one of these.
-
-What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
-SDL_Init() that you've been calling all this time. But at startup, it looks more
-like this:
-
-```c
-Uint32 SDL_Init_DEFAULT(Uint32 flags)
-{
- SDL_InitDynamicAPI();
- return jump_table.SDL_Init(flags);
-}
-```
-
-SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function
-pointers, which means that this `_DEFAULT` function never gets called again.
-First call to any SDL function sets the whole thing up.
-
-So you might be asking, what was the value in that? Isn't this what the operating
-system's dynamic loader was supposed to do for us? Yes, but now we've got this
-level of indirection, we can do things like this:
-
-```bash
-export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
-./MyGameThatIsStaticallyLinkedToSDL2
-```
-
-And now, this game that is statically linked to SDL, can still be overridden
-with a newer, or better, SDL. The statically linked one will only be used as
-far as calling into the jump table in this case. But in cases where no override
-is desired, the statically linked version will provide its own jump table,
-and everyone is happy.
-
-So now:
-- Developers can statically link SDL, and users can still replace it.
- (We'd still rather you ship a shared library, though!)
-- Developers can ship an SDL with their game, Valve can override it for, say,
- new features on SteamOS, or distros can override it for their own needs,
- but it'll also just work in the default case.
-- Developers can ship the same package to everyone (Humble Bundle, GOG, etc),
- and it'll do the right thing.
-- End users (and Valve) can update a game's SDL in almost any case,
- to keep abandoned games running on newer platforms.
-- Everyone develops with SDL exactly as they have been doing all along.
- Same headers, same ABI. Just get the latest version to enable this magic.
-
-
-A little more about SDL_InitDynamicAPI():
-
-Internally, InitAPI does some locking to make sure everything waits until a
-single thread initializes everything (although even SDL_CreateThread() goes
-through here before spinning a thread, too), and then decides if it should use
-an external SDL library. If not, it sets up the jump table using the current
-SDL's function pointers (which might be statically linked into a program, or in
-a shared library of its own). If so, it loads that library and looks for and
-calls a single function:
-
-```c
-SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
-```
-
-That function takes a version number (more on that in a moment), the address of
-the jump table, and the size, in bytes, of the table.
-Now, we've got policy here: this table's layout never changes; new stuff gets
-added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all
-the needed functions if tablesize <= sizeof its own jump table. If tablesize is
-bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
-if it's smaller, we know we can provide the entire API that the caller needs.
-
-The version variable is a failsafe switch.
-Right now it's always 1. This number changes when there are major API changes
-(so we know if the tablesize might be smaller, or entries in it have changed).
-Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not
-inconceivable to have a small dispatch library that only supplies this one
-function and loads different, otherwise-incompatible SDL libraries and has the
-right one initialize the jump table based on the version. For something that
-must generically catch lots of different versions of SDL over time, like the
-Steam Client, this isn't a bad option.
-
-Finally, I'm sure some people are reading this and thinking,
-"I don't want that overhead in my project!"
-
-To which I would point out that the extra function call through the jump table
-probably wouldn't even show up in a profile, but lucky you: this can all be
-disabled. You can build SDL without this if you absolutely must, but we would
-encourage you not to do that. However, on heavily locked down platforms like
-iOS, or maybe when debugging, it makes sense to disable it. The way this is
-designed in SDL, you just have to change one #define, and the entire system
-vaporizes out, and SDL functions exactly like it always did. Most of it is
-macro magic, so the system is contained to one C file and a few headers.
-However, this is on by default and you have to edit a header file to turn it
-off. Our hopes is that if we make it easy to disable, but not too easy,
-everyone will ultimately be able to get what they want, but we've gently
-nudged everyone towards what we think is the best solution.
diff --git a/libs/SDL2/docs/README-emscripten.md b/libs/SDL2/docs/README-emscripten.md
deleted file mode 100644
index 147e18d8e..000000000
--- a/libs/SDL2/docs/README-emscripten.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# Emscripten
-
-(This documentation is not very robust; we will update and expand this later.)
-
-## A quick note about audio
-
-Modern web browsers will not permit web pages to produce sound before the
-user has interacted with them; this is for several reasons, not the least
-of which being that no one likes when a random browser tab suddenly starts
-making noise and the user has to scramble to figure out which and silence
-it.
-
-To solve this, most browsers will refuse to let a web app use the audio
-subsystem at all before the user has interacted with (clicked on) the page
-in a meaningful way. SDL-based apps also have to deal with this problem; if
-the user hasn't interacted with the page, SDL_OpenAudioDevice will fail.
-
-There are two reasonable ways to deal with this: if you are writing some
-sort of media player thing, where the user expects there to be a volume
-control when you mouseover the canvas, just default that control to a muted
-state; if the user clicks on the control to unmute it, on this first click,
-open the audio device. This allows the media to play at start, the user can
-reasonably opt-in to listening, and you never get access denied to the audio
-device.
-
-Many games do not have this sort of UI, and are more rigid about starting
-audio along with everything else at the start of the process. For these, your
-best bet is to write a little Javascript that puts up a "Click here to play!"
-UI, and upon the user clicking, remove that UI and then call the Emscripten
-app's main() function. As far as the application knows, the audio device was
-available to be opened as soon as the program started, and since this magic
-happens in a little Javascript, you don't have to change your C/C++ code at
-all to make it happen.
-
-Please see the discussion at https://github.com/libsdl-org/SDL/issues/6385
-for some Javascript code to steal for this approach.
-
-
-## Building SDL/emscripten
-
-SDL currently requires at least Emscripten 3.1.35 to build. Newer versions
-are likely to work, as well.
-
-
-Build:
-
- $ mkdir build
- $ cd build
- $ emconfigure ../configure --host=asmjs-unknown-emscripten --disable-assembly --disable-threads --disable-cpuinfo CFLAGS="-O2"
- $ emmake make
-
-Or with cmake:
-
- $ mkdir build
- $ cd build
- $ emcmake cmake ..
- $ emmake make
-
-To build one of the tests:
-
- $ cd test/
- $ emcc -O2 --js-opts 0 -g4 testdraw2.c -I../include ../build/.libs/libSDL2.a ../build/libSDL2_test.a -o a.html
-
-Uses GLES2 renderer or software
-
-Some other SDL2 libraries can be easily built (assuming SDL2 is installed somewhere):
-
-SDL_mixer (http://www.libsdl.org/projects/SDL_mixer/):
-
- $ EMCONFIGURE_JS=1 emconfigure ../configure
- build as usual...
-
-SDL_gfx (http://cms.ferzkopp.net/index.php/software/13-sdl-gfx):
-
- $ EMCONFIGURE_JS=1 emconfigure ../configure --disable-mmx
- build as usual...
diff --git a/libs/SDL2/docs/README-gdk.md b/libs/SDL2/docs/README-gdk.md
deleted file mode 100644
index b8ba2b433..000000000
--- a/libs/SDL2/docs/README-gdk.md
+++ /dev/null
@@ -1,155 +0,0 @@
-GDK
-=====
-
-This port allows SDL applications to run via Microsoft's Game Development Kit (GDK).
-
-Windows (GDK) and Xbox One/Xbox Series (GDKX) are supported. Although most of the Xbox code is included in the public SDL source code, NDA access is required for a small number of source files. If you have access to GDKX, these required Xbox files are posted on the GDK forums [here](https://forums.xboxlive.com/questions/130003/).
-
-
-Requirements
-------------
-
-* Microsoft Visual Studio 2022 (in theory, it should also work in 2017 or 2019, but this has not been tested)
-* Microsoft GDK June 2022 or newer (public release [here](https://github.com/microsoft/GDK/releases/tag/June_2022))
-* To publish a package or successfully authenticate a user, you will need to create an app id/configure services in Partner Center. However, for local testing purposes (without authenticating on Xbox Live), the identifiers used by the GDK test programs in the included solution will work.
-
-
-Windows GDK Status
-------
-
-The Windows GDK port supports the full set of Win32 APIs, renderers, controllers, input devices, etc., as the normal Windows x64 build of SDL.
-
-* Additionally, the GDK port adds the following:
- * Compile-time platform detection for SDL programs. The `__GDK__` is `#define`d on every GDK platform, and the `__WINGDK__` is `#define`d on Windows GDK, specifically. (This distinction exists because other GDK platforms support a smaller subset of functionality. This allows you to mark code for "any" GDK separate from Windows GDK.)
- * GDK-specific setup:
- * Initializing/uninitializing the game runtime, and initializing Xbox Live services
- * Creating a global task queue and setting it as the default for the process. When running any async operations, passing in `NULL` as the task queue will make the task get added to the global task queue.
-
- * An implementation on `WinMain` that performs the above GDK setup (you should link against SDL2main.lib, as in Windows x64). If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
- * Global task queue callbacks are dispatched during `SDL_PumpEvents` (which is also called internally if using `SDL_PollEvent`).
- * You can get the handle of the global task queue through `SDL_GDKGetTaskQueue`, if needed. When done with the queue, be sure to use `XTaskQueueCloseHandle` to decrement the reference count (otherwise it will cause a resource leak).
-
-* What doesn't work:
- * Compilation with anything other than through the included Visual C++ solution file
-
-## VisualC-GDK Solution
-
-The included `VisualC-GDK/SDL.sln` solution includes the following targets for the Gaming.Desktop.x64 configuration:
-
-* SDL2 (DLL) - This is the typical SDL2.dll, but for Gaming.Desktop.x64.
-* SDL2main (lib) - This contains a drop-in implementation of `WinMain` that is used as the entry point for GDK programs.
-* tests/testgamecontroller - Standard SDL test program demonstrating controller functionality.
-* tests/testgdk - GDK-specific test program that demonstrates using the global task queue to login a user into Xbox Live.
- *NOTE*: As of the June 2022 GDK, you cannot test user logins without a valid Title ID and MSAAppId. You will need to manually change the identifiers in the `MicrosoftGame.config` to your valid IDs from Partner Center if you wish to test this.
-* tests/testsprite2 - Standard SDL test program demonstrating sprite drawing functionality.
-
-If you set one of the test programs as a startup project, you can run it directly from Visual Studio.
-
-Windows GDK Setup, Detailed Steps
----------------------
-
-These steps assume you already have a game using SDL that runs on Windows x64 along with a corresponding Visual Studio solution file for the x64 version. If you don't have this, it's easiest to use one of the test program vcxproj files in the `VisualC-GDK` directory as a starting point, though you will still need to do most of the steps below.
-
-### 1. Add a Gaming.Desktop.x64 Configuration ###
-
-In your game's existing Visual Studio Solution, go to Build > Configuration Manager. From the "Active solution platform" drop-down select "New...". From the drop-down list, select Gaming.Desktop.x64 and copy the settings from the x64 configuration.
-
-### 2. Build SDL2 and SDL2main for GDK ###
-
-Open `VisualC-GDK/SDL.sln` in Visual Studio, you need to build the SDL2 and SDL2main targets for the Gaming.Desktop.x64 platform (Release is recommended). You will need to copy/keep track of the `SDL2.dll`, `XCurl.dll` (which is output by Gaming.Desktop.x64), `SDL2.lib`, and `SDL2main.lib` output files for your game project.
-
-*Alternatively*, you could setup your solution file to instead reference the SDL2/SDL2main project file targets from the SDL source, and add those projects as a dependency. This would mean that SDL2 and SDL2main would both be built when your game is built.
-
-### 3. Configuring Project Settings ###
-
-While the Gaming.Desktop.x64 configuration sets most of the required settings, there are some additional items to configure for your game project under the Gaming.Desktop.x64 Configuration:
-
-* Under C/C++ > General > Additional Include Directories, make sure the `SDL/include` path is referenced
-* Under Linker > General > Additional Library Directories, make sure to reference the path where the newly-built SDL2.lib and SDL2main.lib are
-* Under Linker > Input > Additional Dependencies, you need the following:
- * `SDL2.lib`
- * `SDL2main.lib` (unless not using)
- * `xgameruntime.lib`
- * `../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib`
-* Note that in general, the GDK libraries depend on the MSVC C/C++ runtime, so there is no way to remove this dependency from a GDK program that links against GDK.
-
-### 4. Setting up SDL_main ###
-
-Rather than using your own implementation of `WinMain`, it's recommended that you instead `#include "SDL_main.h"` and declare a standard main function. If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
-
-### 5. Required DLLs ###
-
-The game will not launch in the debugger unless required DLLs are included in the directory that contains the game's .exe file. You need to make sure that the following files are copied into the directory:
-
-* Your SDL2.dll
-* "$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll"
-* XCurl.dll
-
-You can either copy these in a post-build step, or you can add the dlls into the project and set its Configuration Properties > General > Item type to "Copy file," which will also copy them into the output directory.
-
-### 6. Setting up MicrosoftGame.config ###
-
-You can copy `VisualC-GDK/tests/testgdk/MicrosoftGame.config` and use that as a starting point in your project. Minimally, you will want to change the Executable Name attribute, the DefaultDisplayName, and the Description.
-
-This file must be copied into the same directory as the game's .exe file. As with the DLLs, you can either use a post-build step or the "Copy file" item type.
-
-For basic testing, you do not need to change anything else in `MicrosoftGame.config`. However, if you want to test any Xbox Live services (such as logging in users) _or_ publish a package, you will need to setup a Game app on Partner Center.
-
-Then, you need to set the following values to the values from Partner Center:
-
-* Identity tag - Name and Publisher attributes
-* TitleId
-* MSAAppId
-
-### 7. Adding Required Logos
-
-Several logo PNG files are required to be able to launch the game, even from the debugger. You can use the sample logos provided in `VisualC-GDK/logos`. As with the other files, they must be copied into the same directory as the game's .exe file.
-
-
-### 8. Copying any Data Files ###
-
-When debugging GDK games, there is no way to specify a working directory. Therefore, any required game data must also be copied into the output directory, likely in a post-build step.
-
-
-### 9. Build and Run from Visual Studio ###
-
-At this point, you should be able to build and run your game from the Visual Studio Debugger. If you get any linker errors, make sure you double-check that you referenced all the required libs.
-
-If you are testing Xbox Live functionality, it's likely you will need to change to the Sandbox for your title. To do this:
-
-1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
-2. Switch the sandbox name with:
- `XblPCSandbox SANDBOX.#`
-3. (To switch back to the retail sandbox):
- `XblPCSandbox RETAIL`
-
-### 10. Packaging and Installing Locally
-
-You can use one of the test program's `PackageLayout.xml` as a starting point. Minimally, you will need to change the exe to the correct name and also reference any required game data. As with the other data files, it's easiest if you have this copy to the output directory, although it's not a requirement as you can specify relative paths to files.
-
-To create the package:
-
-1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
-2. `cd` to the directory containing the `PackageLayout.xml` with the correct paths (if you use the local path as in the sample package layout, this would be from your .exe output directory)
-3. `mkdir Package` to create an output directory
-4. To package the file into the `Package` directory, use:
- `makepkg pack /f PackageLayout.xml /lt /d . /nogameos /pc /pd Package`
-5. To install the package, use:
- `wdapp install PACKAGENAME.msixvc`
-6. Once the package is installed, you can run it from the start menu.
-7. As with when running from Visual Studio, if you need to test any Xbox Live functionality you must switch to the correct sandbox.
-
-
-Troubleshooting
----------------
-
-#### Xbox Live Login does not work
-
-As of June 2022 GDK, you must have a valid Title Id and MSAAppId in order to test Xbox Live functionality such as user login. Make sure these are set correctly in the `MicrosoftGame.config`. This means that even testgdk will not let you login without setting these properties to valid values.
-
-Furthermore, confirm that your PC is set to the correct sandbox.
-
-
-#### "The current user has already installed an unpackaged version of this app. A packaged version cannot replace this." error when installing
-
-Prior to June 2022 GDK, running from the Visual Studio debugger would still locally register the app (and it would appear on the start menu). To fix this, you have to uninstall it (it's simplest to right click on it from the start menu to uninstall it).
diff --git a/libs/SDL2/docs/README-gesture.md b/libs/SDL2/docs/README-gesture.md
deleted file mode 100644
index 69a66ad9f..000000000
--- a/libs/SDL2/docs/README-gesture.md
+++ /dev/null
@@ -1,71 +0,0 @@
-Dollar Gestures
-===========================================================================
-SDL provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
-
-Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up.
-
-Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID.
-
-Recording:
-----------
-To begin recording on a touch device call:
-SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices.
-
-Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
-A SDL_DOLLARRECORD event is a dgesture with the following fields:
-
-* event.dgesture.touchId - the Id of the touch used to record the gesture.
-* event.dgesture.gestureId - the unique id of the recorded gesture.
-
-
-Performing:
------------
-As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields:
-
-* event.dgesture.touchId - the Id of the touch which performed the gesture.
-* event.dgesture.gestureId - the unique id of the closest gesture to the performed stroke.
-* event.dgesture.error - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
-* event.dgesture.numFingers - the number of fingers used to draw the stroke.
-
-Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed).
-
-
-
-Saving:
--------
-To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored.
-
-To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored.
-
-Both functions return the number of gestures successfully saved.
-
-
-Loading:
---------
-To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file.
-
-SDL_LoadDollarTemplates returns the number of templates successfully loaded.
-
-
-
-===========================================================================
-Multi Gestures
-===========================================================================
-SDL provides simple support for pinch/rotate/swipe gestures.
-Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
-
-* event.mgesture.touchId - the Id of the touch on which the gesture was performed.
-* event.mgesture.x - the normalized x coordinate of the gesture. (0..1)
-* event.mgesture.y - the normalized y coordinate of the gesture. (0..1)
-* event.mgesture.dTheta - the amount that the fingers rotated during this motion.
-* event.mgesture.dDist - the amount that the fingers pinched during this motion.
-* event.mgesture.numFingers - the number of fingers used in the gesture.
-
-
-===========================================================================
-Notes
-===========================================================================
-For a complete example see test/testgesture.c
-
-Please direct questions/comments to:
- jim.tla+sdl_touch@gmail.com
diff --git a/libs/SDL2/docs/README-git.md b/libs/SDL2/docs/README-git.md
deleted file mode 100644
index fd12fd9f6..000000000
--- a/libs/SDL2/docs/README-git.md
+++ /dev/null
@@ -1,19 +0,0 @@
-git
-=========
-
-The latest development version of SDL is available via git.
-Git allows you to get up-to-the-minute fixes and enhancements;
-as a developer works on a source tree, you can use "git" to mirror that
-source tree instead of waiting for an official release. Please look
-at the Git website ( https://git-scm.com/ ) for more
-information on using git, where you can also download software for
-macOS, Windows, and Unix systems.
-
- git clone https://github.com/libsdl-org/SDL
-
-If you are building SDL via configure, you will need to run autogen.sh
-before running configure.
-
-There is a web interface to the Git repository at:
- http://github.com/libsdl-org/SDL/
-
diff --git a/libs/SDL2/docs/README-hg.md b/libs/SDL2/docs/README-hg.md
deleted file mode 100644
index 1b3901785..000000000
--- a/libs/SDL2/docs/README-hg.md
+++ /dev/null
@@ -1,4 +0,0 @@
-We are no longer hosted in Mercurial. Please see README-git.md for details.
-
-Thanks!
-
diff --git a/libs/SDL2/docs/README-ios.md b/libs/SDL2/docs/README-ios.md
deleted file mode 100644
index 90ef987a9..000000000
--- a/libs/SDL2/docs/README-ios.md
+++ /dev/null
@@ -1,307 +0,0 @@
-iOS
-======
-
-Building the Simple DirectMedia Layer for iOS 9.0+
-==============================================================================
-
-Requirements: Mac OS X 10.9 or later and the iOS 9.0 or newer SDK.
-
-Instructions:
-
-1. Open SDL.xcodeproj (located in Xcode/SDL) in Xcode.
-2. Select your desired target, and hit build.
-
-
-Using the Simple DirectMedia Layer for iOS
-==============================================================================
-
-1. Run Xcode and create a new project using the iOS Game template, selecting the Objective C language and Metal game technology.
-2. In the main view, delete all files except for Assets and LaunchScreen
-3. Right click the project in the main view, select "Add Files...", and add the SDL project, Xcode/SDL/SDL.xcodeproj
-4. Select the project in the main view, go to the "Info" tab and under "Custom iOS Target Properties" remove the line "Main storyboard file base name"
-5. Select the project in the main view, go to the "Build Settings" tab, select "All", and edit "Header Search Path" and drag over the SDL "Public Headers" folder from the left
-6. Select the project in the main view, go to the "Build Phases" tab, select "Link Binary With Libraries", and add SDL2.framework from "Framework-iOS"
-7. Select the project in the main view, go to the "General" tab, scroll down to "Frameworks, Libraries, and Embedded Content", and select "Embed & Sign" for the SDL library.
-8. In the main view, expand SDL -> Library Source -> main -> uikit and drag SDL_uikit_main.c into your game files
-9. Add the source files that you would normally have for an SDL program, making sure to have #include "SDL.h" at the top of the file containing your main() function.
-10. Add any assets that your application needs.
-11. Enjoy!
-
-
-TODO: Add information regarding App Store requirements such as icons, etc.
-
-
-Notes -- Retina / High-DPI and window sizes
-==============================================================================
-
-Window and display mode sizes in SDL are in "screen coordinates" (or "points",
-in Apple's terminology) rather than in pixels. On iOS this means that a window
-created on an iPhone 6 will have a size in screen coordinates of 375 x 667,
-rather than a size in pixels of 750 x 1334. All iOS apps are expected to
-size their content based on screen coordinates / points rather than pixels,
-as this allows different iOS devices to have different pixel densities
-(Retina versus non-Retina screens, etc.) without apps caring too much.
-
-By default SDL will not use the full pixel density of the screen on
-Retina/high-dpi capable devices. Use the SDL_WINDOW_ALLOW_HIGHDPI flag when
-creating your window to enable high-dpi support.
-
-When high-dpi support is enabled, SDL_GetWindowSize() and display mode sizes
-will still be in "screen coordinates" rather than pixels, but the window will
-have a much greater pixel density when the device supports it, and the
-SDL_GL_GetDrawableSize() or SDL_GetRendererOutputSize() functions (depending on
-whether raw OpenGL or the SDL_Render API is used) can be queried to determine
-the size in pixels of the drawable screen framebuffer.
-
-Some OpenGL ES functions such as glViewport expect sizes in pixels rather than
-sizes in screen coordinates. When doing 2D rendering with OpenGL ES, an
-orthographic projection matrix using the size in screen coordinates
-(SDL_GetWindowSize()) can be used in order to display content at the same scale
-no matter whether a Retina device is used or not.
-
-
-Notes -- Application events
-==============================================================================
-
-On iOS the application goes through a fixed life cycle and you will get
-notifications of state changes via application events. When these events
-are delivered you must handle them in an event callback because the OS may
-not give you any processing time after the events are delivered.
-
-e.g.
-
- int HandleAppEvents(void *userdata, SDL_Event *event)
- {
- switch (event->type)
- {
- case SDL_APP_TERMINATING:
- /* Terminate the app.
- Shut everything down before returning from this function.
- */
- return 0;
- case SDL_APP_LOWMEMORY:
- /* You will get this when your app is paused and iOS wants more memory.
- Release as much memory as possible.
- */
- return 0;
- case SDL_APP_WILLENTERBACKGROUND:
- /* Prepare your app to go into the background. Stop loops, etc.
- This gets called when the user hits the home button, or gets a call.
- */
- return 0;
- case SDL_APP_DIDENTERBACKGROUND:
- /* This will get called if the user accepted whatever sent your app to the background.
- If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
- When you get this, you have 5 seconds to save all your state or the app will be terminated.
- Your app is NOT active at this point.
- */
- return 0;
- case SDL_APP_WILLENTERFOREGROUND:
- /* This call happens when your app is coming back to the foreground.
- Restore all your state here.
- */
- return 0;
- case SDL_APP_DIDENTERFOREGROUND:
- /* Restart your loops here.
- Your app is interactive and getting CPU again.
- */
- return 0;
- default:
- /* No special processing, add it to the event queue */
- return 1;
- }
- }
-
- int main(int argc, char *argv[])
- {
- SDL_SetEventFilter(HandleAppEvents, NULL);
-
- ... run your main loop
-
- return 0;
- }
-
-
-Notes -- Accelerometer as Joystick
-==============================================================================
-
-SDL for iPhone supports polling the built in accelerometer as a joystick device. For an example on how to do this, see the accelerometer.c in the demos directory.
-
-The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis() reports joystick values as signed integers. Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver. To convert SDL_JoystickGetAxis() reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
-
-
-Notes -- OpenGL ES
-==============================================================================
-
-Your SDL application for iOS uses OpenGL ES for video by default.
-
-OpenGL ES for iOS supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively. By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute().
-
-If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
-
-Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 0.
-
-OpenGL ES on iOS doesn't use the traditional system-framebuffer setup provided in other operating systems. Special care must be taken because of this:
-
-- The drawable Renderbuffer must be bound to the GL_RENDERBUFFER binding point when SDL_GL_SwapWindow() is called.
-- The drawable Framebuffer Object must be bound while rendering to the screen and when SDL_GL_SwapWindow() is called.
-- If multisample antialiasing (MSAA) is used and glReadPixels is used on the screen, the drawable framebuffer must be resolved to the MSAA resolve framebuffer (via glBlitFramebuffer or glResolveMultisampleFramebufferAPPLE), and the MSAA resolve framebuffer must be bound to the GL_READ_FRAMEBUFFER binding point, before glReadPixels is called.
-
-The above objects can be obtained via SDL_GetWindowWMInfo() (in SDL_syswm.h).
-
-
-Notes -- Keyboard
-==============================================================================
-
-The SDL keyboard API has been extended to support on-screen keyboards:
-
-void SDL_StartTextInput()
- -- enables text events and reveals the onscreen keyboard.
-
-void SDL_StopTextInput()
- -- disables text events and hides the onscreen keyboard.
-
-SDL_bool SDL_IsTextInputActive()
- -- returns whether or not text events are enabled (and the onscreen keyboard is visible)
-
-
-Notes -- Mouse
-==============================================================================
-
-iOS now supports Bluetooth mice on iPad, but by default will provide the mouse input as touch. In order for SDL to see the real mouse events, you should set the key UIApplicationSupportsIndirectInputEvents to true in your Info.plist
-
-
-Notes -- Reading and Writing files
-==============================================================================
-
-Each application installed on iPhone resides in a sandbox which includes its own Application Home directory. Your application may not access files outside this directory.
-
-Once your application is installed its directory tree looks like:
-
- MySDLApp Home/
- MySDLApp.app
- Documents/
- Library/
- Preferences/
- tmp/
-
-When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored. You cannot write to this directory. Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences".
-
-More information on this subject is available here:
-http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
-
-
-Notes -- xcFramework
-==============================================================================
-
-The SDL.xcodeproj file now includes a target to build SDL2.xcframework. An xcframework is a new (Xcode 11) uber-framework which can handle any combination of processor type and target OS platform.
-
-In the past, iOS devices were always an ARM variant processor, and the simulator was always i386 or x86_64, and thus libraries could be combined into a single framework for both simulator and device. With the introduction of the Apple Silicon ARM-based machines, regular frameworks would collide as CPU type was no longer sufficient to differentiate the platform. So Apple created the new xcframework library package.
-
-The xcframework target builds into a Products directory alongside the SDL.xcodeproj file, as SDL2.xcframework. This can be brought in to any iOS project and will function properly for both simulator and device, no matter their CPUs. Note that Intel Macs cannot cross-compile for Apple Silicon Macs. If you need AS compatibility, perform this build on an Apple Silicon Mac.
-
-This target requires Xcode 11 or later. The target will simply fail to build if attempted on older Xcodes.
-
-In addition, on Apple platforms, main() cannot be in a dynamically loaded library. This means that iOS apps which used the statically-linked libSDL2.lib and now link with the xcframwork will need to define their own main() to call SDL_UIKitRunApp(), like this:
-
-#ifndef SDL_MAIN_HANDLED
-#ifdef main
-#undef main
-#endif
-
-int
-main(int argc, char *argv[])
-{
- return SDL_UIKitRunApp(argc, argv, SDL_main);
-}
-#endif /* !SDL_MAIN_HANDLED */
-
-Using an xcFramework is similar to using a regular framework. However, issues have been seen with the build system not seeing the headers in the xcFramework. To remedy this, add the path to the xcFramework in your app's target ==> Build Settings ==> Framework Search Paths and mark it recursive (this is critical). Also critical is to remove "*.framework" from Build Settings ==> Sub-Directories to Exclude in Recursive Searches. Clean the build folder, and on your next build the build system should be able to see any of these in your code, as expected:
-
-#include "SDL_main.h"
-#include
-#include
-
-
-Notes -- iPhone SDL limitations
-==============================================================================
-
-Windows:
- Full-size, single window applications only. You cannot create multi-window SDL applications for iPhone OS. The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow() the flag SDL_WINDOW_BORDERLESS).
-
-Textures:
- The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
-
-Loading Shared Objects:
- This is disabled by default since it seems to break the terms of the iOS SDK agreement for iOS versions prior to iOS 8. It can be re-enabled in SDL_config_iphoneos.h.
-
-
-Notes -- CoreBluetooth.framework
-==============================================================================
-
-SDL_JOYSTICK_HIDAPI is disabled by default. It can give you access to a lot
-more game controller devices, but it requires permission from the user before
-your app will be able to talk to the Bluetooth hardware. "Made For iOS"
-branded controllers do not need this as we don't have to speak to them
-directly with raw bluetooth, so many apps can live without this.
-
-You'll need to link with CoreBluetooth.framework and add something like this
-to your Info.plist:
-
-NSBluetoothPeripheralUsageDescription
-MyApp would like to remain connected to nearby bluetooth Game Controllers and Game Pads even when you're not using the app.
-
-
-Game Center
-==============================================================================
-
-Game Center integration might require that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using:
-
- int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
-
-This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run.
-
-e.g.
-
- extern "C"
- void ShowFrame(void*)
- {
- ... do event handling, frame logic and rendering ...
- }
-
- int main(int argc, char *argv[])
- {
- ... initialize game ...
-
- #if __IPHONEOS__
- // Initialize the Game Center for scoring and matchmaking
- InitGameCenter();
-
- // Set up the game to run in the window animation callback on iOS
- // so that Game Center and so forth works correctly.
- SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
- #else
- while ( running ) {
- ShowFrame(0);
- DelayFrame();
- }
- #endif
- return 0;
- }
-
-
-Deploying to older versions of iOS
-==============================================================================
-
-SDL supports deploying to older versions of iOS than are supported by the latest version of Xcode, all the way back to iOS 8.0
-
-In order to do that you need to download an older version of Xcode:
-https://developer.apple.com/download/more/?name=Xcode
-
-Open the package contents of the older Xcode and your newer version of Xcode and copy over the folders in Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
-
-Then open the file Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist and add the versions of iOS you want to deploy to the key Root/DefaultProperties/DEPLOYMENT_TARGET_SUGGESTED_VALUES
-
-Open your project and set your deployment target to the desired version of iOS
-
-Finally, remove GameController from the list of frameworks linked by your application and edit the build settings for "Other Linker Flags" and add -weak_framework GameController
diff --git a/libs/SDL2/docs/README-kmsbsd.md b/libs/SDL2/docs/README-kmsbsd.md
deleted file mode 100644
index 1aad38092..000000000
--- a/libs/SDL2/docs/README-kmsbsd.md
+++ /dev/null
@@ -1,27 +0,0 @@
-KMSDRM on *BSD
-==================================================
-
-KMSDRM is supported on FreeBSD and OpenBSD. DragonFlyBSD works but requires being a root user. NetBSD isn't supported yet because the application will crash when creating the KMSDRM screen.
-
-WSCONS support has been brought back, but only as an input backend. It will not be brought back as a video backend to ease maintenance.
-
-OpenBSD note: Note that the video backend assumes that the user has read/write permissions to the /dev/drm* devices.
-
-
-SDL2 WSCONS input backend features
-===================================================
-1. It is keymap-aware; it will work properly with different keymaps.
-2. It has mouse support.
-3. Accent input is supported.
-4. Compose keys are supported.
-5. AltGr and Meta Shift keys work as intended.
-
-Partially working or no input on OpenBSD/NetBSD.
-==================================================
-
-The WSCONS input backend needs read/write access to the /dev/wskbd* devices, without which it will not work properly. /dev/wsmouse must also be read/write accessible, otherwise mouse input will not work.
-
-Partially working or no input on FreeBSD.
-==================================================
-
-The evdev devices are only accessible to the root user by default. Edit devfs rules to allow access to such devices. The /dev/kbd* devices are also only accessible to the root user by default. Edit devfs rules to allow access to such devices.
diff --git a/libs/SDL2/docs/README-linux.md b/libs/SDL2/docs/README-linux.md
deleted file mode 100644
index 83339bccc..000000000
--- a/libs/SDL2/docs/README-linux.md
+++ /dev/null
@@ -1,96 +0,0 @@
-Linux
-================================================================================
-
-By default SDL will only link against glibc, the rest of the features will be
-enabled dynamically at runtime depending on the available features on the target
-system. So, for example if you built SDL with XRandR support and the target
-system does not have the XRandR libraries installed, it will be disabled
-at runtime, and you won't get a missing library error, at least with the
-default configuration parameters.
-
-
-Build Dependencies
---------------------------------------------------------------------------------
-
-Ubuntu 18.04, all available features enabled:
-
- sudo apt-get install build-essential git make autoconf automake libtool \
- pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
- libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
- libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
- libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
- libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
-
-Ubuntu 22.04+ can also add `libpipewire-0.3-dev libdecor-0-dev` to that command line.
-
-Fedora 35, all available features enabled:
-
- sudo yum install gcc git-core make cmake autoconf automake libtool \
- alsa-lib-devel pulseaudio-libs-devel nas-devel pipewire-devel \
- libX11-devel libXext-devel libXrandr-devel libXcursor-devel libXfixes-devel \
- libXi-devel libXScrnSaver-devel dbus-devel ibus-devel fcitx-devel \
- systemd-devel mesa-libGL-devel libxkbcommon-devel mesa-libGLES-devel \
- mesa-libEGL-devel vulkan-devel wayland-devel wayland-protocols-devel \
- libdrm-devel mesa-libgbm-devel libusb-devel libdecor-devel \
- libsamplerate-devel pipewire-jack-audio-connection-kit-devel \
-
-NOTES:
-- This includes all the audio targets except arts and esd, because Ubuntu
- (and/or Debian) pulled their packages, but in theory SDL still supports them.
- The sndio audio target is also unavailable on Fedora.
-- libsamplerate0-dev lets SDL optionally link to libresamplerate at runtime
- for higher-quality audio resampling. SDL will work without it if the library
- is missing, so it's safe to build in support even if the end user doesn't
- have this library installed.
-- DirectFB isn't included because the configure script (currently) fails to find
- it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the
- configure script to include DirectFB support. Send patches. :)
-
-
-Joystick does not work
---------------------------------------------------------------------------------
-
-If you compiled or are using a version of SDL with udev support (and you should!)
-there's a few issues that may cause SDL to fail to detect your joystick. To
-debug this, start by installing the evtest utility. On Ubuntu/Debian:
-
- sudo apt-get install evtest
-
-Then run:
-
- sudo evtest
-
-You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
-Now run:
-
- cat /dev/input/event/XX
-
-If you get a permission error, you need to set a udev rule to change the mode of
-your device (see below)
-
-Also, try:
-
- sudo udevadm info --query=all --name=input/eventXX
-
-If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
-you need to set up an udev rule to force this variable.
-
-A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks
-like:
-
- SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
- SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
-
-You can set up similar rules for your device by changing the values listed in
-idProduct and idVendor. To obtain these values, try:
-
- sudo udevadm info -a --name=input/eventXX | grep idVendor
- sudo udevadm info -a --name=input/eventXX | grep idProduct
-
-If multiple values come up for each of these, the one you want is the first one of each.
-
-On other systems which ship with an older udev (such as CentOS), you may need
-to set up a rule such as:
-
- SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
-
diff --git a/libs/SDL2/docs/README-macos.md b/libs/SDL2/docs/README-macos.md
deleted file mode 100644
index 634d456bf..000000000
--- a/libs/SDL2/docs/README-macos.md
+++ /dev/null
@@ -1,285 +0,0 @@
-# Mac OS X (aka macOS).
-
-These instructions are for people using Apple's Mac OS X (pronounced
-"ten"), which in newer versions is just referred to as "macOS".
-
-From the developer's point of view, macOS is a sort of hybrid Mac and
-Unix system, and you have the option of using either traditional
-command line tools or Apple's IDE Xcode.
-
-# Command Line Build
-
-To build SDL using the command line, use the standard configure and make
-process:
-
-```bash
-mkdir build
-cd build
-../configure
-make
-sudo make install
-```
-
-CMake is also known to work, although it continues to be a work in progress:
-
-```bash
-mkdir build
-cd build
-cmake -DCMAKE_BUILD_TYPE=Release ..
-make
-sudo make install
-```
-
-
-You can also build SDL as a Universal library (a single binary for both
-64-bit Intel and ARM architectures), by using the build-scripts/clang-fat.sh
-script.
-
-```bash
-mkdir build
-cd build
-CC=$PWD/../build-scripts/clang-fat.sh ../configure
-make
-sudo make install
-```
-
-This script builds SDL with 10.9 ABI compatibility on 64-bit Intel and 11.0
-ABI compatibility on ARM64 architectures. For best compatibility you
-should compile your application the same way.
-
-Please note that building SDL requires at least Xcode 6 and the 10.9 SDK.
-PowerPC support for macOS has been officially dropped as of SDL 2.0.2.
-32-bit Intel and macOS 10.8 runtime support has been officially dropped as
-of SDL 2.24.0.
-
-To use the library once it's built, you essential have two possibilities:
-use the traditional autoconf/automake/make method, or use Xcode.
-
-
-# Caveats for using SDL with Mac OS X
-
-If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
-SDL will not register its own. This means that SDL will not terminate using
-SDL_Quit if it receives a termination request, it will terminate like a
-normal app, and it will not send a SDL_DROPFILE when you request to open a
-file with the app. To solve these issues, put the following code in your
-NSApplicationDelegate implementation:
-
-
-```objc
-- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
-{
- if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
- SDL_Event event;
- event.type = SDL_QUIT;
- SDL_PushEvent(&event);
- }
-
- return NSTerminateCancel;
-}
-
-- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
-{
- if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
- SDL_Event event;
- event.type = SDL_DROPFILE;
- event.drop.file = SDL_strdup([filename UTF8String]);
- return (SDL_PushEvent(&event) > 0);
- }
-
- return NO;
-}
-```
-
-# Using the Simple DirectMedia Layer with a traditional Makefile
-
-An existing autoconf/automake build system for your SDL app has good chances
-to work almost unchanged on macOS. However, to produce a "real" Mac binary
-that you can distribute to users, you need to put the generated binary into a
-so called "bundle", which is basically a fancy folder with a name like
-"MyCoolGame.app".
-
-To get this build automatically, add something like the following rule to
-your Makefile.am:
-
-```make
-bundle_contents = APP_NAME.app/Contents
-APP_NAME_bundle: EXE_NAME
- mkdir -p $(bundle_contents)/MacOS
- mkdir -p $(bundle_contents)/Resources
- echo "APPL????" > $(bundle_contents)/PkgInfo
- $(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
-```
-
-You should replace `EXE_NAME` with the name of the executable. `APP_NAME` is
-what will be visible to the user in the Finder. Usually it will be the same
-as `EXE_NAME` but capitalized. E.g. if `EXE_NAME` is "testgame" then `APP_NAME`
-usually is "TestGame". You might also want to use `@PACKAGE@` to use the
-package name as specified in your configure.ac file.
-
-If your project builds more than one application, you will have to do a bit
-more. For each of your target applications, you need a separate rule.
-
-If you want the created bundles to be installed, you may want to add this
-rule to your Makefile.am:
-
-```make
-install-exec-hook: APP_NAME_bundle
- rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
- mkdir -p $(DESTDIR)$(prefix)/Applications/
- cp -r $< /$(DESTDIR)$(prefix)Applications/
-```
-
-This rule takes the Bundle created by the rule from step 3 and installs them
-into "$(DESTDIR)$(prefix)/Applications/".
-
-Again, if you want to install multiple applications, you will have to augment
-the make rule accordingly.
-
-But beware! That is only part of the story! With the above, you end up with
-a barebones .app bundle, which is double-clickable from the Finder. But
-there are some more things you should do before shipping your product...
-
-1. The bundle right now probably is dynamically linked against SDL. That
- means that when you copy it to another computer, *it will not run*,
- unless you also install SDL on that other computer. A good solution
- for this dilemma is to static link against SDL. On OS X, you can
- achieve that by linking against the libraries listed by
-
- ```bash
- sdl-config --static-libs
- ```
-
- instead of those listed by
-
- ```bash
- sdl-config --libs
- ```
-
- Depending on how exactly SDL is integrated into your build systems, the
- way to achieve that varies, so I won't describe it here in detail
-
-2. Add an 'Info.plist' to your application. That is a special XML file which
- contains some meta-information about your application (like some copyright
- information, the version of your app, the name of an optional icon file,
- and other things). Part of that information is displayed by the Finder
- when you click on the .app, or if you look at the "Get Info" window.
- More information about Info.plist files can be found on Apple's homepage.
-
-
-As a final remark, let me add that I use some of the techniques (and some
-variations of them) in [Exult](https://github.com/exult/exult) and
-[ScummVM](https://github.com/scummvm/scummvm); both are available in source on
-the net, so feel free to take a peek at them for inspiration!
-
-
-# Using the Simple DirectMedia Layer with Xcode
-
-These instructions are for using Apple's Xcode IDE to build SDL applications.
-
-## First steps
-
-The first thing to do is to unpack the Xcode.tar.gz archive in the
-top level SDL directory (where the Xcode.tar.gz archive resides).
-Because Stuffit Expander will unpack the archive into a subdirectory,
-you should unpack the archive manually from the command line:
-
-```bash
-cd [path_to_SDL_source]
-tar zxf Xcode.tar.gz
-```
-
-This will create a new folder called Xcode, which you can browse
-normally from the Finder.
-
-## Building the Framework
-
-The SDL Library is packaged as a framework bundle, an organized
-relocatable folder hierarchy of executable code, interface headers,
-and additional resources. For practical purposes, you can think of a
-framework as a more user and system-friendly shared library, whose library
-file behaves more or less like a standard UNIX shared library.
-
-To build the framework, simply open the framework project and build it.
-By default, the framework bundle "SDL.framework" is installed in
-/Library/Frameworks. Therefore, the testers and project stationary expect
-it to be located there. However, it will function the same in any of the
-following locations:
-
-* ~/Library/Frameworks
-* /Local/Library/Frameworks
-* /System/Library/Frameworks
-
-## Build Options
-
-There are two "Build Styles" (See the "Targets" tab) for SDL.
-"Deployment" should be used if you aren't tweaking the SDL library.
-"Development" should be used to debug SDL apps or the library itself.
-
-## Building the Testers
-
-Open the SDLTest project and build away!
-
-## Using the Project Stationary
-
-Copy the stationary to the indicated folders to access it from
-the "New Project" and "Add target" menus. What could be easier?
-
-## Setting up a new project by hand
-
-Some of you won't want to use the Stationary so I'll give some tips:
-
-(this is accurate as of Xcode 12.5.)
-
-* Click "File" -> "New" -> "Project...
-* Choose "macOS" and then "App" from the "Application" section.
-* Fill out the options in the next window. User interface is "XIB" and
- Language is "Objective-C".
-* Remove "main.m" from your project
-* Remove "MainMenu.xib" from your project
-* Remove "AppDelegates.*" from your project
-* Add "\$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
-* Add "\$(HOME)/Library/Frameworks" to the frameworks search path
-* Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
-* Add your files
-* Clean and build
-
-## Building from command line
-
-Use `xcode-build` in the same directory as your .pbxproj file
-
-## Running your app
-
-You can send command line args to your app by either invoking it from
-the command line (in *.app/Contents/MacOS) or by entering them in the
-Executables" panel of the target settings.
-
-# Implementation Notes
-
-Some things that may be of interest about how it all works...
-
-## Working directory
-
-In SDL 1.2, the working directory of your SDL app is by default set to its
-parent, but this is no longer the case in SDL 2.0. SDL2 does change the
-working directory, which means it'll be whatever the command line prompt
-that launched the program was using, or if launched by double-clicking in
-the finger, it will be "/", the _root of the filesystem_. Plan accordingly!
-You can use SDL_GetBasePath() to find where the program is running from and
-chdir() there directly.
-
-
-## You have a Cocoa App!
-
-Your SDL app is essentially a Cocoa application. When your app
-starts up and the libraries finish loading, a Cocoa procedure is called,
-which sets up the working directory and calls your main() method.
-You are free to modify your Cocoa app with generally no consequence
-to SDL. You cannot, however, easily change the SDL window itself.
-Functionality may be added in the future to help this.
-
-# Bug reports
-
-Bugs are tracked at [the GitHub issue tracker](https://github.com/libsdl-org/SDL/issues/).
-Please feel free to report bugs there!
-
diff --git a/libs/SDL2/docs/README-n3ds.md b/libs/SDL2/docs/README-n3ds.md
deleted file mode 100644
index e9e7c7d01..000000000
--- a/libs/SDL2/docs/README-n3ds.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Nintendo 3DS
-
-SDL port for the Nintendo 3DS [Homebrew toolchain](https://devkitpro.org/) contributed by:
-
-- [Pierre Wendling](https://github.com/FtZPetruska)
-
-Credits to:
-
-- The awesome people who ported SDL to other homebrew platforms.
-- The Devkitpro team for making all the tools necessary to achieve this.
-
-## Building
-
-To build for the Nintendo 3DS, make sure you have devkitARM and cmake installed and run:
-
-```bash
-cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE="$DEVKITPRO/cmake/3DS.cmake" -DCMAKE_BUILD_TYPE=Release
-cmake --build build
-cmake --install build
-```
-
-## Notes
-
-- Currently only software rendering is supported.
-- SDL2main should be used to ensure ROMFS is enabled.
-- By default, the extra L2 cache and higher clock speeds of the New 2/3DS lineup are enabled. If you wish to turn it off, use `osSetSpeedupEnable(false)` in your main function.
-- `SDL_GetBasePath` returns the romfs root instead of the executable's directory.
-- The Nintendo 3DS uses a cooperative threading model on a single core, meaning a thread will never yield unless done manually through the `SDL_Delay` functions, or blocking waits (`SDL_LockMutex`, `SDL_SemWait`, `SDL_CondWait`, `SDL_WaitThread`). To avoid starving other threads, `SDL_SemTryWait` and `SDL_SemWaitTimeout` will yield if they fail to acquire the semaphore, see https://github.com/libsdl-org/SDL/pull/6776 for more information.
diff --git a/libs/SDL2/docs/README-nacl.md b/libs/SDL2/docs/README-nacl.md
deleted file mode 100644
index 5b05f39f6..000000000
--- a/libs/SDL2/docs/README-nacl.md
+++ /dev/null
@@ -1,103 +0,0 @@
-Native Client
-================================================================================
-
-Requirements:
-
-* Native Client SDK (https://developer.chrome.com/native-client),
- (tested with Pepper version 33 or higher).
-
-The SDL backend for Chrome's Native Client has been tested only with the PNaCl
-toolchain, which generates binaries designed to run on ARM and x86_32/64
-platforms. This does not mean it won't work with the other toolchains!
-
-================================================================================
-Building SDL for NaCl
-================================================================================
-
-Set up the right environment variables (see naclbuild.sh), then configure SDL with:
-
- configure --host=pnacl --prefix some/install/destination
-
-Then "make".
-
-As an example of how to create a deployable app a Makefile project is provided
-in test/nacl/Makefile, which includes some monkey patching of the common.mk file
-provided by NaCl, without which linking properly to SDL won't work (the search
-path can't be modified externally, so the linker won't find SDL's binaries unless
-you dump them into the SDK path, which is inconvenient).
-Also provided in test/nacl is the required support file, such as index.html,
-manifest.json, etc.
-SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
-This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
-hiding the asynchronous nature of the browser behind the scenes...which is not the
-same as making it disappear!
-
-
-================================================================================
-Running tests
-================================================================================
-
-Due to the nature of NaCl programs, building and running SDL tests is not as
-straightforward as one would hope. The script naclbuild.sh in build-scripts
-automates the process and should serve as a guide for users of SDL trying to build
-their own applications.
-
-Basic usage:
-
- ./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
-
-This will build testgles2.c by default.
-
-If you want to build a different test, for example testrendercopyex.c:
-
- SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
-
-Once the build finishes, you have to serve the contents with a web server (the
-script will give you instructions on how to do that with Python).
-
-================================================================================
-RWops and nacl_io
-================================================================================
-
-SDL_RWops work transparently with nacl_io. Two functions control the mount points:
-
- int mount(const char* source, const char* target,
- const char* filesystemtype,
- unsigned long mountflags, const void *data);
- int umount(const char *target);
-
- For convenience, SDL will by default mount an httpfs tree at / before calling
-the app's main function. Such setting can be overridden by calling:
-
- umount("/");
-
-And then mounting a different filesystem at /
-
-It's important to consider that the asynchronous nature of file operations on a
-browser is hidden from the application, effectively providing the developer with
-a set of blocking file operations just like you get in a regular desktop
-environment, which eases the job of porting to Native Client, but also introduces
-a set of challenges of its own, in particular when big file sizes and slow
-connections are involved.
-
-For more information on how nacl_io and mount points work, see:
-
- https://developer.chrome.com/native-client/devguide/coding/nacl_io
- https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
-
-To be able to save into the directory "/save/" (like backup of game) :
-
- mount("", "/save", "html5fs", 0, "type=PERSISTENT");
-
-And add to manifest.json :
-
- "permissions": [
- "unlimitedStorage"
- ]
-
-================================================================================
-TODO - Known Issues
-================================================================================
-* Testing of all systems with a real application (something other than SDL's tests)
-* Key events don't seem to work properly
-
diff --git a/libs/SDL2/docs/README-ngage.md b/libs/SDL2/docs/README-ngage.md
deleted file mode 100644
index e48096521..000000000
--- a/libs/SDL2/docs/README-ngage.md
+++ /dev/null
@@ -1,44 +0,0 @@
-Nokia N-Gage
-============
-
-SDL2 port for Symbian S60v1 and v2 with a main focus on the Nokia N-Gage
-(Classic and QD) by [Michael Fitzmayer](https://github.com/mupfdev).
-
-Compiling
----------
-
-SDL is part of the [N-Gage SDK.](https://github.com/ngagesdk) project.
-The library is included in the
-[toolchain](https://github.com/ngagesdk/ngage-toolchain) as a
-sub-module.
-
-A complete example project based on SDL2 can be found in the GitHub
-account of the SDK: [Wordle](https://github.com/ngagesdk/wordle).
-
-Current level of implementation
--------------------------------
-
-The video driver currently provides full screen video support with
-keyboard input.
-
-At the moment only the software renderer works.
-
-Audio is not yet implemented.
-
-Acknowledgements
-----------------
-
-Thanks to Hannu Viitala, Kimmo Kinnunen and Markus Mertama for the
-valuable insight into Symbian programming. Without the SDL 1.2 port
-which was specially developed for CDoom (Doom for the Nokia 9210), this
-adaptation would not have been possible.
-
-I would like to thank my friends
-[Razvan](https://twitter.com/bewarerazvan) and [Dan
-Whelan](https://danwhelan.ie/), for their continuous support. Without
-you and the [N-Gage community](https://discord.gg/dbUzqJ26vs), I would
-have lost my patience long ago.
-
-Last but not least, I would like to thank the development team of
-[EKA2L1](https://12z1.com/) (an experimental Symbian OS emulator). Your
-patience and support in troubleshooting helped me a lot.
diff --git a/libs/SDL2/docs/README-os2.md b/libs/SDL2/docs/README-os2.md
deleted file mode 100644
index 6870ee3ec..000000000
--- a/libs/SDL2/docs/README-os2.md
+++ /dev/null
@@ -1,92 +0,0 @@
-Simple DirectMedia Layer 2 for OS/2 & eComStation
-================================================================================
-SDL port for OS/2, authored by Andrey Vasilkin , 2016
-
-
-OpenGL not supported by this port.
-
-Additional optional environment variables:
-
-SDL_AUDIO_SHARE
- Values: 0 or 1, default is 0
- Initializes the device as shareable or exclusively acquired.
-
-SDL_VIDEODRIVER
- Values: DIVE or VMAN, default is DIVE
- Use video subsystem: Direct interface video extensions (DIVE) or
- Video Manager (VMAN).
-
-You may significantly increase video output speed with OS4 kernel and patched
-files vman.dll and dive.dll or with latest versions of ACPI support and video
-driver Panorama.
-
-Latest versions of OS/4 kernel:
- http://gus.biysk.ru/os4/
- (Info: https://www.os2world.com/wiki/index.php/Phoenix_OS/4)
-
-Patched files vman.dll and dive.dll:
- http://gus.biysk.ru/os4/test/pached_dll/PATCHED_DLL.RAR
-
-
-Compiling:
-----------
-
-Open Watcom 1.9 or newer is tested. For the new Open Watcom V2 fork, see:
-https://github.com/open-watcom/ and https://open-watcom.github.io
-WATCOM environment variable must to be set to the Open Watcom install
-directory. To compile, run: wmake -f Makefile.os2
-
-
-Installing:
------------
-
-- eComStation:
-
- If you have previously installed SDL2, make a Backup copy of SDL2.dll
- located in D:\ecs\dll (where D: is disk on which installed eComStation).
- Stop all programs running with SDL2. Copy SDL2.dll to D:\ecs\dll
-
-- OS/2:
-
- Copy SDL2.dll to any directory on your LIBPATH. If you have a previous
- version installed, close all SDL2 applications before replacing the old
- copy. Also make sure that any other older versions of DLLs are removed
- from your system.
-
-
-Joysticks in SDL2:
-------------------
-
-The joystick code in SDL2 is a direct forward-port from the SDL-1.2 version.
-Here is the original documentation from SDL-1.2:
-
-The Joystick detection only works for standard joysticks (2 buttons, 2 axes
-and the like). Therefore, if you use a non-standard joystick, you should
-specify its features in the SDL_OS2_JOYSTICK environment variable in a batch
-file or CONFIG.SYS, so SDL applications can provide full capability to your
-device. The syntax is:
-
-SET SDL_OS2_JOYSTICK=[JOYSTICK_NAME] [AXES] [BUTTONS] [HATS] [BALLS]
-
-So, it you have a Gravis GamePad with 4 axes, 2 buttons, 2 hats and 0 balls,
-the line should be:
-
-SET SDL_OS2_JOYSTICK=Gravis_GamePad 4 2 2 0
-
-If you want to add spaces in your joystick name, just surround it with
-quotes or double-quotes:
-
-SET SDL_OS2_JOYSTICK='Gravis GamePad' 4 2 2 0
-
-or
-
-SET SDL_OS2_JOYSTICK="Gravis GamePad" 4 2 2 0
-
- Note however that Balls and Hats are not supported under OS/2, and the
-value will be ignored... but it is wise to define these correctly because
-in the future those can be supported.
-
- Also the number of buttons is limited to 2 when using two joysticks,
-4 when using one joystick with 4 axes, 6 when using a joystick with 3 axes
-and 8 when using a joystick with 2 axes. Notice however these are limitations
-of the Joystick Port hardware, not OS/2.
diff --git a/libs/SDL2/docs/README-pandora.md b/libs/SDL2/docs/README-pandora.md
deleted file mode 100644
index 68ea774e5..000000000
--- a/libs/SDL2/docs/README-pandora.md
+++ /dev/null
@@ -1,17 +0,0 @@
-Pandora
-=====================================================================
-
-( http://openpandora.org/ )
-- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
-support to work on the pandora under the framebuffer. This driver do not have
-input support for now, so if you use it you will have to add your own control code.
-The video driver name is "pandora" so if you have problem running it from
-the framebuffer, try to set the following variable before starting your application :
-"export SDL_VIDEODRIVER=pandora"
-
-- OpenGL ES support was added to the x11 driver, so it's working like the normal
-x11 driver one with OpenGLX support, with SDL input event's etc..
-
-
-David Carré (Cpasjuste)
-cpasjuste@gmail.com
diff --git a/libs/SDL2/docs/README-platforms.md b/libs/SDL2/docs/README-platforms.md
deleted file mode 100644
index 711557dc0..000000000
--- a/libs/SDL2/docs/README-platforms.md
+++ /dev/null
@@ -1,8 +0,0 @@
-Platforms
-=========
-
-We maintain the list of supported platforms on our wiki now, and how to
-build and install SDL for those platforms:
-
- https://wiki.libsdl.org/Installation
-
diff --git a/libs/SDL2/docs/README-porting.md b/libs/SDL2/docs/README-porting.md
deleted file mode 100644
index de3059226..000000000
--- a/libs/SDL2/docs/README-porting.md
+++ /dev/null
@@ -1,68 +0,0 @@
-Porting
-=======
-
-* Porting To A New Platform
-
- The first thing you have to do when porting to a new platform, is look at
-include/SDL_platform.h and create an entry there for your operating system.
-The standard format is "__PLATFORM__", where PLATFORM is the name of the OS.
-Ideally SDL_platform.h will be able to auto-detect the system it's building
-on based on C preprocessor symbols.
-
-There are two basic ways of building SDL at the moment:
-
-1. The "UNIX" way: ./configure; make; make install
-
- If you have a GNUish system, then you might try this. Edit configure.ac,
- take a look at the large section labelled:
-
- "Set up the configuration based on the host platform!"
-
- Add a section for your platform, and then re-run autogen.sh and build!
-
-2. Using an IDE:
-
- If you're using an IDE or other non-configure build system, you'll probably
- want to create a custom SDL_config.h for your platform. Edit SDL_config.h,
- add a section for your platform, and create a custom SDL_config_{platform}.h,
- based on SDL_config_minimal.h and SDL_config.h.in
-
- Add the top level include directory to the header search path, and then add
- the following sources to the project:
-
- src/*.c
- src/atomic/*.c
- src/audio/*.c
- src/cpuinfo/*.c
- src/events/*.c
- src/file/*.c
- src/haptic/*.c
- src/joystick/*.c
- src/power/*.c
- src/render/*.c
- src/render/software/*.c
- src/stdlib/*.c
- src/thread/*.c
- src/timer/*.c
- src/video/*.c
- src/audio/disk/*.c
- src/audio/dummy/*.c
- src/filesystem/dummy/*.c
- src/video/dummy/*.c
- src/haptic/dummy/*.c
- src/joystick/dummy/*.c
- src/main/dummy/*.c
- src/thread/generic/*.c
- src/timer/dummy/*.c
- src/loadso/dummy/*.c
-
-
-Once you have a working library without any drivers, you can go back to each
-of the major subsystems and start implementing drivers for your platform.
-
-If you have any questions, don't hesitate to ask on the SDL mailing list:
- http://www.libsdl.org/mailing-list.php
-
-Enjoy!
- Sam Lantinga (slouken@libsdl.org)
-
diff --git a/libs/SDL2/docs/README-ps2.md b/libs/SDL2/docs/README-ps2.md
deleted file mode 100644
index f422da9ed..000000000
--- a/libs/SDL2/docs/README-ps2.md
+++ /dev/null
@@ -1,51 +0,0 @@
-PS2
-======
-SDL2 port for the Sony Playstation 2 contributed by:
-- Francisco Javier Trujillo Mata
-
-
-Credit to
- - The guys that ported SDL to PSP & Vita because I'm taking them as reference.
- - David G. F. for helping me with several issues and tests.
-
-## Building
-To build SDL2 library for the PS2, make sure you have the latest PS2Dev status and run:
-```bash
-cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PS2DEV/ps2sdk/ps2dev.cmake
-cmake --build build
-cmake --install build
-```
-
-## Hints
-The PS2 port has a special Hint for having a dynamic VSYNC. The Hint is `SDL_HINT_PS2_DYNAMIC_VSYNC`.
-If you enabled the dynamic vsync having as well `SDL_RENDERER_PRESENTVSYNC` enabled, then if the app is not able to run at 60 FPS, automatically the `vsync` will be disabled having a better performance, instead of droping FPS to 30.
-
-## Notes
-If you trying to debug a SDL app through [ps2client](https://github.com/ps2dev/ps2client) you need to avoid the IOP reset, otherwise you will lose the conection with your computer.
-So to avoid the reset of the IOP CPU, you need to call to the macro `SDL_PS2_SKIP_IOP_RESET();`.
-It could be something similar as:
-```c
-.....
-
-SDL_PS2_SKIP_IOP_RESET();
-
-int main(int argc, char *argv[])
-{
-.....
-```
-For a release binary is recommendable to reset the IOP always.
-
-Remember to do a clean compilation everytime you enable or disable the `SDL_PS2_SKIP_IOP_RESET` otherwise the change won't be reflected.
-
-## Getting PS2 Dev
-[Installing PS2 Dev](https://github.com/ps2dev/ps2dev)
-
-## Running on PCSX2 Emulator
-[PCSX2](https://github.com/PCSX2/pcsx2)
-
-[More PCSX2 information](https://pcsx2.net/)
-
-## To Do
-- PS2 Screen Keyboard
-- Dialogs
-- Others
diff --git a/libs/SDL2/docs/README-psp.md b/libs/SDL2/docs/README-psp.md
deleted file mode 100644
index 96ecd762d..000000000
--- a/libs/SDL2/docs/README-psp.md
+++ /dev/null
@@ -1,36 +0,0 @@
-PSP
-======
-SDL2 port for the Sony PSP contributed by:
-- Captian Lex
-- Francisco Javier Trujillo Mata
-- Wouter Wijsman
-
-
-Credit to
- Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
- Geecko for his PSP GU lib "Glib2d"
-
-## Building
-To build SDL2 library for the PSP, make sure you have the latest PSPDev status and run:
-```bash
-cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PSPDEV/psp/share/pspdev.cmake
-cmake --build build
-cmake --install build
-```
-
-
-## Getting PSP Dev
-[Installing PSP Dev](https://github.com/pspdev/pspdev)
-
-## Running on PPSSPP Emulator
-[PPSSPP](https://github.com/hrydgard/ppsspp)
-
-[Build Instructions](https://github.com/hrydgard/ppsspp/wiki/Build-instructions)
-
-
-## Compiling a HelloWorld
-[PSP Hello World](https://psp-dev.org/doku.php?id=tutorial:hello_world)
-
-## To Do
-- PSP Screen Keyboard
-- Dialogs
diff --git a/libs/SDL2/docs/README-raspberrypi.md b/libs/SDL2/docs/README-raspberrypi.md
deleted file mode 100644
index 7f9bfb19a..000000000
--- a/libs/SDL2/docs/README-raspberrypi.md
+++ /dev/null
@@ -1,180 +0,0 @@
-Raspberry Pi
-============
-
-Requirements:
-
-Raspbian (other Linux distros may work as well).
-
-Features
---------
-
-* Works without X11
-* Hardware accelerated OpenGL ES 2.x
-* Sound via ALSA
-* Input (mouse/keyboard/joystick) via EVDEV
-* Hotplugging of input devices via UDEV
-
-
-Raspbian Build Dependencies
----------------------------
-
-sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
-
-You also need the VideoCore binary stuff that ships in /opt/vc for EGL and
-OpenGL ES 2.x, it usually comes pre-installed, but in any case:
-
-sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
-
-
-NEON
-----
-
-If your Pi has NEON support, make sure you add -mfpu=neon to your CFLAGS so
-that SDL will select some otherwise-disabled highly-optimized code. The
-original Pi units don't have NEON, the Pi2 probably does, and the Pi3
-definitely does.
-
-
-Cross compiling from x86 Linux
-------------------------------
-
-To cross compile SDL for Raspbian from your desktop machine, you'll need a
-Raspbian system root and the cross compilation tools. We'll assume these tools
-will be placed in /opt/rpi-tools
-
- sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
-
-You'll also need a Raspbian binary image.
-Get it from: http://downloads.raspberrypi.org/raspbian_latest
-After unzipping, you'll get file with a name like: "-wheezy-raspbian.img"
-Let's assume the sysroot will be built in /opt/rpi-sysroot.
-
- export SYSROOT=/opt/rpi-sysroot
- sudo kpartx -a -v .img
- sudo mount -o loop /dev/mapper/loop0p2 /mnt
- sudo cp -r /mnt $SYSROOT
- sudo apt-get install qemu binfmt-support qemu-user-static
- sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
- sudo mount --bind /dev $SYSROOT/dev
- sudo mount --bind /proc $SYSROOT/proc
- sudo mount --bind /sys $SYSROOT/sys
-
-Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
-edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
-
- sudo chroot $SYSROOT
- apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev
- exit
- sudo umount $SYSROOT/dev
- sudo umount $SYSROOT/proc
- sudo umount $SYSROOT/sys
- sudo umount /mnt
-
-There's one more fix required, as the libdl.so symlink uses an absolute path
-which doesn't quite work in our setup.
-
- sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
- sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
-
-The final step is compiling SDL itself.
-
- export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux"
- cd
- mkdir -p build;cd build
- LDFLAGS="-L$SYSROOT/opt/vc/lib" ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
- make
- make install
-
-To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
-
- perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
-
-Apps don't work or poor video/audio performance
------------------------------------------------
-
-If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to
-update the RPi's firmware. Note that doing so will fix these problems, but it
-will also render the CMA - Dynamic Memory Split functionality useless.
-
-Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
-low in general, specially if a 1080p TV is hooked up.
-
-See here how to configure this setting: http://elinux.org/RPiconfig
-
-Using a fixed gpu_mem=128 is the best option (specially if you updated the
-firmware, using CMA probably won't work, at least it's the current case).
-
-No input
---------
-
-Make sure you belong to the "input" group.
-
- sudo usermod -aG input `whoami`
-
-No HDMI Audio
--------------
-
-If you notice that ALSA works but there's no audio over HDMI, try adding:
-
- hdmi_drive=2
-
-to your config.txt file and reboot.
-
-Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
-
-Text Input API support
-----------------------
-
-The Text Input API is supported, with translation of scan codes done via the
-kernel symbol tables. For this to work, SDL needs access to a valid console.
-If you notice there's no SDL_TEXTINPUT message being emitted, double check that
-your app has read access to one of the following:
-
-* /proc/self/fd/0
-* /dev/tty
-* /dev/tty[0...6]
-* /dev/vc/0
-* /dev/console
-
-This is usually not a problem if you run from the physical terminal (as opposed
-to running from a pseudo terminal, such as via SSH). If running from a PTS, a
-quick workaround is to run your app as root or add yourself to the tty group,
-then re-login to the system.
-
- sudo usermod -aG tty `whoami`
-
-The keyboard layout used by SDL is the same as the one the kernel uses.
-To configure the layout on Raspbian:
-
- sudo dpkg-reconfigure keyboard-configuration
-
-To configure the locale, which controls which keys are interpreted as letters,
-this determining the CAPS LOCK behavior:
-
- sudo dpkg-reconfigure locales
-
-
-OpenGL problems
----------------
-
-If you have desktop OpenGL headers installed at build time in your RPi or cross
-compilation environment, support for it will be built in. However, the chipset
-does not actually have support for it, which causes issues in certain SDL apps
-since the presence of OpenGL support supersedes the ES/ES2 variants.
-The workaround is to disable OpenGL at configuration time:
-
- ./configure --disable-video-opengl
-
-Or if the application uses the Render functions, you can use the SDL_RENDER_DRIVER
-environment variable:
-
- export SDL_RENDER_DRIVER=opengles2
-
-Notes
------
-
-* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
- leaking into the console only if it has root privileges. Launching apps locally
- does not suffer from this issue.
-
-
diff --git a/libs/SDL2/docs/README-riscos.md b/libs/SDL2/docs/README-riscos.md
deleted file mode 100644
index e4e056b3b..000000000
--- a/libs/SDL2/docs/README-riscos.md
+++ /dev/null
@@ -1,41 +0,0 @@
-RISC OS
-=======
-
-Requirements:
-
-* RISC OS 3.5 or later.
-* [SharedUnixLibrary](http://www.riscos.info/packages/LibraryDetails.html#SharedUnixLibraryarm).
-* [DigitalRenderer](http://www.riscos.info/packages/LibraryDetails.html#DRendererarm), for audio support.
-* [Iconv](http://www.netsurf-browser.org/projects/iconv/), for `SDL_iconv` and related functions.
-
-
-Compiling:
-----------
-
-Currently, SDL2 for RISC OS only supports compiling with GCCSDK under Linux. Both the autoconf and CMake build systems are supported.
-
-The following commands can be used to build SDL2 for RISC OS using autoconf:
-
- ./configure --host=arm-unknown-riscos --prefix=$GCCSDK_INSTALL_ENV --disable-gcc-atomics
- make
- make install
-
-The following commands can be used to build SDL2 for RISC OS using CMake:
-
- cmake -Bbuild-riscos -DCMAKE_TOOLCHAIN_FILE=$GCCSDK_INSTALL_ENV/toolchain-riscos.cmake -DRISCOS=ON -DCMAKE_INSTALL_PREFIX=$GCCSDK_INSTALL_ENV -DCMAKE_BUILD_TYPE=Release -DSDL_GCC_ATOMICS=OFF
- cmake --build build-riscos
- cmake --build build-riscos --target install
-
-
-Current level of implementation
--------------------------------
-
-The video driver currently provides full screen video support with keyboard and mouse input. Windowed mode is not yet supported, but is planned in the future. Only software rendering is supported.
-
-The filesystem APIs return either Unix-style paths or RISC OS-style paths based on the value of the `__riscosify_control` symbol, as is standard for UnixLib functions.
-
-The audio, loadso, thread and timer APIs are currently provided by UnixLib.
-
-GCC atomics are currently broken on some platforms, meaning it's currently necessary to compile with `--disable-gcc-atomics` using autotools or `-DSDL_GCC_ATOMICS=OFF` using CMake.
-
-The joystick, locale and power APIs are not yet implemented.
diff --git a/libs/SDL2/docs/README-touch.md b/libs/SDL2/docs/README-touch.md
deleted file mode 100644
index 66c1b2b32..000000000
--- a/libs/SDL2/docs/README-touch.md
+++ /dev/null
@@ -1,86 +0,0 @@
-Touch
-===========================================================================
-System Specific Notes
-===========================================================================
-Linux:
-The linux touch system is currently based off event streams, and proc/bus/devices. The active user must be given permissions to read /dev/input/TOUCHDEVICE, where TOUCHDEVICE is the event stream for your device. Currently only Wacom tablets are supported. If you have an unsupported tablet contact me at jim.tla+sdl_touch@gmail.com and I will help you get support for it.
-
-Mac:
-The Mac and iPhone APIs are pretty. If your touch device supports them then you'll be fine. If it doesn't, then there isn't much we can do.
-
-iPhone:
-Works out of box.
-
-Windows:
-Unfortunately there is no windows support as of yet. Support for Windows 7 is planned, but we currently have no way to test. If you have a Windows 7 WM_TOUCH supported device, and are willing to help test please contact me at jim.tla+sdl_touch@gmail.com
-
-===========================================================================
-Events
-===========================================================================
-SDL_FINGERDOWN:
-Sent when a finger (or stylus) is placed on a touch device.
-Fields:
-* event.tfinger.touchId - the Id of the touch device.
-* event.tfinger.fingerId - the Id of the finger which just went down.
-* event.tfinger.x - the x coordinate of the touch (0..1)
-* event.tfinger.y - the y coordinate of the touch (0..1)
-* event.tfinger.pressure - the pressure of the touch (0..1)
-
-SDL_FINGERMOTION:
-Sent when a finger (or stylus) is moved on the touch device.
-Fields:
-Same as SDL_FINGERDOWN but with additional:
-* event.tfinger.dx - change in x coordinate during this motion event.
-* event.tfinger.dy - change in y coordinate during this motion event.
-
-SDL_FINGERUP:
-Sent when a finger (or stylus) is lifted from the touch device.
-Fields:
-Same as SDL_FINGERDOWN.
-
-
-===========================================================================
-Functions
-===========================================================================
-SDL provides the ability to access the underlying SDL_Finger structures.
-These structures should _never_ be modified.
-
-The following functions are included from SDL_touch.h
-
-To get a SDL_TouchID call SDL_GetTouchDevice(int index).
-This returns a SDL_TouchID.
-IMPORTANT: If the touch has been removed, or there is no touch with the given index, SDL_GetTouchDevice() will return 0. Be sure to check for this!
-
-The number of touch devices can be queried with SDL_GetNumTouchDevices().
-
-A SDL_TouchID may be used to get pointers to SDL_Finger.
-
-SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
-
-The most common reason to access SDL_Finger is to query the fingers outside the event. In most cases accessing the fingers is using the event. This would be accomplished by code like the following:
-
- float x = event.tfinger.x;
- float y = event.tfinger.y;
-
-
-
-To get a SDL_Finger, call SDL_GetTouchFinger(SDL_TouchID touchID, int index), where touchID is a SDL_TouchID, and index is the requested finger.
-This returns a SDL_Finger *, or NULL if the finger does not exist, or has been removed.
-A SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus _before_ the SDL_FINGERUP event is polled.
-As a result, be very careful to check for NULL return values.
-
-A SDL_Finger has the following fields:
-* x, y:
- The current coordinates of the touch.
-* pressure:
- The pressure of the touch.
-
-
-===========================================================================
-Notes
-===========================================================================
-For a complete example see test/testgesture.c
-
-Please direct questions/comments to:
- jim.tla+sdl_touch@gmail.com
- (original author, API was changed since)
diff --git a/libs/SDL2/docs/README-versions.md b/libs/SDL2/docs/README-versions.md
deleted file mode 100644
index d54bf40c1..000000000
--- a/libs/SDL2/docs/README-versions.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Versioning
-
-## Since 2.23.0
-
-SDL follows an "odd/even" versioning policy, similar to GLib, GTK, Flatpak
-and older versions of the Linux kernel:
-
-* The major version (first part) increases when backwards compatibility
- is broken, which will happen infrequently.
-
-* If the minor version (second part) is divisible by 2
- (for example 2.24.x, 2.26.x), this indicates a version of SDL that
- is believed to be stable and suitable for production use.
-
- * In stable releases, the patchlevel or micro version (third part)
- indicates bugfix releases. Bugfix releases should not add or
- remove ABI, so the ".0" release (for example 2.24.0) should be
- forwards-compatible with all the bugfix releases from the
- same cycle (for example 2.24.1).
-
- * The minor version increases when new API or ABI is added, or when
- other significant changes are made. Newer minor versions are
- backwards-compatible, but not fully forwards-compatible.
- For example, programs built against SDL 2.24.x should work fine
- with SDL 2.26.x, but programs built against SDL 2.26.x will not
- necessarily work with 2.24.x.
-
-* If the minor version (second part) is not divisible by 2
- (for example 2.23.x, 2.25.x), this indicates a development prerelease
- of SDL that is not suitable for stable software distributions.
- Use with caution.
-
- * The patchlevel or micro version (third part) increases with
- each prerelease.
-
- * Each prerelease might add new API and/or ABI.
-
- * Prereleases are backwards-compatible with older stable branches.
- For example, 2.25.x will be backwards-compatible with 2.24.x.
-
- * Prereleases are not guaranteed to be backwards-compatible with
- each other. For example, new API or ABI added in 2.25.1
- might be removed or changed in 2.25.2.
- If this would be a problem for you, please do not use prereleases.
-
- * Only upgrade to a prerelease if you can guarantee that you will
- promptly upgrade to the stable release that follows it.
- For example, do not upgrade to 2.23.x unless you will be able to
- upgrade to 2.24.0 when it becomes available.
-
- * Software distributions that have a freeze policy (in particular Linux
- distributions with a release cycle, such as Debian and Fedora)
- should usually only package stable releases, and not prereleases.
-
-## Before 2.23.0
-
-Older versions of SDL followed a similar policy, but instead of the
-odd/even rule applying to the minor version, it applied to the patchlevel
-(micro version, third part). For example, 2.0.22 was a stable release
-and 2.0.21 was a prerelease.
diff --git a/libs/SDL2/docs/README-visualc.md b/libs/SDL2/docs/README-visualc.md
deleted file mode 100644
index fd34b35e1..000000000
--- a/libs/SDL2/docs/README-visualc.md
+++ /dev/null
@@ -1,114 +0,0 @@
-Using SDL with Microsoft Visual C++
-===================================
-
-### by Lion Kimbro with additions by James Turk
-
-You can either use the precompiled libraries from the [SDL](https://www.libsdl.org/download.php) web site, or you can build SDL
-yourself.
-
-### Building SDL
-
-0. To build SDL, your machine must, at a minimum, have the DirectX9.0c SDK installed. It may or may not be retrievable from
-the [Microsoft](https://www.microsoft.com) website, so you might need to locate it [online](https://duckduckgo.com/?q=directx9.0c+sdk+download&t=h_&ia=web).
-_Editor's note: I've been able to successfully build SDL using Visual Studio 2019 **without** the DX9.0c SDK_
-
-1. Open the Visual Studio solution file at `./VisualC/SDL.sln`.
-
-2. Your IDE will likely prompt you to upgrade this solution file to whatever later version of the IDE you're using. In the `Retarget Projects` dialog,
-all of the affected project files should be checked allowing you to use the latest `Windows SDK Version` you have installed, along with
-the `Platform Toolset`.
-
-If you choose *NOT* to upgrade to use the latest `Windows SDK Version` or `Platform Toolset`, then you'll need the `Visual Studio 2010 Platform Toolset`.
-
-3. Build the `.dll` and `.lib` files by right clicking on each project in turn (Projects are listed in the _Workspace_
-panel in the _FileView_ tab), and selecting `Build`.
-
-You may get a few warnings, but you should not get any errors.
-
-Later, we will refer to the following `.lib` and `.dll` files that have just been generated:
-
-- `./VisualC/Win32/Debug/SDL2.dll` or `./VisualC/Win32/Release/SDL2.dll`
-- `./VisualC/Win32/Debug/SDL2.lib` or `./VisualC/Win32/Release/SDL2.lib`
-- `./VisualC/Win32/Debug/SDL2main.lib` or `./VisualC/Win32/Release/SDL2main.lib`
-
-_Note for the `x64` versions, just replace `Win32` in the path with `x64`_
-
-### Creating a Project with SDL
-
-- Create a project as a `Win32 Application`.
-
-- Create a C++ file for your project.
-
-- Set the C runtime to `Multi-threaded DLL` in the menu:
-`Project|Settings|C/C++ tab|Code Generation|Runtime Library `.
-
-- Add the SDL `include` directory to your list of includes in the menu:
-`Project|Settings|C/C++ tab|Preprocessor|Additional include directories `
-
-*VC7 Specific: Instead of doing this, I find it easier to add the
-include and library directories to the list that VC7 keeps. Do this by
-selecting Tools|Options|Projects|VC++ Directories and under the "Show
-Directories For:" dropbox select "Include Files", and click the "New
-Directory Icon" and add the [SDLROOT]\\include directory (e.g. If you
-installed to c:\\SDL\\ add c:\\SDL\\include). Proceed to change the
-dropbox selection to "Library Files" and add [SDLROOT]\\lib.*
-
-The "include directory" I am referring to is the `./include` folder.
-
-Now we're going to use the files that we had created earlier in the *Build SDL* step.
-
-Copy the following file into your Project directory:
-
-- `SDL2.dll`
-
-Add the following files to your project (It is not necessary to copy them to your project directory):
-
-- `SDL2.lib`
-- `SDL2main.lib`
-
-To add them to your project, right click on your project, and select
-`Add files to project`.
-
-**Instead of adding the files to your project, it is more desirable to add them to the linker options: Project|Properties|Linker|Command Line
-and type the names of the libraries to link with in the "Additional Options:" box. Note: This must be done for each build configuration
-(e.g. Release,Debug).**
-
-### Hello SDL2
-
-Here's a sample SDL snippet to verify everything is setup in your IDE:
-
-```
- #include "SDL.h"
-
- int main( int argc, char* argv[] )
- {
- const int WIDTH = 640;
- const int HEIGHT = 480;
- SDL_Window* window = NULL;
- SDL_Renderer* renderer = NULL;
-
- SDL_Init(SDL_INIT_VIDEO);
- window = SDL_CreateWindow("SDL2 Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
- renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
-
- SDL_DestroyRenderer(renderer);
- SDL_DestroyWindow(window);
- SDL_Quit();
- return 0;
- }
- ```
-
-### That's it!
-
-I hope that this document has helped you get through the most difficult part of using the SDL: installing it.
-Suggestions for improvements should be posted to the [Github Issues](https://github.com/libsdl-org/SDL/issues).
-
-### Credits
-
-Thanks to [Paulus Esterhazy](mailto:pesterhazy@gmx.net), for the work on VC++ port.
-
-This document was originally called "VisualC.txt", and was written by [Sam Lantinga](mailto:slouken@libsdl.org).
-
-Later, it was converted to HTML and expanded into the document that you see today by [Lion Kimbro](mailto:snowlion@sprynet.com).
-
-Minor Fixes and Visual C++ 7 Information (In Green) was added by [James Turk](mailto:james@conceptofzero.net)
diff --git a/libs/SDL2/docs/README-vita.md b/libs/SDL2/docs/README-vita.md
deleted file mode 100644
index 3dbaf1cd4..000000000
--- a/libs/SDL2/docs/README-vita.md
+++ /dev/null
@@ -1,33 +0,0 @@
-PS Vita
-=======
-SDL port for the Sony Playstation Vita and Sony Playstation TV
-
-Credit to
-* xerpi, cpasjuste and rsn8887 for initial (vita2d) port
-* vitasdk/dolcesdk devs
-* CBPS discord (Namely Graphene and SonicMastr)
-
-Building
---------
-To build for the PSVita, make sure you have vitasdk and cmake installed and run:
-```
- cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release
- cmake --build build
- cmake --install build
-```
-
-
-Notes
------
-* gles1/gles2 support and renderers are disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PVR=ON`
- These renderers support 720p and 1080i resolutions. These can be specified with:
- `SDL_setenv("VITA_RESOLUTION", "720", 1);` and `SDL_setenv("VITA_RESOLUTION", "1080", 1);`
-* Desktop GL 1.X and 2.X support and renderers are also disabled by default and also can be enabled with `-DVIDEO_VITA_PVR=ON` as long as gl4es4vita is present in your SDK.
- They support the same resolutions as the gles1/gles2 backends and require specifying `SDL_setenv("VITA_PVR_OGL", "1", 1);`
- anytime before video subsystem initialization.
-* gles2 support via PIB is disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PIB=ON`
-* By default SDL emits mouse events for touch events on every touchscreen.
- Vita has two touchscreens, so it's recommended to use `SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0");` and handle touch events instead.
- Individual touchscreens can be disabled with:
- `SDL_setenv("VITA_DISABLE_TOUCH_FRONT", "1", 1);` and `SDL_setenv("VITA_DISABLE_TOUCH_BACK", "1", 1);`
-* Support for L2/R2/R3/R3 buttons, haptic feedback and gamepad led only available on PSTV, or when using external ds4 gamepad on vita.
diff --git a/libs/SDL2/docs/README-wince.md b/libs/SDL2/docs/README-wince.md
deleted file mode 100644
index d5fb64fcb..000000000
--- a/libs/SDL2/docs/README-wince.md
+++ /dev/null
@@ -1,10 +0,0 @@
-WinCE
-=====
-
-Windows CE is no longer supported by SDL.
-
-We have left the CE support in SDL 1.2 for those that must have it, and we
-have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
-
---ryan.
-
diff --git a/libs/SDL2/docs/README-windows.md b/libs/SDL2/docs/README-windows.md
deleted file mode 100644
index cd29c1f92..000000000
--- a/libs/SDL2/docs/README-windows.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Windows
-
-## LLVM and Intel C++ compiler support
-
-SDL will build with the Visual Studio project files with LLVM-based compilers, such as the Intel oneAPI C++
-compiler, but you'll have to manually add the "-msse3" command line option
-to at least the SDL_audiocvt.c source file, and possibly others. This may
-not be necessary if you build SDL with CMake instead of the included Visual
-Studio solution.
-
-Details are here: https://github.com/libsdl-org/SDL/issues/5186
-
-
-## OpenGL ES 2.x support
-
-SDL has support for OpenGL ES 2.x under Windows via two alternative
-implementations.
-
-The most straightforward method consists in running your app in a system with
-a graphic card paired with a relatively recent (as of November of 2013) driver
-which supports the WGL_EXT_create_context_es2_profile extension. Vendors known
-to ship said extension on Windows currently include nVidia and Intel.
-
-The other method involves using the
-[ANGLE library](https://code.google.com/p/angleproject/). If an OpenGL ES 2.x
-context is requested and no WGL_EXT_create_context_es2_profile extension is
-found, SDL will try to load the libEGL.dll library provided by ANGLE.
-
-To obtain the ANGLE binaries, you can either compile from source from
-https://chromium.googlesource.com/angle/angle or copy the relevant binaries
-from a recent Chrome/Chromium install for Windows. The files you need are:
-
-- libEGL.dll
-- libGLESv2.dll
-- d3dcompiler_46.dll (supports Windows Vista or later, better shader
- compiler) *or* d3dcompiler_43.dll (supports Windows XP or later)
-
-If you compile ANGLE from source, you can configure it so it does not need the
-d3dcompiler_* DLL at all (for details on this, see their documentation).
-However, by default SDL will try to preload the d3dcompiler_46.dll to
-comply with ANGLE's requirements. If you wish SDL to preload
-d3dcompiler_43.dll (to support Windows XP) or to skip this step at all, you
-can use the SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more
-details).
-
-Known Bugs:
-
-- SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
- that there's a bug in the library which prevents the window contents from
- refreshing if this is set to anything other than the default value.
-
-## Vulkan Surface Support
-
-Support for creating Vulkan surfaces is configured on by default. To disable
-it change the value of `SDL_VIDEO_VULKAN` to 0 in `SDL_config_windows.h`. You
-must install the [Vulkan SDK](https://www.lunarg.com/vulkan-sdk/) in order to
-use Vulkan graphics in your application.
-
diff --git a/libs/SDL2/docs/README-winrt.md b/libs/SDL2/docs/README-winrt.md
deleted file mode 100644
index f4a91172f..000000000
--- a/libs/SDL2/docs/README-winrt.md
+++ /dev/null
@@ -1,519 +0,0 @@
-WinRT
-=====
-
-This port allows SDL applications to run on Microsoft's platforms that require
-use of "Windows Runtime", aka. "WinRT", APIs. Microsoft may, in some cases,
-refer to them as either "Windows Store", or for Windows 10, "UWP" apps.
-
-In the past, SDL has supported Windows RT 8.x, Windows Phone, etc, but in
-modern times this port is focused on UWP apps, which run on Windows 10,
-and modern Xbox consoles.
-
-
-Requirements
-------------
-
-* Microsoft Visual C++ (aka Visual Studio) 2019.
- - Free, "Community" or "Express" editions may be used, so long as they
- include support for either "Windows Store" or "Windows Phone" apps.
- "Express" versions marked as supporting "Windows Desktop" development
- typically do not include support for creating WinRT apps, to note.
- (The "Community" editions of Visual C++ do, however, support both
- desktop/Win32 and WinRT development).
-* A valid Microsoft account - This requirement is not imposed by SDL, but
- rather by Microsoft's Visual C++ toolchain. This is required to launch or
- debug apps.
-
-
-Status
-------
-
-Here is a rough list of what works, and what doesn't:
-
-* What works:
- * compilation via Visual C++ 2019.
- * compile-time platform detection for SDL programs. The C/C++ #define,
- `__WINRT__`, will be set to 1 (by SDL) when compiling for WinRT.
- * GPU-accelerated 2D rendering, via SDL_Renderer.
- * OpenGL ES 2, via the ANGLE library (included separately from SDL)
- * software rendering, via either SDL_Surface (optionally in conjunction with
- SDL_GetWindowSurface() and SDL_UpdateWindowSurface()) or via the
- SDL_Renderer APIs
- * threads
- * timers (via SDL_GetTicks(), SDL_AddTimer(), SDL_GetPerformanceCounter(),
- SDL_GetPerformanceFrequency(), etc.)
- * file I/O via SDL_RWops
- * mouse input (unsupported on Windows Phone)
- * audio, via SDL's WASAPI backend (if you want to record, your app must
- have "Microphone" capabilities enabled in its manifest, and the user must
- not have blocked access. Otherwise, capture devices will fail to work,
- presenting as a device disconnect shortly after opening it.)
- * .DLL file loading. Libraries *MUST* be packaged inside applications. Loading
- anything outside of the app is not supported.
- * system path retrieval via SDL's filesystem APIs
- * game controllers. Support is provided via the SDL_Joystick and
- SDL_GameController APIs, and is backed by Microsoft's XInput API. Please
- note, however, that Windows limits game-controller support in UWP apps to,
- "Xbox compatible controllers" (many controllers that work in Win32 apps,
- do not work in UWP, due to restrictions in UWP itself.)
- * multi-touch input
- * app events. SDL_APP_WILLENTER* and SDL_APP_DIDENTER* events get sent out as
- appropriate.
- * window events
- * using Direct3D 11.x APIs outside of SDL. Non-XAML / Direct3D-only apps can
- choose to render content directly via Direct3D, using SDL to manage the
- internal WinRT window, as well as input and audio. (Use
- SDL_GetWindowWMInfo() to get the WinRT 'CoreWindow', and pass it into
- IDXGIFactory2::CreateSwapChainForCoreWindow() as appropriate.)
-
-* What partially works:
- * keyboard input. Most of WinRT's documented virtual keys are supported, as
- well as many keys with documented hardware scancodes. Converting
- SDL_Scancodes to or from SDL_Keycodes may not work, due to missing APIs
- (MapVirtualKey()) in Microsoft's Windows Store / UWP APIs.
- * SDLmain. WinRT uses a different signature for each app's main() function.
- SDL-based apps that use this port must compile in SDL_winrt_main_NonXAML.cpp
- (in `SDL\src\main\winrt\`) directly in order for their C-style main()
- functions to be called.
-
-* What doesn't work:
- * compilation with anything other than Visual C++
- * programmatically-created custom cursors. These don't appear to be supported
- by WinRT. Different OS-provided cursors can, however, be created via
- SDL_CreateSystemCursor() (unsupported on Windows Phone)
- * SDL_WarpMouseInWindow() or SDL_WarpMouseGlobal(). This are not currently
- supported by WinRT itself.
- * joysticks and game controllers that either are not supported by
- Microsoft's XInput API, or are not supported within UWP apps (many
- controllers that work in Win32, do not work in UWP, due to restrictions in
- UWP itself).
- * turning off VSync when rendering on Windows Phone. Attempts to turn VSync
- off on Windows Phone result either in Direct3D not drawing anything, or it
- forcing VSync back on. As such, SDL_RENDERER_PRESENTVSYNC will always get
- turned-on on Windows Phone. This limitation is not present in non-Phone
- WinRT (such as Windows 8.x), where turning off VSync appears to work.
- * probably anything else that's not listed as supported
-
-
-
-Upgrade Notes
--------------
-
-#### SDL_GetPrefPath() usage when upgrading WinRT apps from SDL 2.0.3
-
-SDL 2.0.4 fixes two bugs found in the WinRT version of SDL_GetPrefPath().
-The fixes may affect older, SDL 2.0.3-based apps' save data. Please note
-that these changes only apply to SDL-based WinRT apps, and not to apps for
-any other platform.
-
-1. SDL_GetPrefPath() would return an invalid path, one in which the path's
- directory had not been created. Attempts to create files there
- (via fopen(), for example), would fail, unless that directory was
- explicitly created beforehand.
-
-2. SDL_GetPrefPath(), for non-WinPhone-based apps, would return a path inside
- a WinRT 'Roaming' folder, the contents of which get automatically
- synchronized across multiple devices. This process can occur while an
- application runs, and can cause existing save-data to be overwritten
- at unexpected times, with data from other devices. (Windows Phone apps
- written with SDL 2.0.3 did not utilize a Roaming folder, due to API
- restrictions in Windows Phone 8.0).
-
-
-SDL_GetPrefPath(), starting with SDL 2.0.4, addresses these by:
-
-1. making sure that SDL_GetPrefPath() returns a directory in which data
- can be written to immediately, without first needing to create directories.
-
-2. basing SDL_GetPrefPath() off of a different, non-Roaming folder, the
- contents of which do not automatically get synchronized across devices
- (and which require less work to use safely, in terms of data integrity).
-
-Apps that wish to get their Roaming folder's path can do so either by using
-SDL_WinRTGetFSPathUTF8(), SDL_WinRTGetFSPathUNICODE() (which returns a
-UCS-2/wide-char string), or directly through the WinRT class,
-Windows.Storage.ApplicationData.
-
-
-
-Setup, High-Level Steps
------------------------
-
-The steps for setting up a project for an SDL/WinRT app looks like the
-following, at a high-level:
-
-1. create a new Visual C++ project using Microsoft's template for a,
- "Direct3D App".
-2. remove most of the files from the project.
-3. make your app's project directly reference SDL/WinRT's own Visual C++
- project file, via use of Visual C++'s "References" dialog. This will setup
- the linker, and will copy SDL's .dll files to your app's final output.
-4. adjust your app's build settings, at minimum, telling it where to find SDL's
- header files.
-5. add files that contains a WinRT-appropriate main function, along with some
- data to make sure mouse-cursor-hiding (via SDL_ShowCursor(SDL_DISABLE) calls)
- work properly.
-6. add SDL-specific app code.
-7. build and run your app.
-
-
-Setup, Detailed Steps
----------------------
-
-### 1. Create a new project ###
-
-Create a new project using one of Visual C++'s templates for a plain, non-XAML,
-"Direct3D App" (XAML support for SDL/WinRT is not yet ready for use). If you
-don't see one of these templates, in Visual C++'s 'New Project' dialog, try
-using the textbox titled, 'Search Installed Templates' to look for one.
-
-
-### 2. Remove unneeded files from the project ###
-
-In the new project, delete any file that has one of the following extensions:
-
-- .cpp
-- .h
-- .hlsl
-
-When you are done, you should be left with a few files, each of which will be a
-necessary part of your app's project. These files will consist of:
-
-- an .appxmanifest file, which contains metadata on your WinRT app. This is
- similar to an Info.plist file on iOS, or an AndroidManifest.xml on Android.
-- a few .png files, one of which is a splash screen (displayed when your app
- launches), others are app icons.
-- a .pfx file, used for code signing purposes.
-
-
-### 3. Add references to SDL's project files ###
-
-SDL/WinRT can be built in multiple variations, spanning across three different
-CPU architectures (x86, x64, and ARM) and two different configurations
-(Debug and Release). WinRT and Visual C++ do not currently provide a means
-for combining multiple variations of one library into a single file.
-Furthermore, it does not provide an easy means for copying pre-built .dll files
-into your app's final output (via Post-Build steps, for example). It does,
-however, provide a system whereby an app can reference the MSVC projects of
-libraries such that, when the app is built:
-
-1. each library gets built for the appropriate CPU architecture(s) and WinRT
- platform(s).
-2. each library's output, such as .dll files, get copied to the app's build
- output.
-
-To set this up for SDL/WinRT, you'll need to run through the following steps:
-
-1. open up the Solution Explorer inside Visual C++ (under the "View" menu, then
- "Solution Explorer")
-2. right click on your app's solution.
-3. navigate to "Add", then to "Existing Project..."
-4. find SDL/WinRT's Visual C++ project file and open it, in the `VisualC-WinRT`
- directory.
-5. once the project has been added, right-click on your app's project and
- select, "References..."
-6. click on the button titled, "Add New Reference..."
-7. check the box next to SDL
-8. click OK to close the dialog
-9. SDL will now show up in the list of references. Click OK to close that
- dialog.
-
-Your project is now linked to SDL's project, insofar that when the app is
-built, SDL will be built as well, with its build output getting included with
-your app.
-
-
-### 4. Adjust Your App's Build Settings ###
-
-Some build settings need to be changed in your app's project. This guide will
-outline the following:
-
-- making sure that the compiler knows where to find SDL's header files
-- **Optional for C++, but NECESSARY for compiling C code:** telling the
- compiler not to use Microsoft's C++ extensions for WinRT development.
-- **Optional:** telling the compiler not generate errors due to missing
- precompiled header files.
-
-To change these settings:
-
-1. right-click on the project
-2. choose "Properties"
-3. in the drop-down box next to "Configuration", choose, "All Configurations"
-4. in the drop-down box next to "Platform", choose, "All Platforms"
-5. in the left-hand list, expand the "C/C++" section
-6. select "General"
-7. edit the "Additional Include Directories" setting, and add a path to SDL's
- "include" directory
-8. **Optional: to enable compilation of C code:** change the setting for
- "Consume Windows Runtime Extension" from "Yes (/ZW)" to "No". If you're
- working with a completely C++ based project, this step can usually be
- omitted.
-9. **Optional: to disable precompiled headers (which can produce
- 'stdafx.h'-related build errors, if setup incorrectly:** in the left-hand
- list, select "Precompiled Headers", then change the setting for "Precompiled
- Header" from "Use (/Yu)" to "Not Using Precompiled Headers".
-10. close the dialog, saving settings, by clicking the "OK" button
-
-
-### 5. Add a WinRT-appropriate main function, and a blank-cursor image, to the app. ###
-
-A few files should be included directly in your app's MSVC project, specifically:
-1. a WinRT-appropriate main function (which is different than main() functions on
- other platforms)
-2. a Win32-style cursor resource, used by SDL_ShowCursor() to hide the mouse cursor
- (if and when the app needs to do so). *If this cursor resource is not
- included, mouse-position reporting may fail if and when the cursor is
- hidden, due to possible bugs/design-oddities in Windows itself.*
-
-To include these files for C/C++ projects:
-
-1. right-click on your project (again, in Visual C++'s Solution Explorer),
- navigate to "Add", then choose "Existing Item...".
-2. navigate to the directory containing SDL's source code, then into its
- subdirectory, 'src/main/winrt/'. Select, then add, the following files:
- - `SDL_winrt_main_NonXAML.cpp`
- - `SDL2-WinRTResources.rc`
- - `SDL2-WinRTResource_BlankCursor.cur`
-3. right-click on the file `SDL_winrt_main_NonXAML.cpp` (as listed in your
- project), then click on "Properties...".
-4. in the drop-down box next to "Configuration", choose, "All Configurations"
-5. in the drop-down box next to "Platform", choose, "All Platforms"
-6. in the left-hand list, click on "C/C++"
-7. change the setting for "Consume Windows Runtime Extension" to "Yes (/ZW)".
-8. click the OK button. This will close the dialog.
-
-**NOTE: C++/CX compilation is currently required in at least one file of your
-app's project. This is to make sure that Visual C++'s linker builds a 'Windows
-Metadata' file (.winmd) for your app. Not doing so can lead to build errors.**
-
-For non-C++ projects, you will need to call SDL_WinRTRunApp from your language's
-main function, and generate SDL2-WinRTResources.res manually by using `rc` via
-the Developer Command Prompt and including it as a within the
-first block in your Visual Studio project file.
-
-### 6. Add app code and assets ###
-
-At this point, you can add in SDL-specific source code. Be sure to include a
-C-style main function (ie: `int main(int argc, char *argv[])`). From there you
-should be able to create a single `SDL_Window` (WinRT apps can only have one
-window, at present), as well as an `SDL_Renderer`. Direct3D will be used to
-draw content. Events are received via SDL's usual event functions
-(`SDL_PollEvent`, etc.) If you have a set of existing source files and assets,
-you can start adding them to the project now. If not, or if you would like to
-make sure that you're setup correctly, some short and simple sample code is
-provided below.
-
-
-#### 6.A. ... when creating a new app ####
-
-If you are creating a new app (rather than porting an existing SDL-based app),
-or if you would just like a simple app to test SDL/WinRT with before trying to
-get existing code working, some working SDL/WinRT code is provided below. To
-set this up:
-
-1. right click on your app's project
-2. select Add, then New Item. An "Add New Item" dialog will show up.
-3. from the left-hand list, choose "Visual C++"
-4. from the middle/main list, choose "C++ File (.cpp)"
-5. near the bottom of the dialog, next to "Name:", type in a name for your
-source file, such as, "main.cpp".
-6. click on the Add button. This will close the dialog, add the new file to
-your project, and open the file in Visual C++'s text editor.
-7. Copy and paste the following code into the new file, then save it.
-
-```c
-#include
-
-int main(int argc, char **argv)
-{
- SDL_DisplayMode mode;
- SDL_Window * window = NULL;
- SDL_Renderer * renderer = NULL;
- SDL_Event evt;
- SDL_bool keep_going = SDL_TRUE;
-
- if (SDL_Init(SDL_INIT_VIDEO) != 0) {
- return 1;
- } else if (SDL_GetCurrentDisplayMode(0, &mode) != 0) {
- return 1;
- } else if (SDL_CreateWindowAndRenderer(mode.w, mode.h, SDL_WINDOW_FULLSCREEN, &window, &renderer) != 0) {
- return 1;
- }
-
- while (keep_going) {
- while (SDL_PollEvent(&evt)) {
- if ((evt.type == SDL_KEYDOWN) && (evt.key.keysym.sym == SDLK_ESCAPE)) {
- keep_going = SDL_FALSE;
- }
- }
-
- SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
- SDL_RenderClear(renderer);
- SDL_RenderPresent(renderer);
- }
-
- SDL_Quit();
- return 0;
-}
-```
-
-#### 6.B. Adding code and assets ####
-
-If you have existing code and assets that you'd like to add, you should be able
-to add them now. The process for adding a set of files is as such.
-
-1. right click on the app's project
-2. select Add, then click on "New Item..."
-3. open any source, header, or asset files as appropriate. Support for C and
-C++ is available.
-
-Do note that WinRT only supports a subset of the APIs that are available to
-Win32-based apps. Many portions of the Win32 API and the C runtime are not
-available.
-
-A list of unsupported C APIs can be found at
-
-
-General information on using the C runtime in WinRT can be found at
-
-
-A list of supported Win32 APIs for WinRT apps can be found at
-. To note,
-the list of supported Win32 APIs for Windows Phone 8.0 is different.
-That list can be found at
-
-
-
-### 7. Build and run your app ###
-
-Your app project should now be setup, and you should be ready to build your app.
-To run it on the local machine, open the Debug menu and choose "Start
-Debugging". This will build your app, then run your app full-screen. To switch
-out of your app, press the Windows key. Alternatively, you can choose to run
-your app in a window. To do this, before building and running your app, find
-the drop-down menu in Visual C++'s toolbar that says, "Local Machine". Expand
-this by clicking on the arrow on the right side of the list, then click on
-Simulator. Once you do that, any time you build and run the app, the app will
-launch in window, rather than full-screen.
-
-
-#### 7.A. Running apps on older, ARM-based, "Windows RT" devices ####
-
-**These instructions do not include Windows Phone, despite Windows Phone
-typically running on ARM processors.** They are specifically for devices
-that use the "Windows RT" operating system, which was a modified version of
-Windows 8.x that ran primarily on ARM-based tablet computers.
-
-To build and run the app on ARM-based, "Windows RT" devices, you'll need to:
-
-- install Microsoft's "Remote Debugger" on the device. Visual C++ installs and
- debugs ARM-based apps via IP networks.
-- change a few options on the development machine, both to make sure it builds
- for ARM (rather than x86 or x64), and to make sure it knows how to find the
- Windows RT device (on the network).
-
-Microsoft's Remote Debugger can be found at
-. Please note
-that separate versions of this debugger exist for different versions of Visual
-C++, one each for MSVC 2015, 2013, and 2012.
-
-To setup Visual C++ to launch your app on an ARM device:
-
-1. make sure the Remote Debugger is running on your ARM device, and that it's on
- the same IP network as your development machine.
-2. from Visual C++'s toolbar, find a drop-down menu that says, "Win32". Click
- it, then change the value to "ARM".
-3. make sure Visual C++ knows the hostname or IP address of the ARM device. To
- do this:
- 1. open the app project's properties
- 2. select "Debugging"
- 3. next to "Machine Name", enter the hostname or IP address of the ARM
- device
- 4. if, and only if, you've turned off authentication in the Remote Debugger,
- then change the setting for "Require Authentication" to No
- 5. click "OK"
-4. build and run the app (from Visual C++). The first time you do this, a
- prompt will show up on the ARM device, asking for a Microsoft Account. You
- do, unfortunately, need to log in here, and will need to follow the
- subsequent registration steps in order to launch the app. After you do so,
- if the app didn't already launch, try relaunching it again from within Visual
- C++.
-
-
-Troubleshooting
----------------
-
-#### Build fails with message, "error LNK2038: mismatch detected for 'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker'"
-
-Try adding the following to your linker flags. In MSVC, this can be done by
-right-clicking on the app project, navigating to Configuration Properties ->
-Linker -> Command Line, then adding them to the Additional Options
-section.
-
-* For Release builds / MSVC-Configurations, add:
-
- /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib
-
-* For Debug builds / MSVC-Configurations, add:
-
- /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib
-
-
-#### Mouse-motion events fail to get sent, or SDL_GetMouseState() fails to return updated values
-
-This may be caused by a bug in Windows itself, whereby hiding the mouse
-cursor can cause mouse-position reporting to fail.
-
-SDL provides a workaround for this, but it requires that an app links to a
-set of Win32-style cursor image-resource files. A copy of suitable resource
-files can be found in `src/main/winrt/`. Adding them to an app's Visual C++
-project file should be sufficient to get the app to use them.
-
-
-#### SDL's Visual Studio project file fails to open, with message, "The system can't find the file specified."
-
-This can be caused for any one of a few reasons, which Visual Studio can
-report, but won't always do so in an up-front manner.
-
-To help determine why this error comes up:
-
-1. open a copy of Visual Studio without opening a project file. This can be
- accomplished via Windows' Start Menu, among other means.
-2. show Visual Studio's Output window. This can be done by going to VS'
- menu bar, then to View, and then to Output.
-3. try opening the SDL project file directly by going to VS' menu bar, then
- to File, then to Open, then to Project/Solution. When a File-Open dialog
- appears, open the SDL project (such as the one in SDL's source code, in its
- directory, VisualC-WinRT/UWP_VS2015/).
-4. after attempting to open SDL's Visual Studio project file, additional error
- information will be output to the Output window.
-
-If Visual Studio reports (via its Output window) that the project:
-
-"could not be loaded because it's missing install components. To fix this launch Visual Studio setup with the following selections:
-Microsoft.VisualStudio.ComponentGroup.UWP.VC"
-
-... then you will need to re-launch Visual Studio's installer, and make sure that
-the workflow for "Universal Windows Platform development" is checked, and that its
-optional component, "C++ Universal Windows Platform tools" is also checked. While
-you are there, if you are planning on targeting UWP / Windows 10, also make sure
-that you check the optional component, "Windows 10 SDK (10.0.10240.0)". After
-making sure these items are checked as-appropriate, install them.
-
-Once you install these components, try re-launching Visual Studio, and re-opening
-the SDL project file. If you still get the error dialog, try using the Output
-window, again, seeing what Visual Studio says about it.
-
-
-#### Game controllers / joysticks aren't working!
-
-Windows only permits certain game controllers and joysticks to work within
-WinRT / UWP apps. Even if a game controller or joystick works in a Win32
-app, that device is not guaranteed to work inside a WinRT / UWP app.
-
-According to Microsoft, "Xbox compatible controllers" should work inside
-UWP apps, potentially with more working in the future. This includes, but
-may not be limited to, Microsoft-made Xbox controllers and USB adapters.
-(Source: https://social.msdn.microsoft.com/Forums/en-US/9064838b-e8c3-4c18-8a83-19bf0dfe150d/xinput-fails-to-detect-game-controllers?forum=wpdevelop)
-
-
diff --git a/libs/SDL2/docs/README.md b/libs/SDL2/docs/README.md
deleted file mode 100644
index 6813f75fb..000000000
--- a/libs/SDL2/docs/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Simple DirectMedia Layer
-
-https://www.libsdl.org/
-
-Simple DirectMedia Layer is a cross-platform development library designed
-to provide low level access to audio, keyboard, mouse, joystick, and graphics
-hardware via OpenGL and Direct3D. It is used by video playback software,
-emulators, and popular games including Valve's award winning catalog
-and many Humble Bundle games.
-
-SDL officially supports Windows, macOS, Linux, iOS, and Android.
-Support for other platforms may be found in the source code.
-
-SDL is written in C, works natively with C++, and there are bindings
-available for several other languages, including C# and Python.
-
-This library is distributed under the zlib license, which can be found
-in the file "LICENSE.txt".
-
-The best way to learn how to use SDL is to check out the header files in
-the "include" subdirectory and the programs in the "test" subdirectory.
-The header files and test programs are well commented and always up to date.
-
-More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
-
-- [Android](README-android.md)
-- [CMake](README-cmake.md)
-- [DirectFB](README-directfb.md)
-- [DynAPI](README-dynapi.md)
-- [Emscripten](README-emscripten.md)
-- [GDK](README-gdk.md)
-- [Gesture](README-gesture.md)
-- [Git](README-git.md)
-- [iOS](README-ios.md)
-- [Linux](README-linux.md)
-- [macOS](README-macos.md)
-- [OS/2](README-os2.md)
-- [Native Client](README-nacl.md)
-- [Pandora](README-pandora.md)
-- [Supported Platforms](README-platforms.md)
-- [Porting information](README-porting.md)
-- [PSP](README-psp.md)
-- [PS2](README-ps2.md)
-- [Raspberry Pi](README-raspberrypi.md)
-- [Touch](README-touch.md)
-- [Versions](README-versions.md)
-- [WinCE](README-wince.md)
-- [Windows](README-windows.md)
-- [WinRT](README-winrt.md)
-- [PSVita](README-vita.md)
-- [Nokia N-Gage](README-ngage.md)
-
-If you need help with the library, or just want to discuss SDL related
-issues, you can join the [SDL Discourse](https://discourse.libsdl.org/),
-which can be used as a web forum or a mailing list, at your preference.
-
-If you want to report bugs or contribute patches, please submit them to
-[our bug tracker](https://github.com/libsdl-org/SDL/issues)
-
-Enjoy!
-
-
-Sam Lantinga
diff --git a/libs/SDL2/docs/doxyfile b/libs/SDL2/docs/doxyfile
deleted file mode 100644
index e2b6e4ec6..000000000
--- a/libs/SDL2/docs/doxyfile
+++ /dev/null
@@ -1,1561 +0,0 @@
-# Doxyfile 1.5.9
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = SDL
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 2.0
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = ./output
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = YES
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = YES
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES = "defined=\"\def\"" \
- "discussion=\"\par Discussion:\n\""
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses.
-# With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this tag.
-# The format is ext=language, where ext is a file extension, and language is one of
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C. Note that for custom extensions you also need to set
-# FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = YES
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT = YES
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = YES
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = YES
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command , where is the value of
-# the FILE_VERSION_FILTER tag, and is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
-
-LAYOUT_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE = ./doxygen_warn.txt
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = . ../include
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.py \
- *.f90 \
- *.f \
- *.vhd \
- *.vhdl \
- *.h.in \
- *.h.default \
- *.md
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE = ../include/SDL_opengles2_gl2ext.h \
- ../include/SDL_opengles2_gl2platform.h \
- ../include/SDL_opengles2_khrplatform.h \
- ../include/SDL_opengl_glext.h \
- ../include/SDL_opengles2_gl2.h \
- ../include/SDL_opengles2.h \
- ../include/SDL_opengles.h \
- ../include/SDL_opengl.h \
- ../include/SDL_egl.h \
- ./release_checklist.md \
-
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = YES
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command , where
-# is the value of the INPUT_FILTER tag, and is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX = SDL_ \
- SDL
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = YES
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME = "SDL 2.0 Doxygen"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID = org.libsdl.sdl20
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE = ./sdl20.chm
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = YES
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE =
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
-# For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
-# Qt Help Project / Custom Filters.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
-# filter section matches.
-# Qt Help Project / Filter Attributes.
-
-QHP_SECT_FILTER_ATTRS =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION =
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 1
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
-
-GENERATE_TREEVIEW = ALL
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = YES
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = YES
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED = DOXYGEN_SHOULD_IGNORE_THIS=1 \
- DECLSPEC= \
- SDLCALL= \
- _WIN32=1
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE = ./SDL.tag
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = c:\Perl\bin\perl.exe
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 60
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 2
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/libs/SDL2/docs/release_checklist.md b/libs/SDL2/docs/release_checklist.md
deleted file mode 100644
index 61929ac03..000000000
--- a/libs/SDL2/docs/release_checklist.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Release checklist
-
-When changing the version, run `build-scripts/update-version.sh X Y Z`,
-where `X Y Z` are the major version, minor version, and patch level. So
-`2 28 1` means "change the version to 2.28.1". This script does much of the
-mechanical work.
-
-
-## New feature release
-
-* Update `WhatsNew.txt`
-
-* Bump version number to 2.EVEN.0:
-
- * `./build-scripts/update-version.sh 2 EVEN 0`
-
-* Do the release
-
-* Update the website file include/header.inc.php to reflect the new version
-
-## New bugfix release
-
-* Check that no new API/ABI was added
-
- * If it was, do a new feature release (see above) instead
-
-* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is even)
-
- * `./build-scripts/update-version.sh 2 Y Z+1`
-
-* Do the release
-
-* Update the website file include/header.inc.php to reflect the new version
-
-## After a feature release
-
-* Create a branch like `release-2.24.x`
-
-* Bump version number to 2.ODD.0 for next development branch
-
- * `./build-scripts/update-version.sh 2 ODD 0`
-
-## New development prerelease
-
-* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is odd)
-
- * `./build-scripts/update-version.sh 2 Y Z+1`
-
-* Do the release
diff --git a/libs/SDL2/i686-w64-mingw32/bin/SDL2.dll b/libs/SDL2/i686-w64-mingw32/bin/SDL2.dll
deleted file mode 100644
index 573225cab..000000000
Binary files a/libs/SDL2/i686-w64-mingw32/bin/SDL2.dll and /dev/null differ
diff --git a/libs/SDL2/i686-w64-mingw32/bin/sdl2-config b/libs/SDL2/i686-w64-mingw32/bin/sdl2-config
deleted file mode 100644
index 8352f5564..000000000
--- a/libs/SDL2/i686-w64-mingw32/bin/sdl2-config
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-
-# Get the canonical path of the folder containing this script
-bindir=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
-
-# Calculate the canonical path of the prefix, relative to the folder of this script
-prefix=$(cd -P -- "$bindir/.." && printf '%s\n' "$(pwd -P)")
-exec_prefix=${prefix}
-exec_prefix_set=no
-libdir=${exec_prefix}/lib
-
-#usage="\
-#Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
-usage="\
-Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"
-
-if test $# -eq 0; then
- echo "${usage}" 1>&2
- exit 1
-fi
-
-while test $# -gt 0; do
- case "$1" in
- -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) optarg= ;;
- esac
-
- case $1 in
- --prefix=*)
- prefix=$optarg
- if test $exec_prefix_set = no ; then
- exec_prefix=$optarg
- fi
- ;;
- --prefix)
- echo $prefix
- ;;
- --exec-prefix=*)
- exec_prefix=$optarg
- exec_prefix_set=yes
- ;;
- --exec-prefix)
- echo $exec_prefix
- ;;
- --version)
- echo 2.28.5
- ;;
- --cflags)
- echo -I${prefix}/include/SDL2 -Dmain=SDL_main
- ;;
- --libs)
- echo -L${exec_prefix}/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
- ;;
- --static-libs)
-# --libs|--static-libs)
- sdl_static_libs=$(echo "-lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid" | sed -E "s#-lSDL2[ $]#$libdir/libSDL2.a #g")
- echo -L${exec_prefix}/lib $sdl_static_libs
- ;;
- *)
- echo "${usage}" 1>&2
- exit 1
- ;;
- esac
- shift
-done
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL.h
index 9ba8f68c6..0fe071339 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -25,7 +25,6 @@
* Main include header for the SDL library
*/
-
#ifndef SDL_h_
#define SDL_h_
@@ -70,6 +69,8 @@
extern "C" {
#endif
+/* WIKI CATEGORY: Init */
+
/* As of version 0.5, SDL is loaded dynamically into the application */
/**
@@ -130,7 +131,7 @@ extern "C" {
* call SDL_Quit() to force shutdown). If a subsystem is already loaded then
* this call will increase the ref-count and return.
*
- * \param flags subsystem initialization flags
+ * \param flags subsystem initialization flags.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_assert.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_assert.h
index 7ce823ec5..fea3f90f0 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_assert.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_assert.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -61,6 +61,8 @@ assert can have unique static variables associated with it.
#define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" )
#elif defined(__APPLE__) && defined(__arm__)
#define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" )
+#elif defined(_WIN32) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__arm64__) || defined(__aarch64__)) )
+ #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #0xF000\n\t" )
#elif defined(__386__) && defined(__WATCOMC__)
#define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
@@ -191,8 +193,8 @@ extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
* A callback that fires when an SDL assertion fails.
*
* \param data a pointer to the SDL_AssertData structure corresponding to the
- * current assertion
- * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler()
+ * current assertion.
+ * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler().
* \returns an SDL_AssertState value indicating how to handle the failure.
*/
typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
@@ -212,8 +214,8 @@ typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
* This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
*
* \param handler the SDL_AssertionHandler function to call when an assertion
- * fails or NULL for the default handler
- * \param userdata a pointer that is passed to `handler`
+ * fails or NULL for the default handler.
+ * \param userdata a pointer that is passed to `handler`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -254,7 +256,7 @@ extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void
* data, it is safe to pass a NULL pointer to this function to ignore it.
*
* \param puserdata pointer which is filled with the "userdata" pointer that
- * was passed to SDL_SetAssertionHandler()
+ * was passed to SDL_SetAssertionHandler().
* \returns the SDL_AssertionHandler that is called when an assert triggers.
*
* \since This function is available since SDL 2.0.2.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_atomic.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_atomic.h
index 1dd816a38..226ec7c67 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_atomic.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_atomic.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,38 +20,29 @@
*/
/**
- * \file SDL_atomic.h
+ * # CategoryAtomic
*
* Atomic operations.
*
- * IMPORTANT:
- * If you are not an expert in concurrent lockless programming, you should
- * only be using the atomic lock and reference counting functions in this
- * file. In all other cases you should be protecting your data structures
- * with full mutexes.
+ * IMPORTANT: If you are not an expert in concurrent lockless programming, you
+ * should not be using any functions in this file. You should be protecting
+ * your data structures with full mutexes instead.
*
- * The list of "safe" functions to use are:
- * SDL_AtomicLock()
- * SDL_AtomicUnlock()
- * SDL_AtomicIncRef()
- * SDL_AtomicDecRef()
+ * ***Seriously, here be dragons!***
*
- * Seriously, here be dragons!
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- *
- * You can find out a little more about lockless programming and the
- * subtle issues that can arise here:
- * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
+ * You can find out a little more about lockless programming and the subtle
+ * issues that can arise here:
+ * https://learn.microsoft.com/en-us/windows/win32/dxtecharts/lockless-programming
*
* There's also lots of good information here:
- * http://www.1024cores.net/home/lock-free-algorithms
- * http://preshing.com/
*
- * These operations may or may not actually be implemented using
- * processor specific atomic operations. When possible they are
- * implemented as true processor specific atomic operations. When that
- * is not possible the are implemented using locks that *do* use the
- * available atomic operations.
+ * - https://www.1024cores.net/home/lock-free-algorithms
+ * - https://preshing.com/
+ *
+ * These operations may or may not actually be implemented using processor
+ * specific atomic operations. When possible they are implemented as true
+ * processor specific atomic operations. When that is not possible the are
+ * implemented using locks that *do* use the available atomic operations.
*
* All of the atomic operations that modify memory are full memory barriers.
*/
@@ -94,7 +85,7 @@ typedef int SDL_SpinLock;
* ***Please note that spinlocks are dangerous if you don't know what you're
* doing. Please be careful using any sort of spinlock!***
*
- * \param lock a pointer to a lock variable
+ * \param lock a pointer to a lock variable.
* \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already
* held.
*
@@ -111,7 +102,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
* ***Please note that spinlocks are dangerous if you don't know what you're
* doing. Please be careful using any sort of spinlock!***
*
- * \param lock a pointer to a lock variable
+ * \param lock a pointer to a lock variable.
*
* \since This function is available since SDL 2.0.0.
*
@@ -128,7 +119,7 @@ extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
* ***Please note that spinlocks are dangerous if you don't know what you're
* doing. Please be careful using any sort of spinlock!***
*
- * \param lock a pointer to a lock variable
+ * \param lock a pointer to a lock variable.
*
* \since This function is available since SDL 2.0.0.
*
@@ -209,7 +200,7 @@ typedef void (*SDL_KernelMemoryBarrierFunc)();
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
+#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
#ifdef __thumb__
/* The mcr instruction isn't available in thumb mode, use real functions */
#define SDL_MEMORY_BARRIER_USES_FUNCTION
@@ -257,10 +248,13 @@ typedef void (*SDL_KernelMemoryBarrierFunc)();
/**
- * \brief A type representing an atomic integer value. It is a struct
- * so people don't accidentally use numeric operations on it.
+ * A type representing an atomic integer value.
+ *
+ * It is a struct so people don't accidentally use numeric operations on it.
*/
-typedef struct { int value; } SDL_atomic_t;
+typedef struct SDL_atomic_t {
+ int value;
+} SDL_atomic_t;
/**
* Set an atomic variable to a new value if it is currently an old value.
@@ -268,9 +262,9 @@ typedef struct { int value; } SDL_atomic_t;
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param oldval the old value
- * \param newval the new value
+ * \param a a pointer to an SDL_atomic_t variable to be modified.
+ * \param oldval the old value.
+ * \param newval the new value.
* \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -289,8 +283,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param v the desired value
+ * \param a a pointer to an SDL_atomic_t variable to be modified.
+ * \param v the desired value.
* \returns the previous value of the atomic variable.
*
* \since This function is available since SDL 2.0.2.
@@ -305,7 +299,7 @@ extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to an SDL_atomic_t variable
+ * \param a a pointer to an SDL_atomic_t variable.
* \returns the current value of an atomic variable.
*
* \since This function is available since SDL 2.0.2.
@@ -322,8 +316,8 @@ extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param v the desired value to add
+ * \param a a pointer to an SDL_atomic_t variable to be modified.
+ * \param v the desired value to add.
* \returns the previous value of the atomic variable.
*
* \since This function is available since SDL 2.0.2.
@@ -356,9 +350,9 @@ extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to a pointer
- * \param oldval the old pointer value
- * \param newval the new pointer value
+ * \param a a pointer to a pointer.
+ * \param oldval the old pointer value.
+ * \param newval the new pointer value.
* \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -375,8 +369,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to a pointer
- * \param v the desired pointer value
+ * \param a a pointer to a pointer.
+ * \param v the desired pointer value.
* \returns the previous value of the pointer.
*
* \since This function is available since SDL 2.0.2.
@@ -392,7 +386,7 @@ extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
* ***Note: If you don't know what this function is for, you shouldn't use
* it!***
*
- * \param a a pointer to a pointer
+ * \param a a pointer to a pointer.
* \returns the current value of a pointer.
*
* \since This function is available since SDL 2.0.2.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_audio.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_audio.h
index ccd35982d..cb76e93e4 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_audio.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_audio.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -22,9 +22,9 @@
/* !!! FIXME: several functions in here need Doxygen comments. */
/**
- * \file SDL_audio.h
+ * # CategoryAudio
*
- * Access to the raw audio mixing buffer for the SDL library.
+ * Access to the raw audio mixing buffer for the SDL library.
*/
#ifndef SDL_audio_h_
@@ -44,24 +44,24 @@ extern "C" {
#endif
/**
- * \brief Audio format flags.
+ * Audio format flags.
*
- * These are what the 16 bits in SDL_AudioFormat currently mean...
- * (Unspecified bits are always zero).
+ * These are what the 16 bits in SDL_AudioFormat currently mean...
+ * (Unspecified bits are always zero).
*
- * \verbatim
- ++-----------------------sample is signed if set
- ||
- || ++-----------sample is bigendian if set
- || ||
- || || ++---sample is float if set
- || || ||
- || || || +---sample bit size---+
- || || || | |
- 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
- \endverbatim
+ * ```
+ * ++-----------------------sample is signed if set
+ * ||
+ * || ++-----------sample is bigendian if set
+ * || ||
+ * || || ++---sample is float if set
+ * || || ||
+ * || || || +---sample bit size---+
+ * || || || | |
+ * 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
+ * ```
*
- * There are macros in SDL 2.0 and later to query these bits.
+ * There are macros in SDL 2.0 and later to query these bits.
*/
typedef Uint16 SDL_AudioFormat;
@@ -149,33 +149,30 @@ typedef Uint16 SDL_AudioFormat;
/* @} *//* Audio flags */
/**
- * This function is called when the audio device needs more data.
+ * This function is called when the audio device needs more data.
*
- * \param userdata An application-specific parameter saved in
- * the SDL_AudioSpec structure
- * \param stream A pointer to the audio data buffer.
- * \param len The length of that buffer in bytes.
- *
- * Once the callback returns, the buffer will no longer be valid.
- * Stereo samples are stored in a LRLRLR ordering.
- *
- * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
- * you like. Just open your audio device with a NULL callback.
+ * \param userdata An application-specific parameter saved in the
+ * SDL_AudioSpec structure.
+ * \param stream A pointer to the audio data buffer.
+ * \param len Length of **stream** in bytes.
*/
typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
int len);
/**
- * The calculated values in this structure are calculated by SDL_OpenAudio().
+ * The calculated values in this structure are calculated by SDL_OpenAudio().
*
- * For multi-channel audio, the default SDL channel mapping is:
- * 2: FL FR (stereo)
- * 3: FL FR LFE (2.1 surround)
- * 4: FL FR BL BR (quad)
- * 5: FL FR LFE BL BR (4.1 surround)
- * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR)
- * 7: FL FR FC LFE BC SL SR (6.1 surround)
- * 8: FL FR FC LFE BL BR SL SR (7.1 surround)
+ * For multi-channel audio, the default SDL channel mapping is:
+ *
+ * ```
+ * 2: FL FR (stereo)
+ * 3: FL FR LFE (2.1 surround)
+ * 4: FL FR BL BR (quad)
+ * 5: FL FR LFE BL BR (4.1 surround)
+ * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR)
+ * 7: FL FR FC LFE BC SL SR (6.1 surround)
+ * 8: FL FR FC LFE BL BR SL SR (7.1 surround)
+ * ```
*/
typedef struct SDL_AudioSpec
{
@@ -196,11 +193,11 @@ typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
SDL_AudioFormat format);
/**
- * \brief Upper limit of filters in SDL_AudioCVT
+ * Upper limit of filters in SDL_AudioCVT
*
- * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
- * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
- * one of which is the terminating NULL pointer.
+ * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
+ * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, one
+ * of which is the terminating NULL pointer.
*/
#define SDL_AUDIOCVT_MAX_FILTERS 9
@@ -287,7 +284,7 @@ extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
* meant to be proper names.
*
* \param index the index of the audio driver; the value ranges from 0 to
- * SDL_GetNumAudioDrivers() - 1
+ * SDL_GetNumAudioDrivers() - 1.
* \returns the name of the audio driver at the requested index, or NULL if an
* invalid index was specified.
*
@@ -314,7 +311,7 @@ extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
* specific need to designate the audio driver you want to use. You should
* normally use SDL_Init() or SDL_InitSubSystem().
*
- * \param driver_name the name of the desired audio driver
+ * \param driver_name the name of the desired audio driver.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -408,13 +405,13 @@ extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
SDL_AudioSpec * obtained);
/**
- * SDL Audio Device IDs.
+ * SDL Audio Device IDs.
*
- * A successful call to SDL_OpenAudio() is always device id 1, and legacy
- * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
- * always returns devices >= 2 on success. The legacy calls are good both
- * for backwards compatibility and when you don't care about multiple,
- * specific, or capture devices.
+ * A successful call to SDL_OpenAudio() is always device id 1, and legacy SDL
+ * audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
+ * always returns devices >= 2 on success. The legacy calls are good both for
+ * backwards compatibility and when you don't care about multiple, specific,
+ * or capture devices.
*/
typedef Uint32 SDL_AudioDeviceID;
@@ -452,7 +449,7 @@ typedef Uint32 SDL_AudioDeviceID;
* ```
*
* \param iscapture zero to request playback devices, non-zero to request
- * recording devices
+ * recording devices.
* \returns the number of available devices exposed by the current driver or
* -1 if an explicit list of devices can't be determined. A return
* value of -1 does not necessarily mean an error condition.
@@ -478,7 +475,7 @@ extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
* invalid next time any of several other SDL functions are called.
*
* \param index the index of the audio device; valid values range from 0 to
- * SDL_GetNumAudioDevices() - 1
+ * SDL_GetNumAudioDevices() - 1.
* \param iscapture non-zero to query the list of recording devices, zero to
* query the list of output devices.
* \returns the name of the audio device at the requested index, or NULL on
@@ -504,11 +501,11 @@ extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
* count.
*
* \param index the index of the audio device; valid values range from 0 to
- * SDL_GetNumAudioDevices() - 1
+ * SDL_GetNumAudioDevices() - 1.
* \param iscapture non-zero to query the list of recording devices, zero to
* query the list of output devices.
* \param spec The SDL_AudioSpec to be initialized by this function.
- * \returns 0 on success, nonzero on error
+ * \returns 0 on success, nonzero on error.
*
* \since This function is available since SDL 2.0.16.
*
@@ -542,7 +539,7 @@ extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
* \param spec The SDL_AudioSpec to be initialized by this function.
* \param iscapture non-zero to query the default recording device, zero to
* query the default output device.
- * \returns 0 on success, nonzero on error
+ * \returns 0 on success, nonzero on error.
*
* \since This function is available since SDL 2.24.0.
*
@@ -594,7 +591,7 @@ extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
* frames_ (with stereo output, two samples--left and right--would make a
* single sample frame). This number should be a power of two, and may be
* adjusted by the audio driver to a value more suitable for the hardware.
- * Good values seem to range between 512 and 8096 inclusive, depending on
+ * Good values seem to range between 512 and 4096 inclusive, depending on
* the application and CPU speed. Smaller values reduce latency, but can
* lead to underflow if the application is doing heavy processing and cannot
* fill the audio buffer in time. Note that the number of sample frames is
@@ -645,12 +642,12 @@ extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
* driver-specific name as appropriate. NULL requests the most
* reasonable default device.
* \param iscapture non-zero to specify a device should be opened for
- * recording, not playback
+ * recording, not playback.
* \param desired an SDL_AudioSpec structure representing the desired output
- * format; see SDL_OpenAudio() for more information
+ * format; see SDL_OpenAudio() for more information.
* \param obtained an SDL_AudioSpec structure filled in with the actual output
- * format; see SDL_OpenAudio() for more information
- * \param allowed_changes 0, or one or more flags OR'd together
+ * format; see SDL_OpenAudio() for more information.
+ * \param allowed_changes 0, or one or more flags OR'd together.
* \returns a valid device ID that is > 0 on success or 0 on failure; call
* SDL_GetError() for more information.
*
@@ -712,7 +709,7 @@ extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
* Use this function to get the current audio state of an audio device.
*
* \param dev the ID of an audio device previously opened with
- * SDL_OpenAudioDevice()
+ * SDL_OpenAudioDevice().
* \returns the SDL_AudioStatus of the specified audio device.
*
* \since This function is available since SDL 2.0.0.
@@ -745,7 +742,7 @@ extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDevice
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
- * \param pause_on non-zero to pause, 0 to unpause
+ * \param pause_on non-zero to pause, 0 to unpause.
*
* \since This function is available since SDL 2.0.0.
*
@@ -775,8 +772,8 @@ extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
* callback, you shouldn't pause the audio device, as it will lead to dropouts
* in the audio playback. Instead, you should use SDL_LockAudioDevice().
*
- * \param dev a device opened by SDL_OpenAudioDevice()
- * \param pause_on non-zero to pause, 0 to unpause
+ * \param dev a device opened by SDL_OpenAudioDevice().
+ * \param pause_on non-zero to pause, 0 to unpause.
*
* \since This function is available since SDL 2.0.0.
*
@@ -841,14 +838,14 @@ extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
* SDL_LoadWAV("sample.wav", &spec, &buf, &len);
* ```
*
- * \param src The data source for the WAVE data
- * \param freesrc If non-zero, SDL will _always_ free the data source
+ * \param src The data source for the WAVE data.
+ * \param freesrc If non-zero, SDL will _always_ free the data source.
* \param spec An SDL_AudioSpec that will be filled in with the wave file's
- * format details
+ * format details.
* \param audio_buf A pointer filled with the audio data, allocated by the
* function.
* \param audio_len A pointer filled with the length of the audio data buffer
- * in bytes
+ * in bytes.
* \returns This function, if successfully called, returns `spec`, which will
* be filled with the audio data format of the wave source data.
* `audio_buf` will be filled with a pointer to an allocated buffer
@@ -874,8 +871,9 @@ extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
Uint32 * audio_len);
/**
- * Loads a WAV from a file.
- * Compatibility convenience function.
+ * Loads a WAV from a file.
+ *
+ * Compatibility convenience function.
*/
#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
@@ -888,7 +886,7 @@ extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
* this function with a NULL pointer.
*
* \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or
- * SDL_LoadWAV_RW()
+ * SDL_LoadWAV_RW().
*
* \since This function is available since SDL 2.0.0.
*
@@ -912,15 +910,16 @@ extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
* and then can call SDL_ConvertAudio() to complete the conversion.
*
* \param cvt an SDL_AudioCVT structure filled in with audio conversion
- * information
+ * information.
* \param src_format the source format of the audio data; for more info see
- * SDL_AudioFormat
- * \param src_channels the number of channels in the source
- * \param src_rate the frequency (sample-frames-per-second) of the source
+ * SDL_AudioFormat.
+ * \param src_channels the number of channels in the source.
+ * \param src_rate the frequency (sample-frames-per-second) of the source.
* \param dst_format the destination format of the audio data; for more info
- * see SDL_AudioFormat
- * \param dst_channels the number of channels in the destination
- * \param dst_rate the frequency (sample-frames-per-second) of the destination
+ * see SDL_AudioFormat.
+ * \param dst_channels the number of channels in the destination.
+ * \param dst_rate the frequency (sample-frames-per-second) of the
+ * destination.
* \returns 1 if the audio filter is prepared, 0 if no conversion is needed,
* or a negative error code on failure; call SDL_GetError() for more
* information.
@@ -991,12 +990,12 @@ typedef struct _SDL_AudioStream SDL_AudioStream;
/**
* Create a new audio stream.
*
- * \param src_format The format of the source audio
- * \param src_channels The number of channels of the source audio
- * \param src_rate The sampling rate of the source audio
- * \param dst_format The format of the desired audio output
- * \param dst_channels The number of channels of the desired audio output
- * \param dst_rate The sampling rate of the desired audio output
+ * \param src_format The format of the source audio.
+ * \param src_channels The number of channels of the source audio.
+ * \param src_rate The sampling rate of the source audio.
+ * \param dst_format The format of the desired audio output.
+ * \param dst_channels The number of channels of the desired audio output.
+ * \param dst_rate The sampling rate of the desired audio output.
* \returns 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.7.
@@ -1018,9 +1017,9 @@ extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioForm
/**
* Add data to be converted/resampled to the stream.
*
- * \param stream The stream the audio data is being added to
- * \param buf A pointer to the audio data to add
- * \param len The number of bytes to write to the stream
+ * \param stream The stream the audio data is being added to.
+ * \param buf A pointer to the audio data to add.
+ * \param len The number of bytes to write to the stream.
* \returns 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.7.
@@ -1037,10 +1036,10 @@ extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const vo
/**
* Get converted/resampled data from the stream
*
- * \param stream The stream the audio is being requested from
- * \param buf A buffer to fill with audio data
- * \param len The maximum number of bytes to fill
- * \returns the number of bytes read from the stream, or -1 on error
+ * \param stream The stream the audio is being requested from.
+ * \param buf A buffer to fill with audio data.
+ * \param len The maximum number of bytes to fill.
+ * \returns the number of bytes read from the stream, or -1 on error.
*
* \since This function is available since SDL 2.0.7.
*
@@ -1118,6 +1117,9 @@ extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
*/
extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
+/**
+ * Maximum volume allowed in calls to SDL_MixAudio and SDL_MixAudioFormat.
+ */
#define SDL_MIX_MAXVOLUME 128
/**
@@ -1132,11 +1134,11 @@ extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
* ...where `format` is the obtained format of the audio device from the
* legacy SDL_OpenAudio() function.
*
- * \param dst the destination for the mixed audio
- * \param src the source audio buffer to be mixed
- * \param len the length of the audio buffer in bytes
+ * \param dst the destination for the mixed audio.
+ * \param src the source audio buffer to be mixed.
+ * \param len the length of the audio buffer in bytes.
* \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
- * for full audio volume
+ * for full audio volume.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1165,13 +1167,13 @@ extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
* SDL_MixAudioFormat() is really only needed when you're mixing a single
* audio stream with a volume adjustment.
*
- * \param dst the destination for the mixed audio
- * \param src the source audio buffer to be mixed
+ * \param dst the destination for the mixed audio.
+ * \param src the source audio buffer to be mixed.
* \param format the SDL_AudioFormat structure representing the desired audio
- * format
- * \param len the length of the audio buffer in bytes
+ * format.
+ * \param len the length of the audio buffer in bytes.
* \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
- * for full audio volume
+ * for full audio volume.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -1215,9 +1217,9 @@ extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
* from planar audio formats into a non-planar one (see SDL_AudioFormat)
* before queuing audio.
*
- * \param dev the device ID to which we will queue audio
- * \param data the data to queue to the device for later playback
- * \param len the number of bytes (not samples!) to which `data` points
+ * \param dev the device ID to which we will queue audio.
+ * \param data the data to queue to the device for later playback.
+ * \param len the number of bytes (not samples!) to which `data` points.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1263,9 +1265,9 @@ extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *da
* You should not call SDL_LockAudio() on the device before dequeueing; SDL
* handles locking internally for this function.
*
- * \param dev the device ID from which we will dequeue audio
- * \param data a pointer into where audio data should be copied
- * \param len the number of bytes (not samples!) to which (data) points
+ * \param dev the device ID from which we will dequeue audio.
+ * \param data a pointer into where audio data should be copied.
+ * \param len the number of bytes (not samples!) to which (data) points.
* \returns the number of bytes dequeued, which could be less than requested;
* call SDL_GetError() for more information.
*
@@ -1299,7 +1301,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *dat
* You should not call SDL_LockAudio() on the device before querying; SDL
* handles locking internally for this function.
*
- * \param dev the device ID of which we will query queued audio size
+ * \param dev the device ID of which we will query queued audio size.
* \returns the number of bytes (not samples!) of queued audio.
*
* \since This function is available since SDL 2.0.4.
@@ -1334,7 +1336,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
*
* This function always succeeds and thus returns void.
*
- * \param dev the device ID of which to clear the audio queue
+ * \param dev the device ID of which to clear the audio queue.
*
* \since This function is available since SDL 2.0.4.
*
@@ -1406,7 +1408,7 @@ extern DECLSPEC void SDLCALL SDL_LockAudio(void);
* at once, not only will you block the audio callback, you'll block the other
* thread.
*
- * \param dev the ID of the device to be locked
+ * \param dev the ID of the device to be locked.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1439,7 +1441,7 @@ extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
*
* This function should be paired with a previous SDL_LockAudioDevice() call.
*
- * \param dev the ID of the device to be unlocked
+ * \param dev the ID of the device to be unlocked.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1481,7 +1483,7 @@ extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
* The device ID is invalid as soon as the device is closed, and is eligible
* for reuse in a new SDL_OpenAudioDevice() call immediately.
*
- * \param dev an audio device previously opened with SDL_OpenAudioDevice()
+ * \param dev an audio device previously opened with SDL_OpenAudioDevice().
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_bits.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_bits.h
index 81161ae5f..747f55651 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_bits.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_bits.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_bits.h
+ * # CategoryBits
*
- * Functions for fiddling with bits and bitmasks.
+ * Functions for fiddling with bits and bitmasks.
*/
#ifndef SDL_bits_h_
@@ -56,6 +56,12 @@ extern __inline int _SDL_bsr_watcom(Uint32);
modify exact [eax] nomemory;
#endif
+/**
+ * Use this function to get the index of the most significant (set) bit in a
+ *
+ * \param x the number to find the MSB of.
+ * \returns the index of the most significant bit of x, or -1 if x is 0.
+ */
SDL_FORCE_INLINE int
SDL_MostSignificantBitIndex32(Uint32 x)
{
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_blendmode.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_blendmode.h
index 4ecbe5078..c0c681133 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_blendmode.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_blendmode.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_blendmode.h
+ * # CategoryBlendmode
*
- * Header file declaring the SDL_BlendMode enumeration
+ * Header file declaring the SDL_BlendMode enumeration
*/
#ifndef SDL_blendmode_h_
@@ -35,9 +35,9 @@ extern "C" {
#endif
/**
- * \brief The blend mode used in SDL_RenderCopy() and drawing operations.
+ * The blend mode used in SDL_RenderCopy() and drawing operations.
*/
-typedef enum
+typedef enum SDL_BlendMode
{
SDL_BLENDMODE_NONE = 0x00000000, /**< no blending
dstRGBA = srcRGBA */
@@ -60,21 +60,22 @@ typedef enum
} SDL_BlendMode;
/**
- * \brief The blend operation used when combining source and destination pixel components
+ * The blend operation used when combining source and destination pixel
+ * components
*/
-typedef enum
+typedef enum SDL_BlendOperation
{
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;
/**
- * \brief The normalized factor used to multiply pixel components
+ * The normalized factor used to multiply pixel components
*/
-typedef enum
+typedef enum SDL_BlendFactor
{
SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */
SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */
@@ -158,18 +159,18 @@ typedef enum
* case.
*
* \param srcColorFactor the SDL_BlendFactor applied to the red, green, and
- * blue components of the source pixels
+ * blue components of the source pixels.
* \param dstColorFactor the SDL_BlendFactor applied to the red, green, and
- * blue components of the destination pixels
+ * blue components of the destination pixels.
* \param colorOperation the SDL_BlendOperation used to combine the red,
* green, and blue components of the source and
- * destination pixels
+ * destination pixels.
* \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of
- * the source pixels
+ * the source pixels.
* \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of
- * the destination pixels
+ * the destination pixels.
* \param alphaOperation the SDL_BlendOperation used to combine the alpha
- * component of the source and destination pixels
+ * component of the source and destination pixels.
* \returns an SDL_BlendMode that represents the chosen factors and
* operations.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_clipboard.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_clipboard.h
index 7c351fbb9..2ae16a1d0 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_clipboard.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_clipboard.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,7 +20,7 @@
*/
/**
- * \file SDL_clipboard.h
+ * # CategoryClipboard
*
* Include file for SDL clipboard handling
*/
@@ -41,7 +41,7 @@ extern "C" {
/**
* Put UTF-8 text into the clipboard.
*
- * \param text the text to store in the clipboard
+ * \param text the text to store in the clipboard.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -85,7 +85,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
/**
* Put UTF-8 text into the primary selection.
*
- * \param text the text to store in the primary selection
+ * \param text the text to store in the primary selection.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config.h
index 01322c182..eabd78b52 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,313 +19,41 @@
3. This notice may not be removed or altered from any source distribution.
*/
-#ifndef SDL_config_windows_h_
-#define SDL_config_windows_h_
+#ifndef SDL_config_h_
#define SDL_config_h_
#include "SDL_platform.h"
-/* winsdkver.h defines _WIN32_MAXVER for SDK version detection. It is present since at least the Windows 7 SDK,
- * but out of caution we'll only use it if the compiler supports __has_include() to confirm its presence.
- * If your compiler doesn't support __has_include() but you have winsdkver.h, define HAVE_WINSDKVER_H. */
-#if !defined(HAVE_WINSDKVER_H) && defined(__has_include)
-#if __has_include()
-#define HAVE_WINSDKVER_H 1
-#endif
-#endif
+/* WIKI CATEGORY: - */
-#ifdef HAVE_WINSDKVER_H
-#include
-#endif
-
-/* sdkddkver.h defines more specific SDK version numbers. This is needed because older versions of the
- * Windows 10 SDK have broken declarations for the C API for DirectX 12. */
-#if !defined(HAVE_SDKDDKVER_H) && defined(__has_include)
-#if __has_include()
-#define HAVE_SDKDDKVER_H 1
-#endif
-#endif
-
-#ifdef HAVE_SDKDDKVER_H
-#include
-#endif
-
-/* This is a set of defines to configure the SDL features */
-
-#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_)
-/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
-#if defined(_MSC_VER) && (_MSC_VER < 1600)
-typedef signed __int8 int8_t;
-typedef unsigned __int8 uint8_t;
-typedef signed __int16 int16_t;
-typedef unsigned __int16 uint16_t;
-typedef signed __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef signed __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#ifndef _UINTPTR_T_DEFINED
-#ifdef _WIN64
-typedef unsigned __int64 uintptr_t;
+/* Add any platform that doesn't build using the configure system. */
+#if defined(__WIN32__)
+#include "SDL_config_windows.h"
+#elif defined(__WINRT__)
+#include "SDL_config_winrt.h"
+#elif defined(__WINGDK__)
+#include "SDL_config_wingdk.h"
+#elif defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#include "SDL_config_xbox.h"
+#elif defined(__MACOSX__)
+#include "SDL_config_macosx.h"
+#elif defined(__IPHONEOS__)
+#include "SDL_config_iphoneos.h"
+#elif defined(__ANDROID__)
+#include "SDL_config_android.h"
+#elif defined(__OS2__)
+#include "SDL_config_os2.h"
+#elif defined(__EMSCRIPTEN__)
+#include "SDL_config_emscripten.h"
+#elif defined(__NGAGE__)
+#include "SDL_config_ngage.h"
#else
-typedef unsigned int uintptr_t;
-#endif
-#define _UINTPTR_T_DEFINED
-#endif
-#else
-#define HAVE_STDINT_H 1
-#endif /* Visual Studio 2008 */
-#endif /* !_STDINT_H_ && !HAVE_STDINT_H */
+/* This is a minimal configuration just to get SDL running on new platforms. */
+#include "SDL_config_minimal.h"
+#endif /* platform config */
-#ifdef _WIN64
-# define SIZEOF_VOIDP 8
-#else
-# define SIZEOF_VOIDP 4
+#ifdef USING_GENERATED_CONFIG_H
+#error Wrong SDL_config.h, check your include path?
#endif
-#ifdef __clang__
-# define HAVE_GCC_ATOMICS 1
-#endif
-
-#define HAVE_DDRAW_H 1
-#define HAVE_DINPUT_H 1
-#define HAVE_DSOUND_H 1
-#ifndef __WATCOMC__
-#define HAVE_DXGI_H 1
-#define HAVE_XINPUT_H 1
-#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0A00 /* Windows 10 SDK */
-#define HAVE_WINDOWS_GAMING_INPUT_H 1
-#endif
-#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0602 /* Windows 8 SDK */
-#define HAVE_D3D11_H 1
-#define HAVE_ROAPI_H 1
-#endif
-#if defined(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */
-#define HAVE_D3D12_H 1
-#endif
-#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */
-#define HAVE_SHELLSCALINGAPI_H 1
-#endif
-#define HAVE_MMDEVICEAPI_H 1
-#define HAVE_AUDIOCLIENT_H 1
-#define HAVE_TPCSHRD_H 1
-#define HAVE_SENSORSAPI_H 1
-#endif
-#if (defined(_M_IX86) || defined(_M_X64) || defined(_M_AMD64)) && (defined(_MSC_VER) && _MSC_VER >= 1600)
-#define HAVE_IMMINTRIN_H 1
-#elif defined(__has_include) && (defined(__i386__) || defined(__x86_64))
-# if __has_include()
-# define HAVE_IMMINTRIN_H 1
-# endif
-#endif
-
-/* This is disabled by default to avoid C runtime dependencies and manifest requirements */
-#ifdef HAVE_LIBC
-/* Useful headers */
-#define STDC_HEADERS 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_MATH_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STRING_H 1
-
-/* C library functions */
-#define HAVE_MALLOC 1
-#define HAVE_CALLOC 1
-#define HAVE_REALLOC 1
-#define HAVE_FREE 1
-#define HAVE_ALLOCA 1
-/* OpenWatcom requires specific calling conventions for qsort and bsearch */
-#ifndef __WATCOMC__
-#define HAVE_QSORT 1
-#define HAVE_BSEARCH 1
-#endif
-#define HAVE_ABS 1
-#define HAVE_MEMSET 1
-#define HAVE_MEMCPY 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MEMCMP 1
-#define HAVE_STRLEN 1
-#define HAVE__STRREV 1
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__STRUPR */
-/* #undef HAVE__STRLWR */
-#define HAVE_STRCHR 1
-#define HAVE_STRRCHR 1
-#define HAVE_STRSTR 1
-/* #undef HAVE_STRTOK_R */
-/* These functions have security warnings, so we won't use them */
-/* #undef HAVE__LTOA */
-/* #undef HAVE__ULTOA */
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_STRTOD 1
-#define HAVE_ATOI 1
-#define HAVE_ATOF 1
-#define HAVE_STRCMP 1
-#define HAVE_STRNCMP 1
-#define HAVE__STRICMP 1
-#define HAVE__STRNICMP 1
-#define HAVE__WCSICMP 1
-#define HAVE__WCSNICMP 1
-#define HAVE__WCSDUP 1
-#define HAVE_ACOS 1
-#define HAVE_ASIN 1
-#define HAVE_ATAN 1
-#define HAVE_ATAN2 1
-#define HAVE_CEIL 1
-#define HAVE_COS 1
-#define HAVE_EXP 1
-#define HAVE_FABS 1
-#define HAVE_FLOOR 1
-#define HAVE_FMOD 1
-#define HAVE_LOG 1
-#define HAVE_LOG10 1
-#define HAVE_POW 1
-#define HAVE_SIN 1
-#define HAVE_SQRT 1
-#define HAVE_TAN 1
-#ifndef __WATCOMC__
-#define HAVE_ACOSF 1
-#define HAVE_ASINF 1
-#define HAVE_ATANF 1
-#define HAVE_ATAN2F 1
-#define HAVE_CEILF 1
-#define HAVE__COPYSIGN 1
-#define HAVE_COSF 1
-#define HAVE_EXPF 1
-#define HAVE_FABSF 1
-#define HAVE_FLOORF 1
-#define HAVE_FMODF 1
-#define HAVE_LOGF 1
-#define HAVE_LOG10F 1
-#define HAVE_POWF 1
-#define HAVE_SINF 1
-#define HAVE_SQRTF 1
-#define HAVE_TANF 1
-#endif
-#if defined(_MSC_VER)
-/* These functions were added with the VC++ 2013 C runtime library */
-#if _MSC_VER >= 1800
-#define HAVE_STRTOLL 1
-#define HAVE_STRTOULL 1
-#define HAVE_VSSCANF 1
-#define HAVE_LROUND 1
-#define HAVE_LROUNDF 1
-#define HAVE_ROUND 1
-#define HAVE_ROUNDF 1
-#define HAVE_SCALBN 1
-#define HAVE_SCALBNF 1
-#define HAVE_TRUNC 1
-#define HAVE_TRUNCF 1
-#endif
-/* This function is available with at least the VC++ 2008 C runtime library */
-#if _MSC_VER >= 1400
-#define HAVE__FSEEKI64 1
-#endif
-#ifdef _USE_MATH_DEFINES
-#define HAVE_M_PI 1
-#endif
-#elif defined(__WATCOMC__)
-#define HAVE__FSEEKI64 1
-#define HAVE_STRTOLL 1
-#define HAVE_STRTOULL 1
-#define HAVE_VSSCANF 1
-#define HAVE_ROUND 1
-#define HAVE_SCALBN 1
-#define HAVE_TRUNC 1
-#else
-#define HAVE_M_PI 1
-#endif
-#else
-#define HAVE_STDARG_H 1
-#define HAVE_STDDEF_H 1
-#endif
-
-/* Enable various audio drivers */
-#if defined(HAVE_MMDEVICEAPI_H) && defined(HAVE_AUDIOCLIENT_H)
-#define SDL_AUDIO_DRIVER_WASAPI 1
-#endif
-#define SDL_AUDIO_DRIVER_DSOUND 1
-#define SDL_AUDIO_DRIVER_WINMM 1
-#define SDL_AUDIO_DRIVER_DISK 1
-#define SDL_AUDIO_DRIVER_DUMMY 1
-
-/* Enable various input drivers */
-#define SDL_JOYSTICK_DINPUT 1
-#define SDL_JOYSTICK_HIDAPI 1
-#ifndef __WINRT__
-#define SDL_JOYSTICK_RAWINPUT 1
-#endif
-#define SDL_JOYSTICK_VIRTUAL 1
-#ifdef HAVE_WINDOWS_GAMING_INPUT_H
-#define SDL_JOYSTICK_WGI 1
-#endif
-#define SDL_JOYSTICK_XINPUT 1
-#define SDL_HAPTIC_DINPUT 1
-#define SDL_HAPTIC_XINPUT 1
-
-/* Enable the sensor driver */
-#ifdef HAVE_SENSORSAPI_H
-#define SDL_SENSOR_WINDOWS 1
-#else
-#define SDL_SENSOR_DUMMY 1
-#endif
-
-/* Enable various shared object loading systems */
-#define SDL_LOADSO_WINDOWS 1
-
-/* Enable various threading systems */
-#define SDL_THREAD_GENERIC_COND_SUFFIX 1
-#define SDL_THREAD_WINDOWS 1
-
-/* Enable various timer systems */
-#define SDL_TIMER_WINDOWS 1
-
-/* Enable various video drivers */
-#define SDL_VIDEO_DRIVER_DUMMY 1
-#define SDL_VIDEO_DRIVER_WINDOWS 1
-
-#ifndef SDL_VIDEO_RENDER_D3D
-#define SDL_VIDEO_RENDER_D3D 1
-#endif
-#if !defined(SDL_VIDEO_RENDER_D3D11) && defined(HAVE_D3D11_H)
-#define SDL_VIDEO_RENDER_D3D11 1
-#endif
-#if !defined(SDL_VIDEO_RENDER_D3D12) && defined(HAVE_D3D12_H)
-#define SDL_VIDEO_RENDER_D3D12 1
-#endif
-
-/* Enable OpenGL support */
-#ifndef SDL_VIDEO_OPENGL
-#define SDL_VIDEO_OPENGL 1
-#endif
-#ifndef SDL_VIDEO_OPENGL_WGL
-#define SDL_VIDEO_OPENGL_WGL 1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL
-#define SDL_VIDEO_RENDER_OGL 1
-#endif
-#ifndef SDL_VIDEO_RENDER_OGL_ES2
-#define SDL_VIDEO_RENDER_OGL_ES2 1
-#endif
-#ifndef SDL_VIDEO_OPENGL_ES2
-#define SDL_VIDEO_OPENGL_ES2 1
-#endif
-#ifndef SDL_VIDEO_OPENGL_EGL
-#define SDL_VIDEO_OPENGL_EGL 1
-#endif
-
-/* Enable Vulkan support */
-#define SDL_VIDEO_VULKAN 1
-
-/* Enable system power support */
-#define SDL_POWER_WINDOWS 1
-
-/* Enable filesystem support */
-#define SDL_FILESYSTEM_WINDOWS 1
-
-#endif /* SDL_config_windows_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
+#endif /* SDL_config_h_ */
diff --git a/libs/SDL2/include/SDL_config.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config_windows.h
similarity index 98%
rename from libs/SDL2/include/SDL_config.h
rename to libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config_windows.h
index 01322c182..77d2d74fd 100644
--- a/libs/SDL2/include/SDL_config.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_config_windows.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -99,9 +99,11 @@ typedef unsigned int uintptr_t;
#define HAVE_D3D11_H 1
#define HAVE_ROAPI_H 1
#endif
-#if defined(WDK_NTDDI_VERSION) && WDK_NTDDI_VERSION > 0x0A000008 /* 10.0.19041.0 */
+#if defined(__has_include)
+#if __has_include() && __has_include()
#define HAVE_D3D12_H 1
#endif
+#endif
#if defined(_WIN32_MAXVER) && _WIN32_MAXVER >= 0x0603 /* Windows 8.1 SDK */
#define HAVE_SHELLSCALINGAPI_H 1
#endif
diff --git a/libs/SDL2/include/SDL_types.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_copying.h
similarity index 85%
rename from libs/SDL2/include/SDL_types.h
rename to libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_copying.h
index b5d7192ff..bde743189 100644
--- a/libs/SDL2/include/SDL_types.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_copying.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -18,12 +18,3 @@
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
-
-/**
- * \file SDL_types.h
- *
- * \deprecated
- */
-
-/* DEPRECATED */
-#include "SDL_stdinc.h"
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_cpuinfo.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_cpuinfo.h
index ed5e97915..696a03bf7 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_cpuinfo.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_cpuinfo.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,10 +19,16 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: CPUInfo */
+
/**
- * \file SDL_cpuinfo.h
+ * # CategoryCPUInfo
*
- * CPU feature detection for SDL.
+ * CPU feature detection for SDL.
+ *
+ * These functions are largely concerned with reporting if the system has
+ * access to various SIMD instruction sets, but also has other important info
+ * to share, such as number of logical CPU cores.
*/
#ifndef SDL_cpuinfo_h_
@@ -53,9 +59,11 @@ _m_prefetch(void *__P)
#ifndef __MMX__
#define __MMX__
#endif
+/*
#ifndef __3dNOW__
#define __3dNOW__
#endif
+*/
#endif
#ifndef __SSE__
#define __SSE__
@@ -107,7 +115,8 @@ _m_prefetch(void *__P)
#include
#define __LASX__
#endif
-#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
+#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) && \
+ (defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86))
#include
#else
#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_egl.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_egl.h
index 6f51c0831..31290ec25 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_egl.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_egl.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,11 +19,10 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_egl.h
- *
- * This is a simple file to encapsulate the EGL API headers.
+/*
+ * This is a simple file to encapsulate the EGL API headers.
*/
+
#if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)
#if defined(__vita__) || defined(__psp2__)
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_endian.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_endian.h
index 71bc06729..5be66eafb 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_endian.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_endian.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_endian.h
+ * # CategoryEndian
*
- * Functions for reading and writing endian-specific values
+ * Functions for reading and writing endian-specific values
*/
#ifndef SDL_endian_h_
@@ -59,6 +59,15 @@ _m_prefetch(void *__P)
#ifdef __linux__
#include
#define SDL_BYTEORDER __BYTE_ORDER
+#elif defined(__sun) && defined(__SVR4) /* Solaris */
+#include
+#if defined(_LITTLE_ENDIAN)
+#define SDL_BYTEORDER SDL_LIL_ENDIAN
+#elif defined(_BIG_ENDIAN)
+#define SDL_BYTEORDER SDL_BIG_ENDIAN
+#else
+#error Unsupported endianness
+#endif
#elif defined(__OpenBSD__) || defined(__DragonFly__)
#include
#define SDL_BYTEORDER BYTE_ORDER
@@ -79,7 +88,7 @@ _m_prefetch(void *__P)
defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
(defined(__MIPS__) && defined(__MIPSEB__)) || \
defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \
- defined(__sparc__)
+ defined(__sparc__) || defined(__sparc)
#define SDL_BYTEORDER SDL_BIG_ENDIAN
#else
#define SDL_BYTEORDER SDL_LIL_ENDIAN
@@ -180,6 +189,16 @@ extern __inline Uint16 SDL_Swap16(Uint16);
parm [ax] \
modify [ax];
#else
+
+/**
+ * Use this function to swap the byte order of a 16-bit value.
+ *
+ * \param x the value to be swapped.
+ * \returns the swapped value.
+ *
+ * \sa SDL_SwapBE16
+ * \sa SDL_SwapLE16
+ */
SDL_FORCE_INLINE Uint16
SDL_Swap16(Uint16 x)
{
@@ -231,6 +250,16 @@ extern __inline Uint32 SDL_Swap32(Uint32);
parm [eax] \
modify [eax];
#else
+
+/**
+ * Use this function to swap the byte order of a 32-bit value.
+ *
+ * \param x the value to be swapped.
+ * \returns the swapped value.
+ *
+ * \sa SDL_SwapBE32
+ * \sa SDL_SwapLE32
+ */
SDL_FORCE_INLINE Uint32
SDL_Swap32(Uint32 x)
{
@@ -276,6 +305,16 @@ extern __inline Uint64 SDL_Swap64(Uint64);
parm [eax edx] \
modify [eax edx];
#else
+
+/**
+ * Use this function to swap the byte order of a 64-bit value.
+ *
+ * \param x the value to be swapped.
+ * \returns the swapped value.
+ *
+ * \sa SDL_SwapBE64
+ * \sa SDL_SwapLE64
+ */
SDL_FORCE_INLINE Uint64
SDL_Swap64(Uint64 x)
{
@@ -293,6 +332,15 @@ SDL_Swap64(Uint64 x)
#endif
+/**
+ * Use this function to swap the byte order of a floating point value.
+ *
+ * \param x the value to be swapped.
+ * \returns the swapped value.
+ *
+ * \sa SDL_SwapFloatBE
+ * \sa SDL_SwapFloatLE
+ */
SDL_FORCE_INLINE float
SDL_SwapFloat(float x)
{
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_error.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_error.h
index 31c22616c..8d9cde0e7 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_error.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_error.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_error.h
+ * # CategoryError
*
- * Simple error message routines for SDL.
+ * Simple error message routines for SDL.
*/
#ifndef SDL_error_h_
@@ -53,9 +53,9 @@ extern "C" {
* }
* ```
*
- * \param fmt a printf()-style message format string
+ * \param fmt a printf()-style message format string.
* \param ... additional parameters matching % tokens in the `fmt` string, if
- * any
+ * any.
* \returns always -1.
*
* \since This function is available since SDL 2.0.0.
@@ -109,8 +109,8 @@ extern DECLSPEC const char *SDLCALL SDL_GetError(void);
* otherwise operates exactly the same as SDL_GetError().
*
* \param errstr A buffer to fill with the last error message that was set for
- * the current thread
- * \param maxlen The size of the buffer pointed to by the errstr parameter
+ * the current thread.
+ * \param maxlen The size of the buffer pointed to by the errstr parameter.
* \returns the pointer passed in as the `errstr` parameter.
*
* \since This function is available since SDL 2.0.14.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_events.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_events.h
index 9d0970318..b9596c0ef 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_events.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_events.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_events.h
+ * # CategoryEvents
*
- * Include file for SDL event handling.
+ * Include file for SDL event handling.
*/
#ifndef SDL_events_h_
@@ -52,7 +52,7 @@ extern "C" {
/**
* The types of events that can be delivered.
*/
-typedef enum
+typedef enum SDL_EventType
{
SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */
@@ -131,6 +131,8 @@ typedef enum
SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */
SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */
SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */
+ SDL_CONTROLLERUPDATECOMPLETE_RESERVED_FOR_SDL3,
+ SDL_CONTROLLERSTEAMHANDLEUPDATED, /**< Game controller Steam handle has changed */
/* Touch events */
SDL_FINGERDOWN = 0x700,
@@ -165,7 +167,7 @@ typedef enum
/* Internal events */
SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */
- /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
+ /** Events SDL_USEREVENT through SDL_LASTEVENT are for your use,
* and should be allocated with SDL_RegisterEvents()
*/
SDL_USEREVENT = 0x8000,
@@ -177,7 +179,7 @@ typedef enum
} SDL_EventType;
/**
- * \brief Fields shared by every event
+ * Fields shared by every event
*/
typedef struct SDL_CommonEvent
{
@@ -186,14 +188,14 @@ typedef struct SDL_CommonEvent
} SDL_CommonEvent;
/**
- * \brief Display state change event data (event.display.*)
+ * Display state change event data (event.display.*)
*/
typedef struct SDL_DisplayEvent
{
- Uint32 type; /**< ::SDL_DISPLAYEVENT */
+ Uint32 type; /**< SDL_DISPLAYEVENT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 display; /**< The associated display index */
- Uint8 event; /**< ::SDL_DisplayEventID */
+ Uint8 event; /**< SDL_DisplayEventID */
Uint8 padding1;
Uint8 padding2;
Uint8 padding3;
@@ -201,14 +203,14 @@ typedef struct SDL_DisplayEvent
} SDL_DisplayEvent;
/**
- * \brief Window state change event data (event.window.*)
+ * Window state change event data (event.window.*)
*/
typedef struct SDL_WindowEvent
{
- Uint32 type; /**< ::SDL_WINDOWEVENT */
+ Uint32 type; /**< SDL_WINDOWEVENT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The associated window */
- Uint8 event; /**< ::SDL_WindowEventID */
+ Uint8 event; /**< SDL_WindowEventID */
Uint8 padding1;
Uint8 padding2;
Uint8 padding3;
@@ -217,14 +219,14 @@ typedef struct SDL_WindowEvent
} SDL_WindowEvent;
/**
- * \brief Keyboard button event structure (event.key.*)
+ * Keyboard button event structure (event.key.*)
*/
typedef struct SDL_KeyboardEvent
{
- Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
+ Uint32 type; /**< SDL_KEYDOWN or SDL_KEYUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with keyboard focus, if any */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
+ Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
Uint8 repeat; /**< Non-zero if this is a key repeat */
Uint8 padding2;
Uint8 padding3;
@@ -232,12 +234,13 @@ typedef struct SDL_KeyboardEvent
} SDL_KeyboardEvent;
#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
+
/**
- * \brief Keyboard text editing event structure (event.edit.*)
+ * Keyboard text editing event structure (event.edit.*)
*/
typedef struct SDL_TextEditingEvent
{
- Uint32 type; /**< ::SDL_TEXTEDITING */
+ Uint32 type; /**< SDL_TEXTEDITING */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with keyboard focus, if any */
char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */
@@ -246,12 +249,12 @@ typedef struct SDL_TextEditingEvent
} SDL_TextEditingEvent;
/**
- * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be
- * truncated if stored in the text buffer SDL_TextEditingEvent
+ * Extended keyboard text editing event structure (event.editExt.*) when text
+ * would be truncated if stored in the text buffer SDL_TextEditingEvent
*/
typedef struct SDL_TextEditingExtEvent
{
- Uint32 type; /**< ::SDL_TEXTEDITING_EXT */
+ Uint32 type; /**< SDL_TEXTEDITING_EXT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with keyboard focus, if any */
char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */
@@ -259,24 +262,43 @@ typedef struct SDL_TextEditingExtEvent
Sint32 length; /**< The length of selected editing text */
} SDL_TextEditingExtEvent;
-#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
/**
- * \brief Keyboard text input event structure (event.text.*)
+ * The maximum bytes of text that can be supplied in an SDL_TextInputEvent.
+ */
+#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
+
+/**
+ * Keyboard text input event structure (event.text.*)
+ *
+ * `text` is limited to SDL_TEXTINPUTEVENT_TEXT_SIZE bytes. If the incoming
+ * string is larger than this, SDL will split it and send it in pieces, across
+ * multiple events. The string is in UTF-8 format, and if split, SDL
+ * guarantees that it will not split in the middle of a UTF-8 sequence, so any
+ * event will only contain complete codepoints. However, if there are several
+ * codepoints that go together into a single glyph (like an emoji "thumbs up"
+ * followed by a skin color), they may be split between events.
+ *
+ * This event will never be delivered unless text input is enabled by calling
+ * SDL_StartTextInput(). Text input is enabled by default on desktop
+ * platforms, and disabled by default on mobile platforms!
+ *
+ * \sa SDL_StartTextInput
+ * \sa SDL_StopTextInput
*/
typedef struct SDL_TextInputEvent
{
- Uint32 type; /**< ::SDL_TEXTINPUT */
+ Uint32 type; /**< SDL_TEXTINPUT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with keyboard focus, if any */
- char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */
+ char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text; UTF-8 encoded. */
} SDL_TextInputEvent;
/**
- * \brief Mouse motion event structure (event.motion.*)
+ * Mouse motion event structure (event.motion.*)
*/
typedef struct SDL_MouseMotionEvent
{
- Uint32 type; /**< ::SDL_MOUSEMOTION */
+ Uint32 type; /**< SDL_MOUSEMOTION */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with mouse focus, if any */
Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
@@ -288,16 +310,16 @@ typedef struct SDL_MouseMotionEvent
} SDL_MouseMotionEvent;
/**
- * \brief Mouse button event structure (event.button.*)
+ * Mouse button event structure (event.button.*)
*/
typedef struct SDL_MouseButtonEvent
{
- Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
+ Uint32 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with mouse focus, if any */
Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
Uint8 button; /**< The mouse button index */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
+ Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
Uint8 padding1;
Sint32 x; /**< X coordinate, relative to window */
@@ -305,11 +327,11 @@ typedef struct SDL_MouseButtonEvent
} SDL_MouseButtonEvent;
/**
- * \brief Mouse wheel event structure (event.wheel.*)
+ * Mouse wheel event structure (event.wheel.*)
*/
typedef struct SDL_MouseWheelEvent
{
- Uint32 type; /**< ::SDL_MOUSEWHEEL */
+ Uint32 type; /**< SDL_MOUSEWHEEL */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The window with mouse focus, if any */
Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
@@ -323,11 +345,11 @@ typedef struct SDL_MouseWheelEvent
} SDL_MouseWheelEvent;
/**
- * \brief Joystick axis motion event structure (event.jaxis.*)
+ * Joystick axis motion event structure (event.jaxis.*)
*/
typedef struct SDL_JoyAxisEvent
{
- Uint32 type; /**< ::SDL_JOYAXISMOTION */
+ Uint32 type; /**< SDL_JOYAXISMOTION */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 axis; /**< The joystick axis index */
@@ -339,11 +361,11 @@ typedef struct SDL_JoyAxisEvent
} SDL_JoyAxisEvent;
/**
- * \brief Joystick trackball motion event structure (event.jball.*)
+ * Joystick trackball motion event structure (event.jball.*)
*/
typedef struct SDL_JoyBallEvent
{
- Uint32 type; /**< ::SDL_JOYBALLMOTION */
+ Uint32 type; /**< SDL_JOYBALLMOTION */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 ball; /**< The joystick trackball index */
@@ -355,18 +377,18 @@ typedef struct SDL_JoyBallEvent
} SDL_JoyBallEvent;
/**
- * \brief Joystick hat position change event structure (event.jhat.*)
+ * Joystick hat position change event structure (event.jhat.*)
*/
typedef struct SDL_JoyHatEvent
{
- Uint32 type; /**< ::SDL_JOYHATMOTION */
+ Uint32 type; /**< SDL_JOYHATMOTION */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 hat; /**< The joystick hat index */
Uint8 value; /**< The hat position value.
- * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
- * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
- * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
+ * \sa SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP
+ * \sa SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT
+ * \sa SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN
*
* Note that zero means the POV is centered.
*/
@@ -375,46 +397,51 @@ typedef struct SDL_JoyHatEvent
} SDL_JoyHatEvent;
/**
- * \brief Joystick button event structure (event.jbutton.*)
+ * Joystick button event structure (event.jbutton.*)
*/
typedef struct SDL_JoyButtonEvent
{
- Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
+ Uint32 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 button; /**< The joystick button index */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
+ Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
Uint8 padding1;
Uint8 padding2;
} SDL_JoyButtonEvent;
/**
- * \brief Joystick device event structure (event.jdevice.*)
+ * Joystick device event structure (event.jdevice.*)
+ *
+ * SDL will send JOYSTICK_ADDED events for devices that are already plugged in
+ * during SDL_Init.
+ *
+ * \sa SDL_ControllerDeviceEvent
*/
typedef struct SDL_JoyDeviceEvent
{
- Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
+ Uint32 type; /**< SDL_JOYDEVICEADDED or SDL_JOYDEVICEREMOVED */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
} SDL_JoyDeviceEvent;
/**
- * \brief Joysick battery level change event structure (event.jbattery.*)
+ * Joysick battery level change event structure (event.jbattery.*)
*/
typedef struct SDL_JoyBatteryEvent
{
- Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */
+ Uint32 type; /**< SDL_JOYBATTERYUPDATED */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
SDL_JoystickPowerLevel level; /**< The joystick battery level */
} SDL_JoyBatteryEvent;
/**
- * \brief Game controller axis motion event structure (event.caxis.*)
+ * Game controller axis motion event structure (event.caxis.*)
*/
typedef struct SDL_ControllerAxisEvent
{
- Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */
+ Uint32 type; /**< SDL_CONTROLLERAXISMOTION */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */
@@ -427,36 +454,42 @@ typedef struct SDL_ControllerAxisEvent
/**
- * \brief Game controller button event structure (event.cbutton.*)
+ * Game controller button event structure (event.cbutton.*)
*/
typedef struct SDL_ControllerButtonEvent
{
- Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
+ Uint32 type; /**< SDL_CONTROLLERBUTTONDOWN or SDL_CONTROLLERBUTTONUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Uint8 button; /**< The controller button (SDL_GameControllerButton) */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
+ Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */
Uint8 padding1;
Uint8 padding2;
} SDL_ControllerButtonEvent;
/**
- * \brief Controller device event structure (event.cdevice.*)
+ * Controller device event structure (event.cdevice.*)
+ *
+ * Joysticks that are supported game controllers receive both an
+ * SDL_JoyDeviceEvent and an SDL_ControllerDeviceEvent.
+ *
+ * SDL will send CONTROLLERDEVICEADDED events for joysticks that are already
+ * plugged in during SDL_Init() and are recognized as game controllers.
*/
typedef struct SDL_ControllerDeviceEvent
{
- Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
+ Uint32 type; /**< SDL_CONTROLLERDEVICEADDED, SDL_CONTROLLERDEVICEREMOVED, SDL_CONTROLLERDEVICEREMAPPED, or SDL_CONTROLLERSTEAMHANDLEUPDATED */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
} SDL_ControllerDeviceEvent;
/**
- * \brief Game controller touchpad event structure (event.ctouchpad.*)
+ * Game controller touchpad event structure (event.ctouchpad.*)
*/
typedef struct SDL_ControllerTouchpadEvent
{
- Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */
+ Uint32 type; /**< SDL_CONTROLLERTOUCHPADDOWN or SDL_CONTROLLERTOUCHPADMOTION or SDL_CONTROLLERTOUCHPADUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
Sint32 touchpad; /**< The index of the touchpad */
@@ -467,24 +500,24 @@ typedef struct SDL_ControllerTouchpadEvent
} SDL_ControllerTouchpadEvent;
/**
- * \brief Game controller sensor event structure (event.csensor.*)
+ * Game controller sensor event structure (event.csensor.*)
*/
typedef struct SDL_ControllerSensorEvent
{
- Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */
+ Uint32 type; /**< SDL_CONTROLLERSENSORUPDATE */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_JoystickID which; /**< The joystick instance id */
- Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */
+ Sint32 sensor; /**< The type of the sensor, one of the values of SDL_SensorType */
float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */
Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */
} SDL_ControllerSensorEvent;
/**
- * \brief Audio device event structure (event.adevice.*)
+ * Audio device event structure (event.adevice.*)
*/
typedef struct SDL_AudioDeviceEvent
{
- Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
+ Uint32 type; /**< SDL_AUDIODEVICEADDED, or SDL_AUDIODEVICEREMOVED */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */
@@ -495,11 +528,11 @@ typedef struct SDL_AudioDeviceEvent
/**
- * \brief Touch finger event structure (event.tfinger.*)
+ * Touch finger event structure (event.tfinger.*)
*/
typedef struct SDL_TouchFingerEvent
{
- Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
+ Uint32 type; /**< SDL_FINGERMOTION or SDL_FINGERDOWN or SDL_FINGERUP */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_TouchID touchId; /**< The touch device id */
SDL_FingerID fingerId;
@@ -513,11 +546,11 @@ typedef struct SDL_TouchFingerEvent
/**
- * \brief Multiple Finger Gesture Event (event.mgesture.*)
+ * Multiple Finger Gesture Event (event.mgesture.*)
*/
typedef struct SDL_MultiGestureEvent
{
- Uint32 type; /**< ::SDL_MULTIGESTURE */
+ Uint32 type; /**< SDL_MULTIGESTURE */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_TouchID touchId; /**< The touch device id */
float dTheta;
@@ -530,11 +563,11 @@ typedef struct SDL_MultiGestureEvent
/**
- * \brief Dollar Gesture Event (event.dgesture.*)
+ * Dollar Gesture Event (event.dgesture.*)
*/
typedef struct SDL_DollarGestureEvent
{
- Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
+ Uint32 type; /**< SDL_DOLLARGESTURE or SDL_DOLLARRECORD */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_TouchID touchId; /**< The touch device id */
SDL_GestureID gestureId;
@@ -546,13 +579,15 @@ typedef struct SDL_DollarGestureEvent
/**
- * \brief An event used to request a file open by the system (event.drop.*)
- * This event is enabled by default, you can disable it with SDL_EventState().
- * \note If this event is enabled, you must free the filename in the event.
+ * An event used to request a file open by the system (event.drop.*)
+ *
+ * This event is enabled by default, you can disable it with SDL_EventState().
+ *
+ * If this event is enabled, you must free the filename in the event.
*/
typedef struct SDL_DropEvent
{
- Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
+ Uint32 type; /**< SDL_DROPBEGIN or SDL_DROPFILE or SDL_DROPTEXT or SDL_DROPCOMPLETE */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
Uint32 windowID; /**< The window that was dropped on, if any */
@@ -560,11 +595,11 @@ typedef struct SDL_DropEvent
/**
- * \brief Sensor event structure (event.sensor.*)
+ * Sensor event structure (event.sensor.*)
*/
typedef struct SDL_SensorEvent
{
- Uint32 type; /**< ::SDL_SENSORUPDATE */
+ Uint32 type; /**< SDL_SENSORUPDATE */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Sint32 which; /**< The instance ID of the sensor */
float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
@@ -572,29 +607,20 @@ typedef struct SDL_SensorEvent
} SDL_SensorEvent;
/**
- * \brief The "quit requested" event
+ * The "quit requested" event
*/
typedef struct SDL_QuitEvent
{
- Uint32 type; /**< ::SDL_QUIT */
+ Uint32 type; /**< SDL_QUIT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
} SDL_QuitEvent;
/**
- * \brief OS Specific event
- */
-typedef struct SDL_OSEvent
-{
- Uint32 type; /**< ::SDL_QUIT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_OSEvent;
-
-/**
- * \brief A user-defined event type (event.user.*)
+ * A user-defined event type (event.user.*)
*/
typedef struct SDL_UserEvent
{
- Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
+ Uint32 type; /**< SDL_USEREVENT through SDL_LASTEVENT-1 */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Uint32 windowID; /**< The associated window if any */
Sint32 code; /**< User defined event code */
@@ -607,20 +633,24 @@ struct SDL_SysWMmsg;
typedef struct SDL_SysWMmsg SDL_SysWMmsg;
/**
- * \brief A video driver dependent system event (event.syswm.*)
- * This event is disabled by default, you can enable it with SDL_EventState()
+ * A video driver dependent system event (event.syswm.*)
*
- * \note If you want to use this event, you should include SDL_syswm.h.
+ * This event is disabled by default, you can enable it with SDL_EventState()
+ *
+ * If you want to use this event, you should include SDL_syswm.h.
*/
typedef struct SDL_SysWMEvent
{
- Uint32 type; /**< ::SDL_SYSWMEVENT */
+ Uint32 type; /**< SDL_SYSWMEVENT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */
} SDL_SysWMEvent;
/**
- * \brief General event structure
+ * General event structure
+ *
+ * The SDL_Event structure is the core of all event handling in SDL. SDL_Event
+ * is a union of all event structures used in SDL.
*/
typedef union SDL_Event
{
@@ -703,7 +733,7 @@ SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NUL
extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
/* @{ */
-typedef enum
+typedef enum SDL_eventaction
{
SDL_ADDEVENT,
SDL_PEEKEVENT,
@@ -730,15 +760,15 @@ typedef enum
*
* This function is thread-safe.
*
- * \param events destination buffer for the retrieved events
+ * \param events destination buffer for the retrieved events.
* \param numevents if action is SDL_ADDEVENT, the number of events to add
* back to the event queue; if action is SDL_PEEKEVENT or
- * SDL_GETEVENT, the maximum number of events to retrieve
- * \param action action to take; see [[#action|Remarks]] for details
+ * SDL_GETEVENT, the maximum number of events to retrieve.
+ * \param action action to take; see [[#action|Remarks]] for details.
* \param minType minimum value of the event type to be considered;
- * SDL_FIRSTEVENT is a safe choice
+ * SDL_FIRSTEVENT is a safe choice.
* \param maxType maximum value of the event type to be considered;
- * SDL_LASTEVENT is a safe choice
+ * SDL_LASTEVENT is a safe choice.
* \returns the number of events actually stored or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -759,7 +789,7 @@ extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
* If you need to check for a range of event types, use SDL_HasEvents()
* instead.
*
- * \param type the type of event to be queried; see SDL_EventType for details
+ * \param type the type of event to be queried; see SDL_EventType for details.
* \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if
* events matching `type` are not present.
*
@@ -776,9 +806,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
* If you need to check for a single event type, use SDL_HasEvent() instead.
*
* \param minType the low end of event type to be queried, inclusive; see
- * SDL_EventType for details
+ * SDL_EventType for details.
* \param maxType the high end of event type to be queried, inclusive; see
- * SDL_EventType for details
+ * SDL_EventType for details.
* \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are
* present, or SDL_FALSE if not.
*
@@ -802,7 +832,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
* sure that all pending OS events are flushed, you can call SDL_PumpEvents()
* on the main thread immediately before the flush call.
*
- * \param type the type of event to be cleared; see SDL_EventType for details
+ * \param type the type of event to be cleared; see SDL_EventType for details.
*
* \since This function is available since SDL 2.0.0.
*
@@ -825,9 +855,9 @@ extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
* on the main thread immediately before the flush call.
*
* \param minType the low end of event type to be cleared, inclusive; see
- * SDL_EventType for details
+ * SDL_EventType for details.
* \param maxType the high end of event type to be cleared, inclusive; see
- * SDL_EventType for details
+ * SDL_EventType for details.
*
* \since This function is available since SDL 2.0.0.
*
@@ -868,7 +898,7 @@ extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
* ```
*
* \param event the SDL_Event structure to be filled with the next event from
- * the queue, or NULL
+ * the queue, or NULL.
* \returns 1 if there is a pending event or 0 if there are none available.
*
* \since This function is available since SDL 2.0.0.
@@ -892,7 +922,7 @@ extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
* this function in the thread that initialized the video subsystem.
*
* \param event the SDL_Event structure to be filled in with the next event
- * from the queue, or NULL
+ * from the queue, or NULL.
* \returns 1 on success or 0 if there was an error while waiting for events;
* call SDL_GetError() for more information.
*
@@ -915,9 +945,9 @@ extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
* this function in the thread that initialized the video subsystem.
*
* \param event the SDL_Event structure to be filled in with the next event
- * from the queue, or NULL
+ * from the queue, or NULL.
* \param timeout the maximum number of milliseconds to wait for the next
- * available event
+ * available event.
* \returns 1 on success or 0 if there was an error while waiting for events;
* call SDL_GetError() for more information. This also returns 0 if
* the timeout elapsed without an event arriving.
@@ -952,7 +982,7 @@ extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
* get an event type that does not conflict with other code that also wants
* its own custom event types.
*
- * \param event the SDL_Event to be added to the queue
+ * \param event the SDL_Event to be added to the queue.
* \returns 1 on success, 0 if the event was filtered, or a negative error
* code on failure; call SDL_GetError() for more information. A
* common reason for error is the event queue being full.
@@ -968,11 +998,11 @@ extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
/**
* A function pointer used for callbacks that watch the event queue.
*
- * \param userdata what was passed as `userdata` to SDL_SetEventFilter()
- * or SDL_AddEventWatch, etc
- * \param event the event that triggered the callback
- * \returns 1 to permit event to be added to the queue, and 0 to disallow
- * it. When used with SDL_AddEventWatch, the return value is ignored.
+ * \param userdata what was passed as `userdata` to SDL_SetEventFilter() or
+ * SDL_AddEventWatch, etc.
+ * \param event the event that triggered the callback.
+ * \returns 1 to permit event to be added to the queue, and 0 to disallow it.
+ * When used with SDL_AddEventWatch, the return value is ignored.
*
* \sa SDL_SetEventFilter
* \sa SDL_AddEventWatch
@@ -995,7 +1025,7 @@ typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
* interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the
* application at the next event poll.
*
- * There is one caveat when dealing with the ::SDL_QuitEvent event type. The
+ * There is one caveat when dealing with the SDL_QuitEvent event type. The
* event filter is only called when the window manager desires to close the
* application window. If the event filter returns 1, then the window will be
* closed, otherwise the window will remain open if possible.
@@ -1010,8 +1040,8 @@ typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
* the event filter, but events pushed onto the queue with SDL_PeepEvents() do
* not.
*
- * \param filter An SDL_EventFilter function to call when an event happens
- * \param userdata a pointer that is passed to `filter`
+ * \param filter An SDL_EventFilter function to call when an event happens.
+ * \param userdata a pointer that is passed to `filter`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1030,9 +1060,9 @@ extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
* This function can be used to "chain" filters, by saving the existing filter
* before replacing it with a function that will call that saved filter.
*
- * \param filter the current callback function will be stored here
+ * \param filter the current callback function will be stored here.
* \param userdata the pointer that is passed to the current event filter will
- * be stored here
+ * be stored here.
* \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set.
*
* \since This function is available since SDL 2.0.0.
@@ -1061,7 +1091,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
* through SDL_PeepEvents().
*
* \param filter an SDL_EventFilter function to call when an event happens.
- * \param userdata a pointer that is passed to `filter`
+ * \param userdata a pointer that is passed to `filter`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1077,8 +1107,8 @@ extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
* This function takes the same input as SDL_AddEventWatch() to identify and
* delete the corresponding callback.
*
- * \param filter the function originally passed to SDL_AddEventWatch()
- * \param userdata the pointer originally passed to SDL_AddEventWatch()
+ * \param filter the function originally passed to SDL_AddEventWatch().
+ * \param userdata the pointer originally passed to SDL_AddEventWatch().
*
* \since This function is available since SDL 2.0.0.
*
@@ -1095,8 +1125,8 @@ extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
* this function does not change the filter permanently, it only uses the
* supplied filter until this function returns.
*
- * \param filter the SDL_EventFilter function to call when an event happens
- * \param userdata a pointer that is passed to `filter`
+ * \param filter the SDL_EventFilter function to call when an event happens.
+ * \param userdata a pointer that is passed to `filter`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1122,8 +1152,8 @@ extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
* from the event queue and will not be filtered
* - `SDL_ENABLE`: the event will be processed normally
*
- * \param type the type of event; see SDL_EventType for details
- * \param state how to process the event
+ * \param type the type of event; see SDL_EventType for details.
+ * \param state how to process the event.
* \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state
* of the event before this function makes any changes to it.
*
@@ -1145,7 +1175,7 @@ extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
* Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or
* 0xFFFFFFFF), but is clearer to write.
*
- * \param numevents the number of events to be allocated
+ * \param numevents the number of events to be allocated.
* \returns the beginning event number, or (Uint32)-1 if there are not enough
* user-defined events left.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_filesystem.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_filesystem.h
index 4cad657ec..c72a6165f 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_filesystem.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_filesystem.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_filesystem.h
+ * # CategoryFilesystem
*
- * \brief Include file for filesystem SDL API functions
+ * Include file for filesystem SDL API functions
*/
#ifndef SDL_filesystem_h_
@@ -64,7 +64,7 @@ extern "C" {
* directory of the application as it is uncommon to store resources outside
* the executable. As such it is not a writable directory.
*
- * The returned path is guaranteed to end with a path separator ('\' on
+ * The returned path is guaranteed to end with a path separator ('\\' on
* Windows, '/' on most other platforms).
*
* The pointer returned is owned by the caller. Please call SDL_free() on the
@@ -120,14 +120,14 @@ extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
* - ...only use letters, numbers, and spaces. Avoid punctuation like "Game
* Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
*
- * The returned path is guaranteed to end with a path separator ('\' on
+ * The returned path is guaranteed to end with a path separator ('\\' on
* Windows, '/' on most other platforms).
*
* The pointer returned is owned by the caller. Please call SDL_free() on the
* pointer when done with it.
*
- * \param org the name of your organization
- * \param app the name of your application
+ * \param org the name of your organization.
+ * \param app the name of your application.
* \returns a UTF-8 string of the user directory in platform-dependent
* notation. NULL if there's a problem (creating directory failed,
* etc.).
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gamecontroller.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gamecontroller.h
index 140054d36..4d8bcce22 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gamecontroller.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gamecontroller.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,10 +19,12 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: GameController */
+
/**
- * \file SDL_gamecontroller.h
+ * # CategoryGameController
*
- * Include file for SDL game controller event handling
+ * Include file for SDL game controller event handling
*/
#ifndef SDL_gamecontroller_h_
@@ -44,7 +46,7 @@ extern "C" {
* \file SDL_gamecontroller.h
*
* In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system
+ * with the SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system
* for game controllers, and load appropriate drivers.
*
* If you would like to receive controller updates while the application
@@ -58,7 +60,7 @@ extern "C" {
struct _SDL_GameController;
typedef struct _SDL_GameController SDL_GameController;
-typedef enum
+typedef enum SDL_GameControllerType
{
SDL_CONTROLLER_TYPE_UNKNOWN = 0,
SDL_CONTROLLER_TYPE_XBOX360,
@@ -73,10 +75,11 @@ typedef enum
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
+ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,
+ SDL_CONTROLLER_TYPE_MAX
} SDL_GameControllerType;
-typedef enum
+typedef enum SDL_GameControllerBindType
{
SDL_CONTROLLER_BINDTYPE_NONE = 0,
SDL_CONTROLLER_BINDTYPE_BUTTON,
@@ -85,7 +88,7 @@ typedef enum
} SDL_GameControllerBindType;
/**
- * Get the SDL joystick layer binding for this controller button/axis mapping
+ * Get the SDL joystick layer binding for this controller button/axis mapping
*/
typedef struct SDL_GameControllerButtonBind
{
@@ -143,6 +146,10 @@ typedef struct SDL_GameControllerButtonBind
* If a new mapping is loaded for an already known controller GUID, the later
* version will overwrite the one currently loaded.
*
+ * If this function is called before SDL_Init, SDL will generate an
+ * SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged
+ * in at the time that SDL_Init is called.
+ *
* Mappings not belonging to the current platform or with no platform field
* specified will be ignored (i.e. mappings for Linux will be ignored in
* Windows, etc).
@@ -151,8 +158,8 @@ typedef struct SDL_GameControllerButtonBind
* processing it, so take this into consideration if you are in a memory
* constrained environment.
*
- * \param rw the data stream for the mappings to be added
- * \param freerw non-zero to close the stream after being read
+ * \param rw the data stream for the mappings to be added.
+ * \param freerw non-zero to close the stream after being read.
* \returns the number of mappings added or -1 on error; call SDL_GetError()
* for more information.
*
@@ -161,13 +168,15 @@ typedef struct SDL_GameControllerButtonBind
* \sa SDL_GameControllerAddMapping
* \sa SDL_GameControllerAddMappingsFromFile
* \sa SDL_GameControllerMappingForGUID
+ * \sa SDL_CONTROLLERDEVICEADDED
*/
extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
/**
- * Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
+ * Load a set of mappings from a file, filtered by the current
+ * SDL_GetPlatform()
*
- * Convenience macro.
+ * Convenience macro.
*/
#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
@@ -189,7 +198,11 @@ extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw,
* "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7"
* ```
*
- * \param mappingString the mapping string
+ * If this function is called before SDL_Init, SDL will generate an
+ * SDL_CONTROLLERDEVICEADDED event for matching controllers that are plugged
+ * in at the time that SDL_Init is called.
+ *
+ * \param mappingString the mapping string.
* \returns 1 if a new mapping is added, 0 if an existing mapping is updated,
* -1 on error; call SDL_GetError() for more information.
*
@@ -197,6 +210,7 @@ extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw,
*
* \sa SDL_GameControllerMapping
* \sa SDL_GameControllerMappingForGUID
+ * \sa SDL_CONTROLLERDEVICEADDED
*/
extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
@@ -224,7 +238,7 @@ extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_ind
*
* The returned string must be freed with SDL_free().
*
- * \param guid a structure containing the GUID for which a mapping is desired
+ * \param guid a structure containing the GUID for which a mapping is desired.
* \returns a mapping string or NULL on error; call SDL_GetError() for more
* information.
*
@@ -243,7 +257,7 @@ extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID
* Details about mappings are discussed with SDL_GameControllerAddMapping().
*
* \param gamecontroller the game controller you want to get the current
- * mapping for
+ * mapping for.
* \returns a string that has the controller's mapping or NULL if no mapping
* is available; call SDL_GetError() for more information.
*
@@ -261,7 +275,7 @@ extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gam
* SDL_JoystickOpen().
*
* \param joystick_index the device_index of a device, up to
- * SDL_NumJoysticks()
+ * SDL_NumJoysticks().
* \returns SDL_TRUE if the given joystick is supported by the game controller
* interface, SDL_FALSE if it isn't or it's an invalid index.
*
@@ -281,7 +295,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
* SDL_JoystickOpen().
*
* \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
+ * SDL_NumJoysticks()-1.
* \returns the implementation-dependent name for the game controller, or NULL
* if there is no name or the index is invalid.
*
@@ -302,7 +316,7 @@ extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_
* SDL_JoystickOpen().
*
* \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
+ * SDL_NumJoysticks()-1.
* \returns the implementation-dependent path for the game controller, or NULL
* if there is no path or the index is invalid.
*
@@ -318,7 +332,7 @@ extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_
* This can be called before any controllers are opened.
*
* \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
+ * SDL_NumJoysticks()-1.
* \returns the controller type.
*
* \since This function is available since SDL 2.0.12.
@@ -331,7 +345,7 @@ extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(in
* This can be called before any controllers are opened.
*
* \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
+ * SDL_NumJoysticks()-1.
* \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
* no mapping is available.
*
@@ -351,7 +365,7 @@ extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joysti
* be used there instead.
*
* \param joystick_index the device_index of a device, up to
- * SDL_NumJoysticks()
+ * SDL_NumJoysticks().
* \returns a gamecontroller identifier or NULL if an error occurred; call
* SDL_GetError() for more information.
*
@@ -366,7 +380,7 @@ extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_
/**
* Get the SDL_GameController associated with an instance id.
*
- * \param joyid the instance id to get the SDL_GameController for
+ * \param joyid the instance id to get the SDL_GameController for.
* \returns an SDL_GameController on success or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -398,7 +412,7 @@ extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(in
* it takes a controller identifier instead of the (unstable) device index.
*
* \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
+ * SDL_GameControllerOpen().
* \returns the implementation dependent name for the game controller, or NULL
* if there is no name or the identifier passed is invalid.
*
@@ -416,7 +430,7 @@ extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *g
* it takes a controller identifier instead of the (unstable) device index.
*
* \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
+ * SDL_GameControllerOpen().
* \returns the implementation dependent path for the game controller, or NULL
* if there is no path or the identifier passed is invalid.
*
@@ -523,11 +537,25 @@ extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameCont
*/
extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
+/**
+ * Get the Steam Input handle of an opened controller, if available.
+ *
+ * Returns an InputHandle_t for the controller that can be used with Steam
+ * Input API: https://partner.steamgames.com/doc/api/ISteamInput
+ *
+ * \param gamecontroller the game controller object to query.
+ * \returns the gamepad handle, or 0 if unavailable.
+ *
+ * \since This function is available since SDL 2.30.0.
+ */
+extern DECLSPEC Uint64 SDLCALL SDL_GameControllerGetSteamHandle(SDL_GameController *gamecontroller);
+
+
/**
* Check if a controller has been opened and is currently connected.
*
* \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
+ * SDL_GameControllerOpen().
* \returns SDL_TRUE if the controller has been opened and is currently
* connected, or SDL_FALSE if not.
*
@@ -552,7 +580,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameControlle
* cause SDL to crash.
*
* \param gamecontroller the game controller object that you want to get a
- * joystick from
+ * joystick from.
* \returns a SDL_Joystick object; call SDL_GetError() for more information.
*
* \since This function is available since SDL 2.0.0.
@@ -569,7 +597,7 @@ extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameCont
* Any number can be passed to SDL_GameControllerEventState(), but only -1, 0,
* and 1 will have any effect. Other numbers will just be returned.
*
- * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
+ * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`.
* \returns the same value passed to the function, with exception to -1
* (SDL_QUERY), which will return the current state.
*
@@ -592,15 +620,19 @@ extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
/**
- * The list of axes available from a controller
+ * The list of axes available from a controller
*
- * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
- * and are centered within ~8000 of zero, though advanced UI will allow users to set
- * or autodetect the dead zone, which varies between controllers.
+ * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to
+ * SDL_JOYSTICK_AXIS_MAX, and are centered within ~8000 of zero, though
+ * advanced UI will allow users to set or autodetect the dead zone, which
+ * varies between controllers.
*
- * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
+ * Trigger axis values range from 0 (released) to SDL_JOYSTICK_AXIS_MAX (fully
+ * pressed) when reported by SDL_GameControllerGetAxis(). Note that this is
+ * not the same range that will be reported by the lower-level
+ * SDL_GetJoystickAxis().
*/
-typedef enum
+typedef enum SDL_GameControllerAxis
{
SDL_CONTROLLER_AXIS_INVALID = -1,
SDL_CONTROLLER_AXIS_LEFTX,
@@ -624,7 +656,7 @@ typedef enum
* `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`,
* respectively.
*
- * \param str string representing a SDL_GameController axis
+ * \param str string representing a SDL_GameController axis.
* \returns the SDL_GameControllerAxis enum corresponding to the input string,
* or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
*
@@ -639,7 +671,7 @@ extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromStri
*
* The caller should not SDL_free() the returned string.
*
- * \param axis an enum value for a given SDL_GameControllerAxis
+ * \param axis an enum value for a given SDL_GameControllerAxis.
* \returns a string for the given axis, or NULL if an invalid axis is
* specified. The string returned is of the format used by
* SDL_GameController mapping strings.
@@ -653,8 +685,8 @@ extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameC
/**
* Get the SDL joystick layer binding for a controller axis mapping.
*
- * \param gamecontroller a game controller
- * \param axis an axis enum value (one of the SDL_GameControllerAxis values)
+ * \param gamecontroller a game controller.
+ * \param axis an axis enum value (one of the SDL_GameControllerAxis values).
* \returns a SDL_GameControllerButtonBind describing the bind. On failure
* (like the given Controller axis doesn't exist on the device), its
* `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
@@ -673,8 +705,8 @@ SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
* This merely reports whether the controller's mapping defined this axis, as
* that is all the information SDL has about the physical device.
*
- * \param gamecontroller a game controller
- * \param axis an axis enum value (an SDL_GameControllerAxis value)
+ * \param gamecontroller a game controller.
+ * \param axis an axis enum value (an SDL_GameControllerAxis value).
* \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -687,11 +719,15 @@ SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameController
*
* The axis indices start at index 0.
*
- * The state is a value ranging from -32768 to 32767. Triggers, however, range
- * from 0 to 32767 (they never return a negative value).
+ * For thumbsticks, the state is a value ranging from -32768 (up/left) to
+ * 32767 (down/right).
*
- * \param gamecontroller a game controller
- * \param axis an axis index (one of the SDL_GameControllerAxis values)
+ * Triggers range from 0 when released to 32767 when fully pressed, and never
+ * return a negative value. Note that this differs from the value reported by
+ * the lower-level SDL_JoystickGetAxis(), which normally uses the full range.
+ *
+ * \param gamecontroller a game controller.
+ * \param axis an axis index (one of the SDL_GameControllerAxis values).
* \returns axis state (including 0) on success or 0 (also) on failure; call
* SDL_GetError() for more information.
*
@@ -703,9 +739,9 @@ extern DECLSPEC Sint16 SDLCALL
SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
/**
- * The list of buttons available from a controller
+ * The list of buttons available from a controller
*/
-typedef enum
+typedef enum SDL_GameControllerButton
{
SDL_CONTROLLER_BUTTON_INVALID = -1,
SDL_CONTROLLER_BUTTON_A,
@@ -740,7 +776,7 @@ typedef enum
* SDL_GameController mapping. You do not normally need to call this function
* unless you are parsing SDL_GameController mappings in your own code.
*
- * \param str string representing a SDL_GameController axis
+ * \param str string representing a SDL_GameController axis.
* \returns the SDL_GameControllerButton enum corresponding to the input
* string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
*
@@ -753,7 +789,7 @@ extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFrom
*
* The caller should not SDL_free() the returned string.
*
- * \param button an enum value for a given SDL_GameControllerButton
+ * \param button an enum value for a given SDL_GameControllerButton.
* \returns a string for the given button, or NULL if an invalid button is
* specified. The string returned is of the format used by
* SDL_GameController mapping strings.
@@ -767,8 +803,8 @@ extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_Gam
/**
* Get the SDL joystick layer binding for a controller button mapping.
*
- * \param gamecontroller a game controller
- * \param button an button enum value (an SDL_GameControllerButton value)
+ * \param gamecontroller a game controller.
+ * \param button an button enum value (an SDL_GameControllerButton value).
* \returns a SDL_GameControllerButtonBind describing the bind. On failure
* (like the given Controller button doesn't exist on the device),
* its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
@@ -787,8 +823,8 @@ SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
* This merely reports whether the controller's mapping defined this button,
* as that is all the information SDL has about the physical device.
*
- * \param gamecontroller a game controller
- * \param button a button enum value (an SDL_GameControllerButton value)
+ * \param gamecontroller a game controller.
+ * \param button a button enum value (an SDL_GameControllerButton value).
* \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -799,8 +835,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController
/**
* Get the current state of a button on a game controller.
*
- * \param gamecontroller a game controller
- * \param button a button index (one of the SDL_GameControllerButton values)
+ * \param gamecontroller a game controller.
+ * \param button a button index (one of the SDL_GameControllerButton values).
* \returns 1 for pressed state or 0 for not pressed state or error; call
* SDL_GetError() for more information.
*
@@ -836,8 +872,8 @@ extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameControll
/**
* Return whether a game controller has a particular sensor.
*
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
+ * \param gamecontroller The controller to query.
+ * \param type The type of sensor to query.
* \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -847,9 +883,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController
/**
* Set whether data reporting for a game controller sensor is enabled.
*
- * \param gamecontroller The controller to update
- * \param type The type of sensor to enable/disable
- * \param enabled Whether data reporting should be enabled
+ * \param gamecontroller The controller to update.
+ * \param type The type of sensor to enable/disable.
+ * \param enabled Whether data reporting should be enabled.
* \returns 0 or -1 if an error occurred.
*
* \since This function is available since SDL 2.0.14.
@@ -859,8 +895,8 @@ extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameControlle
/**
* Query whether sensor data reporting is enabled for a game controller.
*
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
+ * \param gamecontroller The controller to query.
+ * \param type The type of sensor to query.
* \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -871,8 +907,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameContr
* Get the data rate (number of events per second) of a game controller
* sensor.
*
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
+ * \param gamecontroller The controller to query.
+ * \param type The type of sensor to query.
* \return the data rate, or 0.0f if the data rate is not available.
*
* \since This function is available since SDL 2.0.16.
@@ -885,10 +921,10 @@ extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameContro
* The number of values and interpretation of the data is sensor dependent.
* See SDL_sensor.h for the details for each type of sensor.
*
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
+ * \param gamecontroller The controller to query.
+ * \param type The type of sensor to query.
+ * \param data A pointer filled with the current sensor state.
+ * \param num_values The number of values to write to data.
* \return 0 or -1 if an error occurred.
*
* \since This function is available since SDL 2.0.14.
@@ -902,12 +938,12 @@ extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *
* The number of values and interpretation of the data is sensor dependent.
* See SDL_sensor.h for the details for each type of sensor.
*
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
+ * \param gamecontroller The controller to query.
+ * \param type The type of sensor to query.
* \param timestamp A pointer filled with the timestamp in microseconds of the
- * current sensor reading if available, or 0 if not
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
+ * current sensor reading if available, or 0 if not.
+ * \param data A pointer filled with the current sensor state.
+ * \param num_values The number of values to write to data.
* \return 0 or -1 if an error occurred.
*
* \since This function is available since SDL 2.26.0.
@@ -920,13 +956,13 @@ extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_Gam
* Each call to this function cancels any previous rumble effect, and calling
* it with 0 intensity stops any rumbling.
*
- * \param gamecontroller The controller to vibrate
+ * \param gamecontroller The controller to vibrate.
* \param low_frequency_rumble The intensity of the low frequency (left)
- * rumble motor, from 0 to 0xFFFF
+ * rumble motor, from 0 to 0xFFFF.
* \param high_frequency_rumble The intensity of the high frequency (right)
- * rumble motor, from 0 to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if rumble isn't supported on this controller
+ * rumble motor, from 0 to 0xFFFF.
+ * \param duration_ms The duration of the rumble effect, in milliseconds.
+ * \returns 0, or -1 if rumble isn't supported on this controller.
*
* \since This function is available since SDL 2.0.9.
*
@@ -945,13 +981,13 @@ extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecon
* want the (more common) whole-controller rumble, use
* SDL_GameControllerRumble() instead.
*
- * \param gamecontroller The controller to vibrate
+ * \param gamecontroller The controller to vibrate.
* \param left_rumble The intensity of the left trigger rumble motor, from 0
- * to 0xFFFF
+ * to 0xFFFF.
* \param right_rumble The intensity of the right trigger rumble motor, from 0
- * to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if trigger rumble isn't supported on this controller
+ * to 0xFFFF.
+ * \param duration_ms The duration of the rumble effect, in milliseconds.
+ * \returns 0, or -1 if trigger rumble isn't supported on this controller.
*
* \since This function is available since SDL 2.0.14.
*
@@ -962,9 +998,9 @@ extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController
/**
* Query whether a game controller has an LED.
*
- * \param gamecontroller The controller to query
+ * \param gamecontroller The controller to query.
* \returns SDL_TRUE, or SDL_FALSE if this controller does not have a
- * modifiable LED
+ * modifiable LED.
*
* \since This function is available since SDL 2.0.14.
*/
@@ -973,9 +1009,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *ga
/**
* Query whether a game controller has rumble support.
*
- * \param gamecontroller The controller to query
+ * \param gamecontroller The controller to query.
* \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble
- * support
+ * support.
*
* \since This function is available since SDL 2.0.18.
*
@@ -986,9 +1022,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController
/**
* Query whether a game controller has rumble support on triggers.
*
- * \param gamecontroller The controller to query
+ * \param gamecontroller The controller to query.
* \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger
- * rumble support
+ * rumble support.
*
* \since This function is available since SDL 2.0.18.
*
@@ -999,11 +1035,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameCon
/**
* Update a game controller's LED color.
*
- * \param gamecontroller The controller to update
- * \param red The intensity of the red LED
- * \param green The intensity of the green LED
- * \param blue The intensity of the blue LED
- * \returns 0, or -1 if this controller does not have a modifiable LED
+ * \param gamecontroller The controller to update.
+ * \param red The intensity of the red LED.
+ * \param green The intensity of the green LED.
+ * \param blue The intensity of the blue LED.
+ * \returns 0, or -1 if this controller does not have a modifiable LED.
*
* \since This function is available since SDL 2.0.14.
*/
@@ -1012,11 +1048,11 @@ extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecon
/**
* Send a controller specific effect packet
*
- * \param gamecontroller The controller to affect
- * \param data The data to send to the controller
- * \param size The size of the data to send to the controller
+ * \param gamecontroller The controller to affect.
+ * \param data The data to send to the controller.
+ * \param size The size of the data to send to the controller.
* \returns 0, or -1 if this controller or driver doesn't support effect
- * packets
+ * packets.
*
* \since This function is available since SDL 2.0.16.
*/
@@ -1026,7 +1062,7 @@ extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gam
* Close a game controller previously opened with SDL_GameControllerOpen().
*
* \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
+ * SDL_GameControllerOpen().
*
* \since This function is available since SDL 2.0.0.
*
@@ -1038,9 +1074,9 @@ extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecon
* Return the sfSymbolsName for a given button on a game controller on Apple
* platforms.
*
- * \param gamecontroller the controller to query
- * \param button a button on the game controller
- * \returns the sfSymbolsName or NULL if the name can't be found
+ * \param gamecontroller the controller to query.
+ * \param button a button on the game controller.
+ * \returns the sfSymbolsName or NULL if the name can't be found.
*
* \since This function is available since SDL 2.0.18.
*
@@ -1052,9 +1088,9 @@ extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForBu
* Return the sfSymbolsName for a given axis on a game controller on Apple
* platforms.
*
- * \param gamecontroller the controller to query
- * \param axis an axis on the game controller
- * \returns the sfSymbolsName or NULL if the name can't be found
+ * \param gamecontroller the controller to query.
+ * \param axis an axis on the game controller.
+ * \returns the sfSymbolsName or NULL if the name can't be found.
*
* \since This function is available since SDL 2.0.18.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gesture.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gesture.h
index db70b4dd8..acfa56f31 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gesture.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_gesture.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_gesture.h
+ * # CategoryGesture
*
- * Include file for SDL gesture event handling.
+ * Include file for SDL gesture event handling.
*/
#ifndef SDL_gesture_h_
@@ -51,7 +51,7 @@ typedef Sint64 SDL_GestureID;
* If the parameter `touchId` is -1 (i.e., all devices), this function will
* always return 1, regardless of whether there actually are any devices.
*
- * \param touchId the touch device id, or -1 for all touch devices
+ * \param touchId the touch device id, or -1 for all touch devices.
* \returns 1 on success or 0 if the specified device could not be found.
*
* \since This function is available since SDL 2.0.0.
@@ -64,7 +64,7 @@ extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
/**
* Save all currently loaded Dollar Gesture templates.
*
- * \param dst a SDL_RWops to save to
+ * \param dst a SDL_RWops to save to.
* \returns the number of saved templates on success or 0 on failure; call
* SDL_GetError() for more information.
*
@@ -78,8 +78,8 @@ extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
/**
* Save a currently loaded Dollar Gesture template.
*
- * \param gestureId a gesture id
- * \param dst a SDL_RWops to save to
+ * \param gestureId a gesture id.
+ * \param dst a SDL_RWops to save to.
* \returns 1 on success or 0 on failure; call SDL_GetError() for more
* information.
*
@@ -94,8 +94,8 @@ extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_R
/**
* Load Dollar Gesture templates from a file.
*
- * \param touchId a touch id
- * \param src a SDL_RWops to load from
+ * \param touchId a touch id.
+ * \param src a SDL_RWops to load from.
* \returns the number of loaded templates on success or a negative error code
* (or 0) on failure; call SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_guid.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_guid.h
index d964223c6..fd9a50e32 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_guid.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_guid.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,10 +19,13 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: GUID */
+
/**
- * \file SDL_guid.h
+ * # CategoryGUID
*
- * Include file for handling ::SDL_GUID values.
+ * A GUID is a 128-bit value that represents something that is uniquely
+ * identifiable by this value: "globally unique."
*/
#ifndef SDL_guid_h_
@@ -38,34 +41,38 @@ extern "C" {
#endif
/**
- * An SDL_GUID is a 128-bit identifier for an input device that
- * identifies that device across runs of SDL programs on the same
- * platform. If the device is detached and then re-attached to a
- * different port, or if the base system is rebooted, the device
- * should still report the same GUID.
+ * An SDL_GUID is a 128-bit identifier.
*
- * GUIDs are as precise as possible but are not guaranteed to
- * distinguish physically distinct but equivalent devices. For
- * example, two game controllers from the same vendor with the same
- * product ID and revision may have the same GUID.
+ * This is an acronym for "Globally Unique ID."
*
- * GUIDs may be platform-dependent (i.e., the same device may report
- * different GUIDs on different operating systems).
+ * While a GUID can be used to assign a unique value to almost anything, in
+ * SDL these are largely used to identify input devices across runs of SDL
+ * programs on the same platform.If the device is detached and then
+ * re-attached to a different port, or if the base system is rebooted, the
+ * device should still report the same GUID.
+ *
+ * GUIDs are as precise as possible but are not guaranteed to distinguish
+ * physically distinct but equivalent devices. For example, two game
+ * controllers from the same vendor with the same product ID and revision may
+ * have the same GUID.
+ *
+ * GUIDs may be platform-dependent (i.e., the same device may report different
+ * GUIDs on different operating systems).
*/
-typedef struct {
+typedef struct SDL_GUID {
Uint8 data[16];
} SDL_GUID;
/* Function prototypes */
/**
- * Get an ASCII string representation for a given ::SDL_GUID.
+ * Get an ASCII string representation for a given SDL_GUID.
*
* You should supply at least 33 bytes for pszGUID.
*
- * \param guid the ::SDL_GUID you wish to convert to string
- * \param pszGUID buffer in which to write the ASCII string
- * \param cbGUID the size of pszGUID
+ * \param guid the SDL_GUID you wish to convert to string.
+ * \param pszGUID buffer in which to write the ASCII string.
+ * \param cbGUID the size of pszGUID.
*
* \since This function is available since SDL 2.24.0.
*
@@ -74,14 +81,14 @@ typedef struct {
extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID);
/**
- * Convert a GUID string into a ::SDL_GUID structure.
+ * Convert a GUID string into a SDL_GUID structure.
*
* Performs no error checking. If this function is given a string containing
* an invalid GUID, the function will silently succeed, but the GUID generated
* will not be useful.
*
- * \param pchGUID string containing an ASCII representation of a GUID
- * \returns a ::SDL_GUID structure.
+ * \param pchGUID string containing an ASCII representation of a GUID.
+ * \returns a SDL_GUID structure.
*
* \since This function is available since SDL 2.24.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_haptic.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_haptic.h
index 2462a1e47..f679c5734 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_haptic.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_haptic.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,24 +20,25 @@
*/
/**
- * \file SDL_haptic.h
+ * # CategoryHaptic
*
- * \brief The SDL haptic subsystem allows you to control haptic (force feedback)
- * devices.
+ * SDL haptic subsystem allows you to control haptic (force feedback) devices.
*
- * The basic usage is as follows:
- * - Initialize the subsystem (::SDL_INIT_HAPTIC).
- * - Open a haptic device.
- * - SDL_HapticOpen() to open from index.
- * - SDL_HapticOpenFromJoystick() to open from an existing joystick.
- * - Create an effect (::SDL_HapticEffect).
- * - Upload the effect with SDL_HapticNewEffect().
- * - Run the effect with SDL_HapticRunEffect().
- * - (optional) Free the effect with SDL_HapticDestroyEffect().
- * - Close the haptic device with SDL_HapticClose().
+ * The basic usage is as follows:
*
- * \par Simple rumble example:
- * \code
+ * - Initialize the subsystem (SDL_INIT_HAPTIC).
+ * - Open a haptic device.
+ * - SDL_HapticOpen() to open from index.
+ * - SDL_HapticOpenFromJoystick() to open from an existing joystick.
+ * - Create an effect (SDL_HapticEffect).
+ * - Upload the effect with SDL_HapticNewEffect().
+ * - Run the effect with SDL_HapticRunEffect().
+ * - (optional) Free the effect with SDL_HapticDestroyEffect().
+ * - Close the haptic device with SDL_HapticClose().
+ *
+ * Simple rumble example:
+ *
+ * ```c
* SDL_Haptic *haptic;
*
* // Open the device
@@ -56,10 +57,11 @@
*
* // Clean up
* SDL_HapticClose( haptic );
- * \endcode
+ * ```
*
- * \par Complete example:
- * \code
+ * Complete example:
+ *
+ * ```c
* int test_haptic( SDL_Joystick * joystick ) {
* SDL_Haptic *haptic;
* SDL_HapticEffect effect;
@@ -101,7 +103,7 @@
*
* return 0; // Success
* }
- * \endcode
+ * ```
*/
#ifndef SDL_haptic_h_
@@ -154,31 +156,29 @@ typedef struct _SDL_Haptic SDL_Haptic;
/* @{ */
/**
- * \brief Constant effect supported.
+ * Constant effect supported.
*
- * Constant haptic effect.
+ * Constant haptic effect.
*
- * \sa SDL_HapticCondition
+ * \sa SDL_HapticCondition
*/
#define SDL_HAPTIC_CONSTANT (1u<<0)
/**
- * \brief Sine wave effect supported.
+ * Sine wave effect supported.
*
- * Periodic haptic effect that simulates sine waves.
+ * Periodic haptic effect that simulates sine waves.
*
- * \sa SDL_HapticPeriodic
+ * \sa SDL_HapticPeriodic
*/
#define SDL_HAPTIC_SINE (1u<<1)
/**
- * \brief Left/Right effect supported.
+ * Left/Right effect supported.
*
- * Haptic effect for direct control over high/low frequency motors.
+ * Haptic effect for direct control over high/low frequency motors.
*
- * \sa SDL_HapticLeftRight
- * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
- * we ran out of bits, and this is important for XInput devices.
+ * \sa SDL_HapticLeftRight
*/
#define SDL_HAPTIC_LEFTRIGHT (1u<<2)
@@ -186,85 +186,85 @@ typedef struct _SDL_Haptic SDL_Haptic;
/* #define SDL_HAPTIC_SQUARE (1<<2) */
/**
- * \brief Triangle wave effect supported.
+ * Triangle wave effect supported.
*
- * Periodic haptic effect that simulates triangular waves.
+ * Periodic haptic effect that simulates triangular waves.
*
- * \sa SDL_HapticPeriodic
+ * \sa SDL_HapticPeriodic
*/
#define SDL_HAPTIC_TRIANGLE (1u<<3)
/**
- * \brief Sawtoothup wave effect supported.
+ * Sawtoothup wave effect supported.
*
- * Periodic haptic effect that simulates saw tooth up waves.
+ * Periodic haptic effect that simulates saw tooth up waves.
*
- * \sa SDL_HapticPeriodic
+ * \sa SDL_HapticPeriodic
*/
#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
/**
- * \brief Sawtoothdown wave effect supported.
+ * Sawtoothdown wave effect supported.
*
- * Periodic haptic effect that simulates saw tooth down waves.
+ * Periodic haptic effect that simulates saw tooth down waves.
*
- * \sa SDL_HapticPeriodic
+ * \sa SDL_HapticPeriodic
*/
#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
/**
- * \brief Ramp effect supported.
+ * Ramp effect supported.
*
- * Ramp haptic effect.
+ * Ramp haptic effect.
*
- * \sa SDL_HapticRamp
+ * \sa SDL_HapticRamp
*/
#define SDL_HAPTIC_RAMP (1u<<6)
/**
- * \brief Spring effect supported - uses axes position.
+ * Spring effect supported - uses axes position.
*
- * Condition haptic effect that simulates a spring. Effect is based on the
- * axes position.
+ * Condition haptic effect that simulates a spring. Effect is based on the
+ * axes position.
*
- * \sa SDL_HapticCondition
+ * \sa SDL_HapticCondition
*/
#define SDL_HAPTIC_SPRING (1u<<7)
/**
- * \brief Damper effect supported - uses axes velocity.
+ * Damper effect supported - uses axes velocity.
*
- * Condition haptic effect that simulates dampening. Effect is based on the
- * axes velocity.
+ * Condition haptic effect that simulates dampening. Effect is based on the
+ * axes velocity.
*
- * \sa SDL_HapticCondition
+ * \sa SDL_HapticCondition
*/
#define SDL_HAPTIC_DAMPER (1u<<8)
/**
- * \brief Inertia effect supported - uses axes acceleration.
+ * Inertia effect supported - uses axes acceleration.
*
- * Condition haptic effect that simulates inertia. Effect is based on the axes
- * acceleration.
+ * Condition haptic effect that simulates inertia. Effect is based on the axes
+ * acceleration.
*
- * \sa SDL_HapticCondition
+ * \sa SDL_HapticCondition
*/
#define SDL_HAPTIC_INERTIA (1u<<9)
/**
- * \brief Friction effect supported - uses axes movement.
+ * Friction effect supported - uses axes movement.
*
- * Condition haptic effect that simulates friction. Effect is based on the
- * axes movement.
+ * Condition haptic effect that simulates friction. Effect is based on the
+ * axes movement.
*
- * \sa SDL_HapticCondition
+ * \sa SDL_HapticCondition
*/
#define SDL_HAPTIC_FRICTION (1u<<10)
/**
- * \brief Custom effect is supported.
+ * Custom effect is supported.
*
- * User defined custom haptic effect.
+ * User defined custom haptic effect.
*/
#define SDL_HAPTIC_CUSTOM (1u<<11)
@@ -273,39 +273,39 @@ typedef struct _SDL_Haptic SDL_Haptic;
/* These last few are features the device has, not effects */
/**
- * \brief Device can set global gain.
+ * Device can set global gain.
*
- * Device supports setting the global gain.
+ * Device supports setting the global gain.
*
- * \sa SDL_HapticSetGain
+ * \sa SDL_HapticSetGain
*/
#define SDL_HAPTIC_GAIN (1u<<12)
/**
- * \brief Device can set autocenter.
+ * Device can set autocenter.
*
- * Device supports setting autocenter.
+ * Device supports setting autocenter.
*
- * \sa SDL_HapticSetAutocenter
+ * \sa SDL_HapticSetAutocenter
*/
#define SDL_HAPTIC_AUTOCENTER (1u<<13)
/**
- * \brief Device can be queried for effect status.
+ * Device can be queried for effect status.
*
- * Device supports querying effect status.
+ * Device supports querying effect status.
*
- * \sa SDL_HapticGetEffectStatus
+ * \sa SDL_HapticGetEffectStatus
*/
#define SDL_HAPTIC_STATUS (1u<<14)
/**
- * \brief Device can be paused.
+ * Device can be paused.
*
- * Devices supports being paused.
+ * Devices supports being paused.
*
- * \sa SDL_HapticPause
- * \sa SDL_HapticUnpause
+ * \sa SDL_HapticPause
+ * \sa SDL_HapticUnpause
*/
#define SDL_HAPTIC_PAUSE (1u<<15)
@@ -316,31 +316,33 @@ typedef struct _SDL_Haptic SDL_Haptic;
/* @{ */
/**
- * \brief Uses polar coordinates for the direction.
+ * Uses polar coordinates for the direction.
*
- * \sa SDL_HapticDirection
+ * \sa SDL_HapticDirection
*/
#define SDL_HAPTIC_POLAR 0
/**
- * \brief Uses cartesian coordinates for the direction.
+ * Uses cartesian coordinates for the direction.
*
- * \sa SDL_HapticDirection
+ * \sa SDL_HapticDirection
*/
#define SDL_HAPTIC_CARTESIAN 1
/**
- * \brief Uses spherical coordinates for the direction.
+ * Uses spherical coordinates for the direction.
*
- * \sa SDL_HapticDirection
+ * \sa SDL_HapticDirection
*/
#define SDL_HAPTIC_SPHERICAL 2
/**
- * \brief Use this value to play an effect on the steering wheel axis. This
- * provides better compatibility across platforms and devices as SDL will guess
- * the correct axis.
- * \sa SDL_HapticDirection
+ * Use this value to play an effect on the steering wheel axis.
+ *
+ * This provides better compatibility across platforms and devices as SDL will
+ * guess the correct axis.
+ *
+ * \sa SDL_HapticDirection
*/
#define SDL_HAPTIC_STEERING_AXIS 3
@@ -353,7 +355,7 @@ typedef struct _SDL_Haptic SDL_Haptic;
*/
/**
- * \brief Used to play a device an infinite number of times.
+ * Used to play a device an infinite number of times.
*
* \sa SDL_HapticRunEffect
*/
@@ -361,77 +363,82 @@ typedef struct _SDL_Haptic SDL_Haptic;
/**
- * \brief Structure that represents a haptic direction.
+ * Structure that represents a haptic direction.
*
- * This is the direction where the force comes from,
- * instead of the direction in which the force is exerted.
+ * This is the direction where the force comes from, instead of the direction
+ * in which the force is exerted.
*
- * Directions can be specified by:
- * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
- * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
- * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
+ * Directions can be specified by:
*
- * Cardinal directions of the haptic device are relative to the positioning
- * of the device. North is considered to be away from the user.
+ * - SDL_HAPTIC_POLAR : Specified by polar coordinates.
+ * - SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
+ * - SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
*
- * The following diagram represents the cardinal directions:
- * \verbatim
- .--.
- |__| .-------.
- |=.| |.-----.|
- |--| || ||
- | | |'-----'|
- |__|~')_____('
- [ COMPUTER ]
-
-
- North (0,-1)
- ^
- |
- |
- (-1,0) West <----[ HAPTIC ]----> East (1,0)
- |
- |
- v
- South (0,1)
-
-
- [ USER ]
- \|||/
- (o o)
- ---ooO-(_)-Ooo---
- \endverbatim
+ * Cardinal directions of the haptic device are relative to the positioning of
+ * the device. North is considered to be away from the user.
*
- * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
- * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses
- * the first \c dir parameter. The cardinal directions would be:
- * - North: 0 (0 degrees)
- * - East: 9000 (90 degrees)
- * - South: 18000 (180 degrees)
- * - West: 27000 (270 degrees)
+ * The following diagram represents the cardinal directions:
*
- * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
- * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses
- * the first three \c dir parameters. The cardinal directions would be:
- * - North: 0,-1, 0
- * - East: 1, 0, 0
- * - South: 0, 1, 0
- * - West: -1, 0, 0
- *
- * The Z axis represents the height of the effect if supported, otherwise
- * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you
- * can use any multiple you want, only the direction matters.
- *
- * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
- * The first two \c dir parameters are used. The \c dir parameters are as
- * follows (all values are in hundredths of degrees):
- * - Degrees from (1, 0) rotated towards (0, 1).
- * - Degrees towards (0, 0, 1) (device needs at least 3 axes).
+ * ```
+ * .--.
+ * |__| .-------.
+ * |=.| |.-----.|
+ * |--| || ||
+ * | | |'-----'|
+ * |__|~')_____('
+ * [ COMPUTER ]
*
*
- * Example of force coming from the south with all encodings (force coming
- * from the south means the user will have to pull the stick to counteract):
- * \code
+ * North (0,-1)
+ * ^
+ * |
+ * |
+ * (-1,0) West <----[ HAPTIC ]----> East (1,0)
+ * |
+ * |
+ * v
+ * South (0,1)
+ *
+ *
+ * [ USER ]
+ * \|||/
+ * (o o)
+ * ---ooO-(_)-Ooo---
+ * ```
+ *
+ * If type is SDL_HAPTIC_POLAR, direction is encoded by hundredths of a degree
+ * starting north and turning clockwise. SDL_HAPTIC_POLAR only uses the first
+ * `dir` parameter. The cardinal directions would be:
+ *
+ * - North: 0 (0 degrees)
+ * - East: 9000 (90 degrees)
+ * - South: 18000 (180 degrees)
+ * - West: 27000 (270 degrees)
+ *
+ * If type is SDL_HAPTIC_CARTESIAN, direction is encoded by three positions (X
+ * axis, Y axis and Z axis (with 3 axes)). SDL_HAPTIC_CARTESIAN uses the first
+ * three `dir` parameters. The cardinal directions would be:
+ *
+ * - North: 0,-1, 0
+ * - East: 1, 0, 0
+ * - South: 0, 1, 0
+ * - West: -1, 0, 0
+ *
+ * The Z axis represents the height of the effect if supported, otherwise it's
+ * unused. In cartesian encoding (1, 2) would be the same as (2, 4), you can
+ * use any multiple you want, only the direction matters.
+ *
+ * If type is SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. The
+ * first two `dir` parameters are used. The `dir` parameters are as follows
+ * (all values are in hundredths of degrees):
+ *
+ * - Degrees from (1, 0) rotated towards (0, 1).
+ * - Degrees towards (0, 0, 1) (device needs at least 3 axes).
+ *
+ * Example of force coming from the south with all encodings (force coming
+ * from the south means the user will have to pull the stick to counteract):
+ *
+ * ```c
* SDL_HapticDirection direction;
*
* // Cartesian directions
@@ -447,14 +454,14 @@ typedef struct _SDL_Haptic SDL_Haptic;
* // Spherical coordinates
* direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
* direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
- * \endcode
+ * ```
*
- * \sa SDL_HAPTIC_POLAR
- * \sa SDL_HAPTIC_CARTESIAN
- * \sa SDL_HAPTIC_SPHERICAL
- * \sa SDL_HAPTIC_STEERING_AXIS
- * \sa SDL_HapticEffect
- * \sa SDL_HapticNumAxes
+ * \sa SDL_HAPTIC_POLAR
+ * \sa SDL_HAPTIC_CARTESIAN
+ * \sa SDL_HAPTIC_SPHERICAL
+ * \sa SDL_HAPTIC_STEERING_AXIS
+ * \sa SDL_HapticEffect
+ * \sa SDL_HapticNumAxes
*/
typedef struct SDL_HapticDirection
{
@@ -464,20 +471,20 @@ typedef struct SDL_HapticDirection
/**
- * \brief A structure containing a template for a Constant effect.
+ * A structure containing a template for a Constant effect.
*
- * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
+ * This struct is exclusively for the SDL_HAPTIC_CONSTANT effect.
*
- * A constant effect applies a constant force in the specified direction
- * to the joystick.
+ * A constant effect applies a constant force in the specified direction to
+ * the joystick.
*
- * \sa SDL_HAPTIC_CONSTANT
- * \sa SDL_HapticEffect
+ * \sa SDL_HAPTIC_CONSTANT
+ * \sa SDL_HapticEffect
*/
typedef struct SDL_HapticConstant
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */
+ Uint16 type; /**< SDL_HAPTIC_CONSTANT */
SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
@@ -499,68 +506,71 @@ typedef struct SDL_HapticConstant
} SDL_HapticConstant;
/**
- * \brief A structure containing a template for a Periodic effect.
+ * A structure containing a template for a Periodic effect.
*
- * The struct handles the following effects:
- * - ::SDL_HAPTIC_SINE
- * - ::SDL_HAPTIC_LEFTRIGHT
- * - ::SDL_HAPTIC_TRIANGLE
- * - ::SDL_HAPTIC_SAWTOOTHUP
- * - ::SDL_HAPTIC_SAWTOOTHDOWN
+ * The struct handles the following effects:
*
- * A periodic effect consists in a wave-shaped effect that repeats itself
- * over time. The type determines the shape of the wave and the parameters
- * determine the dimensions of the wave.
+ * - SDL_HAPTIC_SINE
+ * - SDL_HAPTIC_SQUARE
+ * - SDL_HAPTIC_TRIANGLE
+ * - SDL_HAPTIC_SAWTOOTHUP
+ * - SDL_HAPTIC_SAWTOOTHDOWN
*
- * Phase is given by hundredth of a degree meaning that giving the phase a value
- * of 9000 will displace it 25% of its period. Here are sample values:
- * - 0: No phase displacement.
- * - 9000: Displaced 25% of its period.
- * - 18000: Displaced 50% of its period.
- * - 27000: Displaced 75% of its period.
- * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
+ * A periodic effect consists in a wave-shaped effect that repeats itself over
+ * time. The type determines the shape of the wave and the parameters
+ * determine the dimensions of the wave.
*
- * Examples:
- * \verbatim
- SDL_HAPTIC_SINE
- __ __ __ __
- / \ / \ / \ /
- / \__/ \__/ \__/
-
- SDL_HAPTIC_SQUARE
- __ __ __ __ __
- | | | | | | | | | |
- | |__| |__| |__| |__| |
-
- SDL_HAPTIC_TRIANGLE
- /\ /\ /\ /\ /\
- / \ / \ / \ / \ /
- / \/ \/ \/ \/
-
- SDL_HAPTIC_SAWTOOTHUP
- /| /| /| /| /| /| /|
- / | / | / | / | / | / | / |
- / |/ |/ |/ |/ |/ |/ |
-
- SDL_HAPTIC_SAWTOOTHDOWN
- \ |\ |\ |\ |\ |\ |\ |
- \ | \ | \ | \ | \ | \ | \ |
- \| \| \| \| \| \| \|
- \endverbatim
+ * Phase is given by hundredth of a degree meaning that giving the phase a
+ * value of 9000 will displace it 25% of its period. Here are sample values:
*
- * \sa SDL_HAPTIC_SINE
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HAPTIC_TRIANGLE
- * \sa SDL_HAPTIC_SAWTOOTHUP
- * \sa SDL_HAPTIC_SAWTOOTHDOWN
- * \sa SDL_HapticEffect
+ * - 0: No phase displacement.
+ * - 9000: Displaced 25% of its period.
+ * - 18000: Displaced 50% of its period.
+ * - 27000: Displaced 75% of its period.
+ * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
+ *
+ * Examples:
+ *
+ * ```
+ * SDL_HAPTIC_SINE
+ * __ __ __ __
+ * / \ / \ / \ /
+ * / \__/ \__/ \__/
+ *
+ * SDL_HAPTIC_SQUARE
+ * __ __ __ __ __
+ * | | | | | | | | | |
+ * | |__| |__| |__| |__| |
+ *
+ * SDL_HAPTIC_TRIANGLE
+ * /\ /\ /\ /\ /\
+ * / \ / \ / \ / \ /
+ * / \/ \/ \/ \/
+ *
+ * SDL_HAPTIC_SAWTOOTHUP
+ * /| /| /| /| /| /| /|
+ * / | / | / | / | / | / | / |
+ * / |/ |/ |/ |/ |/ |/ |
+ *
+ * SDL_HAPTIC_SAWTOOTHDOWN
+ * \ |\ |\ |\ |\ |\ |\ |
+ * \ | \ | \ | \ | \ | \ | \ |
+ * \| \| \| \| \| \| \|
+ * ```
+ *
+ * \sa SDL_HAPTIC_SINE
+ * \sa SDL_HAPTIC_LEFTRIGHT
+ * \sa SDL_HAPTIC_TRIANGLE
+ * \sa SDL_HAPTIC_SAWTOOTHUP
+ * \sa SDL_HAPTIC_SAWTOOTHDOWN
+ * \sa SDL_HapticEffect
*/
typedef struct SDL_HapticPeriodic
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
- ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
- ::SDL_HAPTIC_SAWTOOTHDOWN */
+ Uint16 type; /**< SDL_HAPTIC_SINE, SDL_HAPTIC_LEFTRIGHT,
+ SDL_HAPTIC_TRIANGLE, SDL_HAPTIC_SAWTOOTHUP or
+ SDL_HAPTIC_SAWTOOTHDOWN */
SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
@@ -585,35 +595,36 @@ typedef struct SDL_HapticPeriodic
} SDL_HapticPeriodic;
/**
- * \brief A structure containing a template for a Condition effect.
+ * A structure containing a template for a Condition effect.
*
- * The struct handles the following effects:
- * - ::SDL_HAPTIC_SPRING: Effect based on axes position.
- * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
- * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
- * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
+ * The struct handles the following effects:
*
- * Direction is handled by condition internals instead of a direction member.
- * The condition effect specific members have three parameters. The first
- * refers to the X axis, the second refers to the Y axis and the third
- * refers to the Z axis. The right terms refer to the positive side of the
- * axis and the left terms refer to the negative side of the axis. Please
- * refer to the ::SDL_HapticDirection diagram for which side is positive and
- * which is negative.
+ * - SDL_HAPTIC_SPRING: Effect based on axes position.
+ * - SDL_HAPTIC_DAMPER: Effect based on axes velocity.
+ * - SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
+ * - SDL_HAPTIC_FRICTION: Effect based on axes movement.
*
- * \sa SDL_HapticDirection
- * \sa SDL_HAPTIC_SPRING
- * \sa SDL_HAPTIC_DAMPER
- * \sa SDL_HAPTIC_INERTIA
- * \sa SDL_HAPTIC_FRICTION
- * \sa SDL_HapticEffect
+ * Direction is handled by condition internals instead of a direction member.
+ * The condition effect specific members have three parameters. The first
+ * refers to the X axis, the second refers to the Y axis and the third refers
+ * to the Z axis. The right terms refer to the positive side of the axis and
+ * the left terms refer to the negative side of the axis. Please refer to the
+ * SDL_HapticDirection diagram for which side is positive and which is
+ * negative.
+ *
+ * \sa SDL_HapticDirection
+ * \sa SDL_HAPTIC_SPRING
+ * \sa SDL_HAPTIC_DAMPER
+ * \sa SDL_HAPTIC_INERTIA
+ * \sa SDL_HAPTIC_FRICTION
+ * \sa SDL_HapticEffect
*/
typedef struct SDL_HapticCondition
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
- ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
- SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */
+ Uint16 type; /**< SDL_HAPTIC_SPRING, SDL_HAPTIC_DAMPER,
+ SDL_HAPTIC_INERTIA or SDL_HAPTIC_FRICTION */
+ SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
Uint32 length; /**< Duration of the effect. */
@@ -633,22 +644,22 @@ typedef struct SDL_HapticCondition
} SDL_HapticCondition;
/**
- * \brief A structure containing a template for a Ramp effect.
+ * A structure containing a template for a Ramp effect.
*
- * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
+ * This struct is exclusively for the SDL_HAPTIC_RAMP effect.
*
- * The ramp effect starts at start strength and ends at end strength.
- * It augments in linear fashion. If you use attack and fade with a ramp
- * the effects get added to the ramp effect making the effect become
- * quadratic instead of linear.
+ * The ramp effect starts at start strength and ends at end strength. It
+ * augments in linear fashion. If you use attack and fade with a ramp the
+ * effects get added to the ramp effect making the effect become quadratic
+ * instead of linear.
*
- * \sa SDL_HAPTIC_RAMP
- * \sa SDL_HapticEffect
+ * \sa SDL_HAPTIC_RAMP
+ * \sa SDL_HapticEffect
*/
typedef struct SDL_HapticRamp
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_RAMP */
+ Uint16 type; /**< SDL_HAPTIC_RAMP */
SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
@@ -671,9 +682,9 @@ typedef struct SDL_HapticRamp
} SDL_HapticRamp;
/**
- * \brief A structure containing a template for a Left/Right effect.
+ * A structure containing a template for a Left/Right effect.
*
- * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
+ * This struct is exclusively for the SDL_HAPTIC_LEFTRIGHT effect.
*
* The Left/Right effect is used to explicitly control the large and small
* motors, commonly found in modern game controllers. The small (right) motor
@@ -685,7 +696,7 @@ typedef struct SDL_HapticRamp
typedef struct SDL_HapticLeftRight
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */
+ Uint16 type; /**< SDL_HAPTIC_LEFTRIGHT */
/* Replay */
Uint32 length; /**< Duration of the effect in milliseconds. */
@@ -696,24 +707,24 @@ typedef struct SDL_HapticLeftRight
} SDL_HapticLeftRight;
/**
- * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
+ * A structure containing a template for the SDL_HAPTIC_CUSTOM effect.
*
- * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
+ * This struct is exclusively for the SDL_HAPTIC_CUSTOM effect.
*
- * A custom force feedback effect is much like a periodic effect, where the
- * application can define its exact shape. You will have to allocate the
- * data yourself. Data should consist of channels * samples Uint16 samples.
+ * A custom force feedback effect is much like a periodic effect, where the
+ * application can define its exact shape. You will have to allocate the data
+ * yourself. Data should consist of channels * samples Uint16 samples.
*
- * If channels is one, the effect is rotated using the defined direction.
- * Otherwise it uses the samples in data for the different axes.
+ * If channels is one, the effect is rotated using the defined direction.
+ * Otherwise it uses the samples in data for the different axes.
*
- * \sa SDL_HAPTIC_CUSTOM
- * \sa SDL_HapticEffect
+ * \sa SDL_HAPTIC_CUSTOM
+ * \sa SDL_HapticEffect
*/
typedef struct SDL_HapticCustom
{
/* Header */
- Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */
+ Uint16 type; /**< SDL_HAPTIC_CUSTOM */
SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
@@ -738,27 +749,28 @@ typedef struct SDL_HapticCustom
} SDL_HapticCustom;
/**
- * \brief The generic template for any haptic effect.
+ * The generic template for any haptic effect.
*
- * All values max at 32767 (0x7FFF). Signed values also can be negative.
- * Time values unless specified otherwise are in milliseconds.
+ * All values max at 32767 (0x7FFF). Signed values also can be negative. Time
+ * values unless specified otherwise are in milliseconds.
*
- * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
- * value. Neither delay, interval, attack_length nor fade_length support
- * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.
+ * You can also pass SDL_HAPTIC_INFINITY to length instead of a 0-32767 value.
+ * Neither delay, interval, attack_length nor fade_length support
+ * SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.
*
- * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
- * ::SDL_HAPTIC_INFINITY.
+ * Additionally, the SDL_HAPTIC_RAMP effect does not support a duration of
+ * SDL_HAPTIC_INFINITY.
*
- * Button triggers may not be supported on all devices, it is advised to not
- * use them if possible. Buttons start at index 1 instead of index 0 like
- * the joystick.
+ * Button triggers may not be supported on all devices, it is advised to not
+ * use them if possible. Buttons start at index 1 instead of index 0 like the
+ * joystick.
*
- * If both attack_length and fade_level are 0, the envelope is not used,
- * otherwise both values are used.
+ * If both attack_length and fade_level are 0, the envelope is not used,
+ * otherwise both values are used.
*
- * Common parts:
- * \code
+ * Common parts:
+ *
+ * ```c
* // Replay - All effects have this
* Uint32 length; // Duration of effect (ms).
* Uint16 delay; // Delay before starting effect.
@@ -772,39 +784,39 @@ typedef struct SDL_HapticCustom
* Uint16 attack_level; // Level at the start of the attack.
* Uint16 fade_length; // Duration of the fade out (ms).
* Uint16 fade_level; // Level at the end of the fade.
- * \endcode
+ * ```
*
+ * Here we have an example of a constant effect evolution in time:
*
- * Here we have an example of a constant effect evolution in time:
- * \verbatim
- Strength
- ^
- |
- | effect level --> _________________
- | / \
- | / \
- | / \
- | / \
- | attack_level --> | \
- | | | <--- fade_level
- |
- +--------------------------------------------------> Time
- [--] [---]
- attack_length fade_length
-
- [------------------][-----------------------]
- delay length
- \endverbatim
+ * ```
+ * Strength
+ * ^
+ * |
+ * | effect level --> _________________
+ * | / \
+ * | / \
+ * | / \
+ * | / \
+ * | attack_level --> | \
+ * | | | <--- fade_level
+ * |
+ * +--------------------------------------------------> Time
+ * [--] [---]
+ * attack_length fade_length
*
- * Note either the attack_level or the fade_level may be above the actual
- * effect level.
+ * [------------------][-----------------------]
+ * delay length
+ * ```
*
- * \sa SDL_HapticConstant
- * \sa SDL_HapticPeriodic
- * \sa SDL_HapticCondition
- * \sa SDL_HapticRamp
- * \sa SDL_HapticLeftRight
- * \sa SDL_HapticCustom
+ * Note either the attack_level or the fade_level may be above the actual
+ * effect level.
+ *
+ * \sa SDL_HapticConstant
+ * \sa SDL_HapticPeriodic
+ * \sa SDL_HapticCondition
+ * \sa SDL_HapticRamp
+ * \sa SDL_HapticLeftRight
+ * \sa SDL_HapticCustom
*/
typedef union SDL_HapticEffect
{
@@ -859,7 +871,7 @@ extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
* autocenter will be disabled. To modify these values use SDL_HapticSetGain()
* and SDL_HapticSetAutocenter().
*
- * \param device_index index of the device to open
+ * \param device_index index of the device to open.
* \returns the device identifier or NULL on failure; call SDL_GetError() for
* more information.
*
@@ -879,7 +891,7 @@ extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
/**
* Check if the haptic device at the designated index has been opened.
*
- * \param device_index the index of the device to query
+ * \param device_index the index of the device to query.
* \returns 1 if it has been opened, 0 if it hasn't or on failure; call
* SDL_GetError() for more information.
*
@@ -893,7 +905,7 @@ extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
/**
* Get the index of a haptic device.
*
- * \param haptic the SDL_Haptic device to query
+ * \param haptic the SDL_Haptic device to query.
* \returns the index of the specified haptic device or a negative error code
* on failure; call SDL_GetError() for more information.
*
@@ -931,7 +943,7 @@ extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
/**
* Query if a joystick has haptic features.
*
- * \param joystick the SDL_Joystick to test for haptic capabilities
+ * \param joystick the SDL_Joystick to test for haptic capabilities.
* \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a
* negative error code on failure; call SDL_GetError() for more
* information.
@@ -953,7 +965,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
* device will also get unallocated and you'll be unable to use force feedback
* on that device.
*
- * \param joystick the SDL_Joystick to create a haptic device from
+ * \param joystick the SDL_Joystick to create a haptic device from.
* \returns a valid haptic device identifier on success or NULL on failure;
* call SDL_GetError() for more information.
*
@@ -969,7 +981,7 @@ extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
/**
* Close a haptic device previously opened with SDL_HapticOpen().
*
- * \param haptic the SDL_Haptic device to close
+ * \param haptic the SDL_Haptic device to close.
*
* \since This function is available since SDL 2.0.0.
*
@@ -984,7 +996,7 @@ extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
* approximation. Always check to see if your created effect was actually
* created and do not rely solely on SDL_HapticNumEffects().
*
- * \param haptic the SDL_Haptic device to query
+ * \param haptic the SDL_Haptic device to query.
* \returns the number of effects the haptic device can store or a negative
* error code on failure; call SDL_GetError() for more information.
*
@@ -1000,7 +1012,7 @@ extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
*
* This is not supported on all platforms, but will always return a value.
*
- * \param haptic the SDL_Haptic device to query maximum playing effects
+ * \param haptic the SDL_Haptic device to query maximum playing effects.
* \returns the number of effects the haptic device can play at the same time
* or a negative error code on failure; call SDL_GetError() for more
* information.
@@ -1015,7 +1027,7 @@ extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
/**
* Get the haptic device's supported features in bitwise manner.
*
- * \param haptic the SDL_Haptic device to query
+ * \param haptic the SDL_Haptic device to query.
* \returns a list of supported haptic features in bitwise manner (OR'd), or 0
* on failure; call SDL_GetError() for more information.
*
@@ -1033,7 +1045,7 @@ extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
* The number of haptic axes might be useful if working with the
* SDL_HapticDirection effect.
*
- * \param haptic the SDL_Haptic device to query
+ * \param haptic the SDL_Haptic device to query.
* \returns the number of axes on success or a negative error code on failure;
* call SDL_GetError() for more information.
*
@@ -1044,8 +1056,8 @@ extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
/**
* Check to see if an effect is supported by a haptic device.
*
- * \param haptic the SDL_Haptic device to query
- * \param effect the desired effect to query
+ * \param haptic the SDL_Haptic device to query.
+ * \param effect the desired effect to query.
* \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
* negative error code on failure; call SDL_GetError() for more
* information.
@@ -1062,9 +1074,9 @@ extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
/**
* Create a new haptic effect on a specified device.
*
- * \param haptic an SDL_Haptic device to create the effect on
+ * \param haptic an SDL_Haptic device to create the effect on.
* \param effect an SDL_HapticEffect structure containing the properties of
- * the effect to create
+ * the effect to create.
* \returns the ID of the effect on success or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -1085,10 +1097,10 @@ extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
* start playing from the start. You also cannot change the type either when
* running SDL_HapticUpdateEffect().
*
- * \param haptic the SDL_Haptic device that has the effect
- * \param effect the identifier of the effect to update
+ * \param haptic the SDL_Haptic device that has the effect.
+ * \param effect the identifier of the effect to update.
* \param data an SDL_HapticEffect structure containing the new effect
- * properties to use
+ * properties to use.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1111,10 +1123,10 @@ extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
* set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY`
* instead.
*
- * \param haptic the SDL_Haptic device to run the effect on
- * \param effect the ID of the haptic effect to run
+ * \param haptic the SDL_Haptic device to run the effect on.
+ * \param effect the ID of the haptic effect to run.
* \param iterations the number of iterations to run the effect; use
- * `SDL_HAPTIC_INFINITY` to repeat forever
+ * `SDL_HAPTIC_INFINITY` to repeat forever.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1133,8 +1145,8 @@ extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
*
* *
*
- * \param haptic the SDL_Haptic device to stop the effect on
- * \param effect the ID of the haptic effect to stop
+ * \param haptic the SDL_Haptic device to stop the effect on.
+ * \param effect the ID of the haptic effect to stop.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1152,8 +1164,8 @@ extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
* This will stop the effect if it's running. Effects are automatically
* destroyed when the device is closed.
*
- * \param haptic the SDL_Haptic device to destroy the effect on
- * \param effect the ID of the haptic effect to destroy
+ * \param haptic the SDL_Haptic device to destroy the effect on.
+ * \param effect the ID of the haptic effect to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1167,8 +1179,8 @@ extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
*
* Device must support the SDL_HAPTIC_STATUS feature.
*
- * \param haptic the SDL_Haptic device to query for the effect status on
- * \param effect the ID of the haptic effect to query its status
+ * \param haptic the SDL_Haptic device to query for the effect status on.
+ * \param effect the ID of the haptic effect to query its status.
* \returns 0 if it isn't playing, 1 if it is playing, or a negative error
* code on failure; call SDL_GetError() for more information.
*
@@ -1190,8 +1202,9 @@ extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
* SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the
* maximum.
*
- * \param haptic the SDL_Haptic device to set the gain on
- * \param gain value to set the gain to, should be between 0 and 100 (0 - 100)
+ * \param haptic the SDL_Haptic device to set the gain on.
+ * \param gain value to set the gain to, should be between 0 and 100 (0 -
+ * 100).
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1209,8 +1222,8 @@ extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
*
* Device must support the SDL_HAPTIC_AUTOCENTER feature.
*
- * \param haptic the SDL_Haptic device to set autocentering on
- * \param autocenter value to set autocenter to (0-100)
+ * \param haptic the SDL_Haptic device to set autocentering on.
+ * \param autocenter value to set autocenter to (0-100).
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1230,7 +1243,7 @@ extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
* Do not modify the effects nor add new ones while the device is paused. That
* can cause all sorts of weird errors.
*
- * \param haptic the SDL_Haptic device to pause
+ * \param haptic the SDL_Haptic device to pause.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1245,7 +1258,7 @@ extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
*
* Call to unpause after SDL_HapticPause().
*
- * \param haptic the SDL_Haptic device to unpause
+ * \param haptic the SDL_Haptic device to unpause.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1258,7 +1271,7 @@ extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
/**
* Stop all the currently playing effects on a haptic device.
*
- * \param haptic the SDL_Haptic device to stop
+ * \param haptic the SDL_Haptic device to stop.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1269,7 +1282,7 @@ extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
/**
* Check whether rumble is supported on a haptic device.
*
- * \param haptic haptic device to check for rumble support
+ * \param haptic haptic device to check for rumble support.
* \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
* negative error code on failure; call SDL_GetError() for more
* information.
@@ -1285,7 +1298,7 @@ extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
/**
* Initialize a haptic device for simple rumble playback.
*
- * \param haptic the haptic device to initialize for simple rumble playback
+ * \param haptic the haptic device to initialize for simple rumble playback.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1301,9 +1314,9 @@ extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
/**
* Run a simple rumble effect on a haptic device.
*
- * \param haptic the haptic device to play the rumble effect on
- * \param strength strength of the rumble to play as a 0-1 float value
- * \param length length of the rumble to play in milliseconds
+ * \param haptic the haptic device to play the rumble effect on.
+ * \param strength strength of the rumble to play as a 0-1 float value.
+ * \param length length of the rumble to play in milliseconds.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1318,7 +1331,7 @@ extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float stre
/**
* Stop the simple rumble on a haptic device.
*
- * \param haptic the haptic device to stop the rumble effect on
+ * \param haptic the haptic device to stop the rumble effect on.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hidapi.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hidapi.h
index 057510035..b14442a6c 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hidapi.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hidapi.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,44 +19,35 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: HIDAPI */
+
/**
- * \file SDL_hidapi.h
+ * # CategoryHIDAPI
*
- * Header file for SDL HIDAPI functions.
+ * Header file for SDL HIDAPI functions.
*
- * This is an adaptation of the original HIDAPI interface by Alan Ott,
- * and includes source code licensed under the following BSD license:
+ * This is an adaptation of the original HIDAPI interface by Alan Ott, and
+ * includes source code licensed under the following license:
*
- Copyright (c) 2010, Alan Ott, Signal 11 Software
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Signal 11 Software nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
+ * ```
+ * HIDAPI - Multi-Platform library for
+ * communication with HID devices.
+ *
+ * Copyright 2009, Alan Ott, Signal 11 Software.
+ * All Rights Reserved.
+ *
+ * This software may be used by anyone for any reason so
+ * long as the copyright notice in the source files
+ * remains intact.
+ * ```
+ *
+ * (Note that this license is the same as item three of SDL's zlib license, so
+ * it adds no new requirements on the user.)
*
* If you would like a version of SDL without this code, you can build SDL
- * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example
- * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework.
+ * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for
+ * example on iOS or tvOS to avoid a dependency on the CoreBluetooth
+ * framework.
*/
#ifndef SDL_hidapi_h_
@@ -71,14 +62,15 @@ extern "C" {
#endif
/**
- * \brief A handle representing an open HID device
+ * A handle representing an open HID device
*/
struct SDL_hid_device_;
typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */
/** hidapi info structure */
+
/**
- * \brief Information about a connected HID device
+ * Information about a connected HID device
*/
typedef struct SDL_hid_device_info
{
@@ -234,13 +226,13 @@ extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id,
* The path name be determined by calling SDL_hid_enumerate(), or a
* platform-specific path name can be used (eg: /dev/hidraw0 on Linux).
*
- * \param path The path name of the device to open
+ * \param path The path name of the device to open.
* \returns a pointer to a SDL_hid_device object on success or NULL on
* failure.
*
* \since This function is available since SDL 2.0.18.
*/
-extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */);
+extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive);
/**
* Write an Output report to a HID device.
@@ -434,7 +426,7 @@ extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int
/**
* Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers
*
- * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan
+ * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan.
*
* \since This function is available since SDL 2.0.18.
*/
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hints.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hints.h
index 00beef51e..6713d01fe 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hints.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_hints.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,20 +20,20 @@
*/
/**
- * \file SDL_hints.h
+ * # CategoryHints
*
- * Official documentation for SDL configuration variables
+ * Official documentation for SDL configuration variables
*
- * This file contains functions to set and get configuration hints,
- * as well as listing each of them alphabetically.
+ * This file contains functions to set and get configuration hints, as well as
+ * listing each of them alphabetically.
*
- * The convention for naming hints is SDL_HINT_X, where "SDL_X" is
- * the environment variable that can be used to override the default.
+ * The convention for naming hints is SDL_HINT_X, where "SDL_X" is the
+ * environment variable that can be used to override the default.
*
- * In general these hints are just that - they may or may not be
- * supported or applicable on any given platform, but they provide
- * a way for an application or user to give the library a hint as
- * to how they would like the library to work.
+ * In general these hints are just that - they may or may not be supported or
+ * applicable on any given platform, but they provide a way for an application
+ * or user to give the library a hint as to how they would like the library to
+ * work.
*/
#ifndef SDL_hints_h_
@@ -48,110 +48,132 @@ extern "C" {
#endif
/**
- * \brief A variable controlling whether the Android / iOS built-in
- * accelerometer should be listed as a joystick device.
+ * A variable controlling whether the Android / iOS built-in accelerometer
+ * should be listed as a joystick device.
*
- * This variable can be set to the following values:
- * "0" - The accelerometer is not listed as a joystick
- * "1" - The accelerometer is available as a 3 axis joystick (the default).
+ * This variable can be set to the following values:
+ *
+ * - "0": The accelerometer is not listed as a joystick
+ * - "1": The accelerometer is available as a 3 axis joystick (the default).
*/
#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
/**
- * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed.
+ * Specify the behavior of Alt+Tab while the keyboard is grabbed.
*
- * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed
- * and your window is full-screen. This prevents the user from getting stuck in
- * your application if you've enabled keyboard grab.
+ * By default, SDL emulates Alt+Tab functionality while the keyboard is
+ * grabbed and your window is full-screen. This prevents the user from getting
+ * stuck in your application if you've enabled keyboard grab.
*
* The variable can be set to the following values:
- * "0" - SDL will not handle Alt+Tab. Your application is responsible
- for handling Alt+Tab while the keyboard is grabbed.
- * "1" - SDL will minimize your window when Alt+Tab is pressed (default)
-*/
+ *
+ * - "0": SDL will not handle Alt+Tab. Your application is responsible for
+ * handling Alt+Tab while the keyboard is grabbed.
+ * - "1": SDL will minimize your window when Alt+Tab is pressed (default)
+ */
#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
/**
- * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
- * This is a debugging aid for developers and not expected to be used by end users. The default is "1"
+ * If set to "0" then never set the top most bit on a SDL Window, even if the
+ * video mode expects it.
*
- * This variable can be set to the following values:
- * "0" - don't allow topmost
- * "1" - allow topmost
+ * This is a debugging aid for developers and not expected to be used by end
+ * users. The default is "1"
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": don't allow topmost
+ * - "1": allow topmost
*/
#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
/**
- * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
+ * Android APK expansion main file version.
*
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
+ * Should be a string number like "1", "2" etc.
+ *
+ * Must be set together with
+ * SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
*
* If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
+ * after a given relative path was not found in the internal storage and
+ * assets.
*
- * By default this hint is not set and the APK expansion files are not searched.
+ * By default this hint is not set and the APK expansion files are not
+ * searched.
*/
#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
/**
- * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
+ * Android APK expansion patch file version.
+ *
+ * Should be a string number like "1", "2" etc.
*
* Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
*
* If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
+ * after a given relative path was not found in the internal storage and
+ * assets.
*
- * By default this hint is not set and the APK expansion files are not searched.
+ * By default this hint is not set and the APK expansion files are not
+ * searched.
*/
#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
/**
- * \brief A variable to control whether the event loop will block itself when the app is paused.
+ * A variable to control whether the event loop will block itself when the app
+ * is paused.
*
* The variable can be set to the following values:
- * "0" - Non blocking.
- * "1" - Blocking. (default)
+ *
+ * - "0": Non blocking.
+ * - "1": Blocking. (default)
*
* The value should be set before SDL is initialized.
*/
#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
/**
- * \brief A variable to control whether SDL will pause audio in background
- * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
+ * A variable to control whether SDL will pause audio in background (Requires
+ * SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
*
* The variable can be set to the following values:
- * "0" - Non paused.
- * "1" - Paused. (default)
+ *
+ * - "0": Non paused.
+ * - "1": Paused. (default)
*
* The value should be set before SDL is initialized.
*/
#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"
/**
- * \brief A variable to control whether we trap the Android back button to handle it manually.
- * This is necessary for the right mouse button to work on some Android devices, or
- * to be able to trap the back button for use in your code reliably. If set to true,
- * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of
- * SDL_SCANCODE_AC_BACK.
+ * A variable to control whether we trap the Android back button to handle it
+ * manually.
+ *
+ * This is necessary for the right mouse button to work on some Android
+ * devices, or to be able to trap the back button for use in your code
+ * reliably. If set to true, the back button will show up as an SDL_KEYDOWN /
+ * SDL_KEYUP pair with a keycode of SDL_SCANCODE_AC_BACK.
*
* The variable can be set to the following values:
- * "0" - Back button will be handled as usual for system. (default)
- * "1" - Back button will be trapped, allowing you to handle the key press
- * manually. (This will also let right mouse click work on systems
- * where the right mouse button functions as back.)
*
- * The value of this hint is used at runtime, so it can be changed at any time.
+ * - "0": Back button will be handled as usual for system. (default)
+ * - "1": Back button will be trapped, allowing you to handle the key press
+ * manually. (This will also let right mouse click work on systems where the
+ * right mouse button functions as back.)
+ *
+ * The value of this hint is used at runtime, so it can be changed at any
+ * time.
*/
#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
/**
- * \brief Specify an application name.
+ * Specify an application name.
*
* This hint lets you specify the application name sent to the OS when
* required. For example, this will often appear in volume control applets for
* audio streams, and in lists of applications which are inhibiting the
- * screensaver. You should use a string that describes your program ("My Game
+ * screensaver. You should use a string that describes your program ("My Game
* 2: The Revenge")
*
* Setting this to "" or leaving it unset will have SDL use a reasonable
@@ -166,48 +188,51 @@ extern "C" {
#define SDL_HINT_APP_NAME "SDL_APP_NAME"
/**
- * \brief A variable controlling whether controllers used with the Apple TV
- * generate UI events.
+ * A variable controlling whether controllers used with the Apple TV generate
+ * UI events.
*
* When UI events are generated by controller input, the app will be
- * backgrounded when the Apple TV remote's menu button is pressed, and when the
- * pause or B buttons on gamepads are pressed.
+ * backgrounded when the Apple TV remote's menu button is pressed, and when
+ * the pause or B buttons on gamepads are pressed.
*
* More information about properly making use of controllers for the Apple TV
* can be found here:
* https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
*
- * This variable can be set to the following values:
- * "0" - Controller input does not generate UI events (the default).
- * "1" - Controller input generates UI events.
+ * This variable can be set to the following values:
+ *
+ * - "0": Controller input does not generate UI events (the default).
+ * - "1": Controller input generates UI events.
*/
#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
/**
- * \brief A variable controlling whether the Apple TV remote's joystick axes
- * will automatically match the rotation of the remote.
+ * A variable controlling whether the Apple TV remote's joystick axes will
+ * automatically match the rotation of the remote.
*
- * This variable can be set to the following values:
- * "0" - Remote orientation does not affect joystick axes (the default).
- * "1" - Joystick axes are based on the orientation of the remote.
+ * This variable can be set to the following values:
+ *
+ * - "0": Remote orientation does not affect joystick axes (the default).
+ * - "1": Joystick axes are based on the orientation of the remote.
*/
#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
/**
- * \brief A variable controlling the audio category on iOS and Mac OS X
+ * A variable controlling the audio category on iOS and Mac OS X
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
- * "playback" - Use the AVAudioSessionCategoryPlayback category
+ * - "ambient": Use the AVAudioSessionCategoryAmbient audio category, will be
+ * muted by the phone mute switch (default)
+ * - "playback": Use the AVAudioSessionCategoryPlayback category
*
- * For more information, see Apple's documentation:
- * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
+ * For more information, see Apple's documentation:
+ * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
*/
#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY"
/**
- * \brief Specify an application name for an audio device.
+ * Specify an application name for an audio device.
*
* Some audio backends (such as PulseAudio) allow you to describe your audio
* stream. Among other things, this description might show up in a system
@@ -228,7 +253,7 @@ extern "C" {
#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME"
/**
- * \brief Specify an application name for an audio device.
+ * Specify an application name for an audio device.
*
* Some audio backends (such as PulseAudio) allow you to describe your audio
* stream. Among other things, this description might show up in a system
@@ -249,11 +274,11 @@ extern "C" {
#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME"
/**
- * \brief Specify an application role for an audio device.
+ * Specify an application role for an audio device.
*
* Some audio backends (such as Pipewire) allow you to describe the role of
- * your audio stream. Among other things, this description might show up in
- * a system control panel or software for displaying and manipulating media
+ * your audio stream. Among other things, this description might show up in a
+ * system control panel or software for displaying and manipulating media
* playback/capture graphs.
*
* This hints lets you transmit that information to the OS. The contents of
@@ -269,1247 +294,1767 @@ extern "C" {
#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE"
/**
- * \brief A variable controlling speed/quality tradeoff of audio resampling.
+ * A variable controlling speed/quality tradeoff of audio resampling.
*
- * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
- * to handle audio resampling. There are different resampling modes available
- * that produce different levels of quality, using more CPU.
+ * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
+ * to handle audio resampling. There are different resampling modes available
+ * that produce different levels of quality, using more CPU.
*
- * If this hint isn't specified to a valid setting, or libsamplerate isn't
- * available, SDL will use the default, internal resampling algorithm.
+ * If this hint isn't specified to a valid setting, or libsamplerate isn't
+ * available, SDL will use the default, internal resampling algorithm.
*
- * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available.
+ * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is
+ * available.
*
- * This hint is currently only checked at audio subsystem initialization.
+ * This hint is currently only checked at audio subsystem initialization.
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
- * "1" or "fast" - Use fast, slightly higher quality resampling, if available
- * "2" or "medium" - Use medium quality resampling, if available
- * "3" or "best" - Use high quality resampling, if available
+ * - "0" or "default": Use SDL's internal resampling (Default when not set -
+ * low quality, fast)
+ * - "1" or "fast": Use fast, slightly higher quality resampling, if available
+ * - "2" or "medium": Use medium quality resampling, if available
+ * - "3" or "best": Use high quality resampling, if available
*/
#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
/**
- * \brief A variable controlling whether SDL updates joystick state when getting input events
+ * A variable controlling whether SDL updates joystick state when getting
+ * input events
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "0" - You'll call SDL_JoystickUpdate() manually
- * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
+ * - "0": You'll call SDL_JoystickUpdate() manually
+ * - "1": SDL will automatically call SDL_JoystickUpdate() (default)
*
- * This hint can be toggled on and off at runtime.
+ * This hint can be toggled on and off at runtime.
*/
#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
/**
- * \brief A variable controlling whether SDL updates sensor state when getting input events
+ * A variable controlling whether SDL updates sensor state when getting input
+ * events
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "0" - You'll call SDL_SensorUpdate() manually
- * "1" - SDL will automatically call SDL_SensorUpdate() (default)
+ * - "0": You'll call SDL_SensorUpdate() manually
+ * - "1": SDL will automatically call SDL_SensorUpdate() (default)
*
- * This hint can be toggled on and off at runtime.
+ * This hint can be toggled on and off at runtime.
*/
#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
/**
- * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
+ * Prevent SDL from using version 4 of the bitmap header when saving BMPs.
*
- * The bitmap header version 4 is required for proper alpha channel support and
- * SDL will use it when required. Should this not be desired, this hint can
- * force the use of the 40 byte header version which is supported everywhere.
+ * The bitmap header version 4 is required for proper alpha channel support
+ * and SDL will use it when required. Should this not be desired, this hint
+ * can force the use of the 40 byte header version which is supported
+ * everywhere.
*
* The variable can be set to the following values:
- * "0" - Surfaces with a colorkey or an alpha channel are saved to a
- * 32-bit BMP file with an alpha mask. SDL will use the bitmap
- * header version 4 and set the alpha mask accordingly.
- * "1" - Surfaces with a colorkey or an alpha channel are saved to a
- * 32-bit BMP file without an alpha mask. The alpha channel data
- * will be in the file, but applications are going to ignore it.
+ *
+ * - "0": Surfaces with a colorkey or an alpha channel are saved to a 32-bit
+ * BMP file with an alpha mask. SDL will use the bitmap header version 4 and
+ * set the alpha mask accordingly.
+ * - "1": Surfaces with a colorkey or an alpha channel are saved to a 32-bit
+ * BMP file without an alpha mask. The alpha channel data will be in the
+ * file, but applications are going to ignore it.
*
* The default value is "0".
*/
#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
/**
- * \brief Override for SDL_GetDisplayUsableBounds()
+ * Override for SDL_GetDisplayUsableBounds()
*
- * If set, this hint will override the expected results for
- * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
- * to do this, but this allows an embedded system to request that some of the
- * screen be reserved for other uses when paired with a well-behaved
- * application.
+ * If set, this hint will override the expected results for
+ * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
+ * to do this, but this allows an embedded system to request that some of the
+ * screen be reserved for other uses when paired with a well-behaved
+ * application.
*
- * The contents of this hint must be 4 comma-separated integers, the first
- * is the bounds x, then y, width and height, in that order.
+ * The contents of this hint must be 4 comma-separated integers, the first is
+ * the bounds x, then y, width and height, in that order.
*/
#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
/**
- * \brief Disable giving back control to the browser automatically
- * when running with asyncify
+ * Disable giving back control to the browser automatically when running with
+ * asyncify
*
- * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
- * such as refreshing the screen or polling events.
+ * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations such as
+ * refreshing the screen or polling events.
*
* This hint only applies to the emscripten platform
*
* The variable can be set to the following values:
- * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
- * "1" - Enable emscripten_sleep calls (the default)
+ *
+ * - "0": Disable emscripten_sleep calls (if you give back browser control
+ * manually or use asyncify for other purposes)
+ * - "1": Enable emscripten_sleep calls (the default)
*/
#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
/**
- * \brief override the binding element for keyboard inputs for Emscripten builds
+ * override the binding element for keyboard inputs for Emscripten builds
*
- * This hint only applies to the emscripten platform
+ * This hint only applies to the emscripten platform.
*
- * The variable can be one of
- * "#window" - The javascript window object (this is the default)
- * "#document" - The javascript document object
- * "#screen" - the javascript window.screen object
- * "#canvas" - the WebGL canvas element
- * any other string without a leading # sign applies to the element on the page with that ID.
+ * The variable can be one of:
+ *
+ * - "#window": the javascript window object (this is the default)
+ * - "#document": the javascript document object
+ * - "#screen": the javascript window.screen object
+ * - "#canvas": the WebGL canvas element
+ *
+ * Any other string without a leading # sign applies to the element on the
+ * page with that ID.
*/
#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
/**
- * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active
+ * A variable that controls whether the on-screen keyboard should be shown
+ * when text input is active
*
- * The variable can be set to the following values:
- * "0" - Do not show the on-screen keyboard
- * "1" - Show the on-screen keyboard
+ * The variable can be set to the following values:
*
- * The default value is "1". This hint must be set before text input is activated.
+ * - "0": Do not show the on-screen keyboard
+ * - "1": Show the on-screen keyboard
+ *
+ * The default value is "1". This hint must be set before text input is
+ * activated.
*/
#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD"
/**
- * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
+ * A variable controlling verbosity of the logging of SDL events pushed onto
+ * the internal queue.
*
- * The variable can be set to the following values:
- * "0" - Do not scan for Steam Controllers
- * "1" - Scan for Steam Controllers (the default)
+ * This variable can be set to the following values, from least to most
+ * verbose:
*
- * The default value is "1". This hint must be set before initializing the joystick subsystem.
- */
-#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
-
-/**
- * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue.
+ * - "0": Don't log any events (default)
+ * - "1": Log most events (other than the really spammy ones).
+ * - "2": Include mouse and finger motion events.
+ * - "3": Include SDL_SysWMEvent events.
*
- * This variable can be set to the following values, from least to most verbose:
+ * This is generally meant to be used to debug SDL itself, but can be useful
+ * for application developers that need better visibility into what is going
+ * on in the event queue. Logged events are sent through SDL_Log(), which
+ * means by default they appear on stdout on most platforms or maybe
+ * OutputDebugString() on Windows, and can be funneled by the app with
+ * SDL_LogSetOutputFunction(), etc.
*
- * "0" - Don't log any events (default)
- * "1" - Log most events (other than the really spammy ones).
- * "2" - Include mouse and finger motion events.
- * "3" - Include SDL_SysWMEvent events.
- *
- * This is generally meant to be used to debug SDL itself, but can be useful
- * for application developers that need better visibility into what is going
- * on in the event queue. Logged events are sent through SDL_Log(), which
- * means by default they appear on stdout on most platforms or maybe
- * OutputDebugString() on Windows, and can be funneled by the app with
- * SDL_LogSetOutputFunction(), etc.
- *
- * This hint can be toggled on and off at runtime, if you only need to log
- * events for a small subset of program execution.
+ * This hint can be toggled on and off at runtime, if you only need to log
+ * events for a small subset of program execution.
*/
#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
/**
- * \brief A variable controlling whether raising the window should be done more forcefully
+ * A variable controlling whether raising the window should be done more
+ * forcefully
*
- * This variable can be set to the following values:
- * "0" - No forcing (the default)
- * "1" - Extra level of forcing
+ * This variable can be set to the following values:
*
- * At present, this is only an issue under MS Windows, which makes it nearly impossible to
- * programmatically move a window to the foreground, for "security" reasons. See
- * http://stackoverflow.com/a/34414846 for a discussion.
+ * - "0": No forcing (the default)
+ * - "1": Extra level of forcing
+ *
+ * At present, this is only an issue under MS Windows, which makes it nearly
+ * impossible to programmatically move a window to the foreground, for
+ * "security" reasons. See http://stackoverflow.com/a/34414846 for a
+ * discussion.
*/
#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW"
/**
- * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
+ * A variable controlling how 3D acceleration is used to accelerate the SDL
+ * screen surface.
*
- * SDL can try to accelerate the SDL screen surface by using streaming
- * textures with a 3D rendering engine. This variable controls whether and
- * how this is done.
+ * SDL can try to accelerate the SDL screen surface by using streaming
+ * textures with a 3D rendering engine. This variable controls whether and how
+ * this is done.
*
- * This variable can be set to the following values:
- * "0" - Disable 3D acceleration
- * "1" - Enable 3D acceleration, using the default renderer.
- * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
+ * This variable can be set to the following values:
*
- * By default SDL tries to make a best guess for each platform whether
- * to use acceleration or not.
+ * - "0": Disable 3D acceleration
+ * - "1": Enable 3D acceleration, using the default renderer.
+ * - "X": Enable 3D acceleration, using X where X is one of the valid
+ * rendering drivers. (e.g. "direct3d", "opengl", etc.)
+ *
+ * By default SDL tries to make a best guess for each platform whether to use
+ * acceleration or not.
*/
#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
/**
- * \brief A variable that lets you manually hint extra gamecontroller db entries.
+ * A variable that lets you manually hint extra gamecontroller db entries.
*
- * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
+ * The variable should be newline delimited rows of gamecontroller config
+ * data, see SDL_gamecontroller.h
*
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) You
+ * can update mappings after the system is initialized with
+ * SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
*/
#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
/**
- * \brief A variable that lets you provide a file with extra gamecontroller db entries.
+ * A variable that lets you provide a file with extra gamecontroller db
+ * entries.
*
- * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
+ * The file should contain lines of gamecontroller config data, see
+ * SDL_gamecontroller.h
*
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) You
+ * can update mappings after the system is initialized with
+ * SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
*/
#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
/**
- * \brief A variable that overrides the automatic controller type detection
+ * A variable that overrides the automatic controller type detection
*
- * The variable should be comma separated entries, in the form: VID/PID=type
+ * The variable should be comma separated entries, in the form: VID/PID=type
*
- * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
+ * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
*
- * The type should be one of:
- * Xbox360
- * XboxOne
- * PS3
- * PS4
- * PS5
- * SwitchPro
+ * The type should be one of: Xbox360 XboxOne PS3 PS4 PS5 SwitchPro
*
- * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
+ * This hint affects what driver is used, and must be set before calling
+ * SDL_Init(SDL_INIT_GAMECONTROLLER)
*/
#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
/**
- * \brief A variable containing a list of devices to skip when scanning for game controllers.
+ * A variable containing a list of devices to skip when scanning for game
+ * controllers.
*
- * The format of the string is a comma separated list of USB VID/PID pairs
- * in hexadecimal form, e.g.
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
*
- * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
- * The variable can also take the form of @file, in which case the named
- * file will be loaded and interpreted as the value of the variable.
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
/**
- * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
+ * If set, all devices will be skipped when scanning for game controllers
+ * except for the ones listed in this variable.
*
- * The format of the string is a comma separated list of USB VID/PID pairs
- * in hexadecimal form, e.g.
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
*
- * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
- * The variable can also take the form of @file, in which case the named
- * file will be loaded and interpreted as the value of the variable.
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
/**
- * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
+ * If set, game controller face buttons report their values according to their
+ * labels instead of their positional layout.
*
- * For example, on Nintendo Switch controllers, normally you'd get:
+ * For example, on Nintendo Switch controllers, normally you'd get:
*
+ * ```
* (Y)
* (X) (B)
* (A)
+ * ```
*
- * but if this hint is set, you'll get:
+ * but if this hint is set, you'll get:
*
+ * ```
* (X)
* (Y) (A)
* (B)
+ * ```
*
- * The variable can be set to the following values:
- * "0" - Report the face buttons by position, as though they were on an Xbox controller.
- * "1" - Report the face buttons by label instead of position
+ * The variable can be set to the following values:
*
- * The default value is "1". This hint may be set at any time.
+ * - "0": Report the face buttons by position, as though they were on an Xbox
+ * controller.
+ * - "1": Report the face buttons by label instead of position
+ *
+ * The default value is "1". This hint may be set at any time.
*/
#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
/**
- * \brief A variable controlling whether grabbing input grabs the keyboard
+ * A variable controlling whether grabbing input grabs the keyboard
*
- * This variable can be set to the following values:
- * "0" - Grab will affect only the mouse
- * "1" - Grab will affect mouse and keyboard
+ * This variable can be set to the following values:
*
- * By default SDL will not grab the keyboard so system shortcuts still work.
+ * - "0": Grab will affect only the mouse
+ * - "1": Grab will affect mouse and keyboard
+ *
+ * By default SDL will not grab the keyboard so system shortcuts still work.
*/
#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
/**
- * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate()
+ * A variable containing a list of devices to ignore in SDL_hid_enumerate()
*
- * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might
- * have the string "0x2563/0x0523,0x28de/0x0000"
+ * For example, to ignore the Shanwan DS3 controller and any Valve controller,
+ * you might have the string "0x2563/0x0523,0x28de/0x0000"
*/
#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES"
/**
- * \brief A variable controlling whether the idle timer is disabled on iOS.
+ * A variable controlling whether the idle timer is disabled on iOS.
*
- * When an iOS app does not receive touches for some time, the screen is
- * dimmed automatically. For games where the accelerometer is the only input
- * this is problematic. This functionality can be disabled by setting this
- * hint.
+ * When an iOS app does not receive touches for some time, the screen is
+ * dimmed automatically. For games where the accelerometer is the only input
+ * this is problematic. This functionality can be disabled by setting this
+ * hint.
*
- * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
- * accomplish the same thing on iOS. They should be preferred over this hint.
+ * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
+ * accomplish the same thing on iOS. They should be preferred over this hint.
*
- * This variable can be set to the following values:
- * "0" - Enable idle timer
- * "1" - Disable idle timer
+ * This variable can be set to the following values:
+ *
+ * - "0": Enable idle timer
+ * - "1": Disable idle timer
*/
#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
/**
- * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
+ * A variable to control whether certain IMEs should handle text editing
+ * internally instead of sending SDL_TEXTEDITING events.
*
* The variable can be set to the following values:
- * "0" - SDL_TEXTEDITING events are sent, and it is the application's
- * responsibility to render the text from these events and
- * differentiate it somehow from committed text. (default)
- * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
- * and text that is being composed will be rendered in its own UI.
+ *
+ * - "0": SDL_TEXTEDITING events are sent, and it is the application's
+ * responsibility to render the text from these events and differentiate it
+ * somehow from committed text. (default)
+ * - "1": If supported by the IME then SDL_TEXTEDITING events are not sent,
+ * and text that is being composed will be rendered in its own UI.
*/
#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
/**
- * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them.
+ * A variable to control whether certain IMEs should show native UI components
+ * (such as the Candidate List) instead of suppressing them.
*
* The variable can be set to the following values:
- * "0" - Native UI components are not display. (default)
- * "1" - Native UI components are displayed.
+ *
+ * - "0": Native UI components are not display. (default)
+ * - "1": Native UI components are displayed.
*/
#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI"
/**
- * \brief A variable to control if extended IME text support is enabled.
- * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise.
- * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated.
+ * A variable to control if extended IME text support is enabled.
+ *
+ * If enabled then SDL_TextEditingExtEvent will be issued if the text would be
+ * truncated otherwise. Additionally SDL_TextInputEvent will be dispatched
+ * multiple times so that it is not truncated.
*
* The variable can be set to the following values:
- * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default)
- * "1" - Modern behavior.
+ *
+ * - "0": Legacy behavior. Text can be truncated, no heap allocations.
+ * (default)
+ * - "1": Modern behavior.
*/
#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT"
/**
- * \brief A variable controlling whether the home indicator bar on iPhone X
- * should be hidden.
+ * A variable controlling whether the home indicator bar on iPhone X should be
+ * hidden.
*
- * This variable can be set to the following values:
- * "0" - The indicator bar is not hidden (default for windowed applications)
- * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
- * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
+ * This variable can be set to the following values:
+ *
+ * - "0": The indicator bar is not hidden (default for windowed applications)
+ * - "1": The indicator bar is hidden and is shown when the screen is touched
+ * (useful for movie playback applications)
+ * - "2": The indicator bar is dim and the first swipe makes it visible and
+ * the second swipe performs the "home" action (default for fullscreen
+ * applications)
*/
#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
/**
- * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
+ * A variable that lets you enable joystick (and gamecontroller) events even
+ * when your app is in the background.
*
- * The variable can be set to the following values:
- * "0" - Disable joystick & gamecontroller input events when the
- * application is in the background.
- * "1" - Enable joystick & gamecontroller input events when the
- * application is in the background.
+ * The variable can be set to the following values:
*
- * The default value is "0". This hint may be set at any time.
+ * - "0": Disable joystick & gamecontroller input events when the application
+ * is in the background.
+ * - "1": Enable joystick & gamecontroller input events when the application
+ * is in the background.
+ *
+ * The default value is "0". This hint may be set at any time.
*/
#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
/**
- * \brief A variable controlling whether the HIDAPI joystick drivers should be used.
+ * A variable containing a list of arcade stick style controllers.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI drivers are not used
- * "1" - HIDAPI drivers are used (the default)
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
*
- * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES "SDL_JOYSTICK_ARCADESTICK_DEVICES"
+
+/**
+ * A variable containing a list of devices that are not arcade stick style
+ * controllers.
+ *
+ * This will override SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES and the built in
+ * device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED"
+
+/**
+ * A variable containing a list of devices that should not be considerd
+ * joysticks.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES "SDL_JOYSTICK_BLACKLIST_DEVICES"
+
+/**
+ * A variable containing a list of devices that should be considered
+ * joysticks.
+ *
+ * This will override SDL_HINT_JOYSTICK_BLACKLIST_DEVICES and the built in
+ * device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED "SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED"
+
+/**
+ * A variable containing a list of flightstick style controllers.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES "SDL_JOYSTICK_FLIGHTSTICK_DEVICES"
+
+/**
+ * A variable containing a list of devices that are not flightstick style
+ * controllers.
+ *
+ * This will override SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES and the built in
+ * device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED"
+
+/**
+ * A variable containing a list of devices known to have a GameCube form
+ * factor.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES "SDL_JOYSTICK_GAMECUBE_DEVICES"
+
+/**
+ * A variable containing a list of devices known not to have a GameCube form
+ * factor.
+ *
+ * This will override SDL_HINT_JOYSTICK_GAMECUBE_DEVICES and the built in
+ * device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED "SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED"
+
+/**
+ * A variable controlling whether the HIDAPI joystick drivers should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI drivers are not used
+ * - "1": HIDAPI drivers are used (the default)
+ *
+ * This variable is the default for all drivers, but can be overridden by the
+ * hints for specific drivers below.
*/
#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.
+ * A variable controlling whether the HIDAPI driver for Nintendo GameCube
+ * controllers should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE"
/**
- * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement
- * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2)
- * this is useful for applications that need full compatibility for things like ADSR envelopes.
- * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0"
- * Rumble is both at any arbitrary value,
- * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0"
+ * A variable controlling whether "low_frequency_rumble" and
+ * "high_frequency_rumble" is used to implement the GameCube controller's 3
+ * rumble modes, Stop(0), Rumble(1), and StopHard(2) this is useful for
+ * applications that need full compatibility for things like ADSR envelopes.
*
- * This variable can be set to the following values:
- * "0" - Normal rumble behavior is behavior is used (default)
- * "1" - Proper GameCube controller rumble behavior is used
+ * Stop is implemented by setting "low_frequency_rumble" to "0" and
+ * "high_frequency_rumble" ">0" Rumble is both at any arbitrary value,
+ * StopHard is implemented by setting both "low_frequency_rumble" and
+ * "high_frequency_rumble" to "0"
*
+ * This variable can be set to the following values:
+ *
+ * - "0": Normal rumble behavior is behavior is used (default)
+ * - "1": Proper GameCube controller rumble behavior is used
*/
#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE"
/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
+ * A variable controlling whether the HIDAPI driver for Nintendo Switch
+ * Joy-Cons should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS"
/**
- * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver
- *
- * This variable can be set to the following values:
- * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad
- * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default)
- */
+ * A variable controlling whether Nintendo Switch Joy-Con controllers will be
+ * combined into a single Pro-like controller when using the HIDAPI driver
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Left and right Joy-Con controllers will not be combined and each
+ * will be a mini-gamepad
+ * - "1": Left and right Joy-Con controllers will be combined into a single
+ * controller (the default)
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS"
/**
- * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver
- *
- * This variable can be set to the following values:
- * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default)
- * "1" - Left and right Joy-Con controllers will be in vertical mode
- *
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- */
+ * A variable controlling whether Nintendo Switch Joy-Con controllers will be
+ * in vertical mode when using the HIDAPI driver
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Left and right Joy-Con controllers will not be in vertical mode (the
+ * default)
+ * - "1": Left and right Joy-Con controllers will be in vertical mode
+ *
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS"
/**
- * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
+ * A variable controlling whether the HIDAPI driver for Amazon Luna
+ * controllers connected via Bluetooth should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA"
/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
+ * A variable controlling whether the HIDAPI driver for Nintendo Online
+ * classic controllers should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC"
/**
- * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
+ * A variable controlling whether the HIDAPI driver for NVIDIA SHIELD
+ * controllers should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ */
#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD"
/**
- * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used.
+ * A variable controlling whether the HIDAPI driver for PS3 controllers should
+ * be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms.
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
*
- * It is not possible to use this driver on Windows, due to limitations in the default drivers
- * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows.
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on
+ * other platforms.
+ *
+ * It is not possible to use this driver on Windows, due to limitations in the
+ * default drivers installed. See https://github.com/ViGEm/DsHidMini for an
+ * alternative driver on Windows.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3"
/**
- * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
+ * A variable controlling whether the HIDAPI driver for PS4 controllers should
+ * be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
/**
- * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
+ * A variable controlling whether extended input reports should be used for
+ * PS4 controllers when using the HIDAPI driver.
*
- * This variable can be set to the following values:
- * "0" - extended reports are not enabled (the default)
- * "1" - extended reports
+ * This variable can be set to the following values:
*
- * Extended input reports allow rumble on Bluetooth PS4 controllers, but
- * break DirectInput handling for applications that don't use SDL.
+ * - "0": extended reports are not enabled (the default)
+ * - "1": extended reports
*
- * Once extended reports are enabled, they can not be disabled without
- * power cycling the controller.
+ * Extended input reports allow rumble on Bluetooth PS4 controllers, but break
+ * DirectInput handling for applications that don't use SDL.
*
- * For compatibility with applications written for versions of SDL prior
- * to the introduction of PS5 controller support, this value will also
- * control the state of extended reports on PS5 controllers when the
- * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.
+ * Once extended reports are enabled, they can not be disabled without power
+ * cycling the controller.
+ *
+ * For compatibility with applications written for versions of SDL prior to
+ * the introduction of PS5 controller support, this value will also control
+ * the state of extended reports on PS5 controllers when the
+ * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
/**
- * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used.
+ * A variable controlling whether the HIDAPI driver for PS5 controllers should
+ * be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5"
/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller.
+ * A variable controlling whether the player LEDs should be lit to indicate
+ * which player is associated with a PS5 controller.
*
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
+ * This variable can be set to the following values:
+ *
+ * - "0": player LEDs are not enabled
+ * - "1": player LEDs are enabled (the default)
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED"
/**
- * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver.
+ * A variable controlling whether extended input reports should be used for
+ * PS5 controllers when using the HIDAPI driver.
*
- * This variable can be set to the following values:
- * "0" - extended reports are not enabled (the default)
- * "1" - extended reports
+ * This variable can be set to the following values:
*
- * Extended input reports allow rumble on Bluetooth PS5 controllers, but
- * break DirectInput handling for applications that don't use SDL.
+ * - "0": extended reports are not enabled (the default)
+ * - "1": extended reports
*
- * Once extended reports are enabled, they can not be disabled without
- * power cycling the controller.
+ * Extended input reports allow rumble on Bluetooth PS5 controllers, but break
+ * DirectInput handling for applications that don't use SDL.
*
- * For compatibility with applications written for versions of SDL prior
- * to the introduction of PS5 controller support, this value defaults to
- * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.
+ * Once extended reports are enabled, they can not be disabled without power
+ * cycling the controller.
+ *
+ * For compatibility with applications written for versions of SDL prior to
+ * the introduction of PS5 controller support, this value defaults to the
+ * value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE"
/**
- * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used.
+ * A variable controlling whether the HIDAPI driver for Google Stadia
+ * controllers should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA"
/**
- * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used.
+ * A variable controlling whether the HIDAPI driver for Bluetooth Steam
+ * Controllers should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access
- * and may prompt the user for permission on iOS and Android.
+ * This variable can be set to the following values:
*
- * The default is "0"
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used for Steam Controllers, which requires
+ * Bluetooth access and may prompt the user for permission on iOS and
+ * Android.
+ *
+ * The default is "0"
*/
#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
+ * A variable controlling whether the HIDAPI driver for the Steam Deck builtin
+ * controller should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
+ */
+#define SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK "SDL_JOYSTICK_HIDAPI_STEAMDECK"
+
+/**
+ * A variable controlling whether the HIDAPI driver for Nintendo Switch
+ * controllers should be used.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
/**
- * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened
+ * A variable controlling whether the Home button LED should be turned on when
+ * a Nintendo Switch Pro controller is opened
*
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
+ * This variable can be set to the following values:
*
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
+ * - "0": home button LED is turned off
+ * - "1": home button LED is turned on
+ *
+ * By default the Home button LED state is not changed. This hint can also be
+ * set to a floating point value between 0.0 and 1.0 which controls the
+ * brightness of the Home button LED.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"
/**
- * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened
+ * A variable controlling whether the Home button LED should be turned on when
+ * a Nintendo Switch Joy-Con controller is opened
*
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
+ * This variable can be set to the following values:
*
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
+ * - "0": home button LED is turned off
+ * - "1": home button LED is turned on
+ *
+ * By default the Home button LED state is not changed. This hint can also be
+ * set to a floating point value between 0.0 and 1.0 which controls the
+ * brightness of the Home button LED.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED"
/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller.
+ * A variable controlling whether the player LEDs should be lit to indicate
+ * which player is associated with a Nintendo Switch controller.
*
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
+ * This variable can be set to the following values:
+ *
+ * - "0": player LEDs are not enabled
+ * - "1": player LEDs are enabled (the default)
*/
#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED"
/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used.
+ * A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U
+ * controllers should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now.
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE
+ * for now.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII"
/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller.
+ * A variable controlling whether the player LEDs should be lit to indicate
+ * which player is associated with a Wii controller.
*
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
+ * This variable can be set to the following values:
+ *
+ * - "0": player LEDs are not enabled
+ * - "1": player LEDs are enabled (the default)
*/
#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED"
/**
- * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used.
+ * A variable controlling whether the HIDAPI driver for XBox controllers
+ * should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is "0" on Windows, otherwise the value of
+ * SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX"
/**
- * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used.
+ * A variable controlling whether the HIDAPI driver for XBox 360 controllers
+ * should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360"
/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller.
+ * A variable controlling whether the player LEDs should be lit to indicate
+ * which player is associated with an Xbox 360 controller.
*
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
+ * This variable can be set to the following values:
+ *
+ * - "0": player LEDs are not enabled
+ * - "1": player LEDs are enabled (the default)
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED"
/**
- * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used.
+ * A variable controlling whether the HIDAPI driver for XBox 360 wireless
+ * controllers should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS"
/**
- * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used.
+ * A variable controlling whether the HIDAPI driver for XBox One controllers
+ * should be used.
*
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
+ * This variable can be set to the following values:
*
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
+ * - "0": HIDAPI driver is not used
+ * - "1": HIDAPI driver is used
+ *
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE"
/**
- * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened
+ * A variable controlling whether the Home button LED should be turned on when
+ * an Xbox One controller is opened
*
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
+ * This variable can be set to the following values:
*
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4.
+ * - "0": home button LED is turned off
+ * - "1": home button LED is turned on
+ *
+ * By default the Home button LED state is not changed. This hint can also be
+ * set to a floating point value between 0.0 and 1.0 which controls the
+ * brightness of the Home button LED. The default brightness is 0.4.
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED"
/**
- * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
- *
- * This variable can be set to the following values:
- * "0" - RAWINPUT drivers are not used
- * "1" - RAWINPUT drivers are used (the default)
- */
+ * A variable controlling whether IOKit should be used for controller
+ * handling.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": IOKit is not used
+ * - "1": IOKit is used (the default)
+ */
+#define SDL_HINT_JOYSTICK_IOKIT "SDL_JOYSTICK_IOKIT"
+
+/**
+ * A variable controlling whether GCController should be used for controller
+ * handling.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": GCController is not used
+ * - "1": GCController is used (the default)
+ */
+#define SDL_HINT_JOYSTICK_MFI "SDL_JOYSTICK_MFI"
+
+/**
+ * A variable controlling whether the RAWINPUT joystick drivers should be used
+ * for better handling XInput-capable devices.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": RAWINPUT drivers are not used
+ * - "1": RAWINPUT drivers are used (the default)
+ */
#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT"
/**
- * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput.
- *
- * This variable can be set to the following values:
- * "0" - RAWINPUT driver will only use data from raw input APIs
- * "1" - RAWINPUT driver will also pull data from XInput, providing
- * better trigger axes, guide button presses, and rumble support
- * for Xbox controllers
- *
- * The default is "1". This hint applies to any joysticks opened after setting the hint.
- */
+ * A variable controlling whether the RAWINPUT driver should pull correlated
+ * data from XInput.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": RAWINPUT driver will only use data from raw input APIs
+ * - "1": RAWINPUT driver will also pull data from XInput, providing better
+ * trigger axes, guide button presses, and rumble support for Xbox
+ * controllers
+ *
+ * The default is "1". This hint applies to any joysticks opened after setting
+ * the hint.
+ */
#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
/**
- * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks
- *
- * This variable can be set to the following values:
- * "0" - ROG Chakram mice do not show up as joysticks (the default)
- * "1" - ROG Chakram mice show up as joysticks
- */
+ * A variable controlling whether the ROG Chakram mice should show up as
+ * joysticks
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": ROG Chakram mice do not show up as joysticks (the default)
+ * - "1": ROG Chakram mice show up as joysticks
+ */
#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM"
/**
- * \brief A variable controlling whether a separate thread should be used
- * for handling joystick detection and raw input messages on Windows
- *
- * This variable can be set to the following values:
- * "0" - A separate thread is not used (the default)
- * "1" - A separate thread is used for handling raw input messages
- *
- */
+ * A variable controlling whether a separate thread should be used for
+ * handling joystick detection and raw input messages on Windows
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": A separate thread is not used (the default)
+ * - "1": A separate thread is used for handling raw input messages
+ */
#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
/**
- * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling.
- *
- * This variable can be set to the following values:
- * "0" - WGI is not used
- * "1" - WGI is used (the default)
- */
+ * A variable containing a list of throttle style controllers.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES "SDL_JOYSTICK_THROTTLE_DEVICES"
+
+/**
+ * A variable containing a list of devices that are not throttle style
+ * controllers.
+ *
+ * This will override SDL_HINT_JOYSTICK_THROTTLE_DEVICES and the built in
+ * device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED "SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED"
+
+/**
+ * A variable controlling whether Windows.Gaming.Input should be used for
+ * controller handling.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": WGI is not used
+ * - "1": WGI is used (the default)
+ */
#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI"
/**
- * \brief Determines whether SDL enforces that DRM master is required in order
- * to initialize the KMSDRM video backend.
+ * A variable containing a list of wheel style controllers.
*
- * The DRM subsystem has a concept of a "DRM master" which is a DRM client that
- * has the ability to set planes, set cursor, etc. When SDL is DRM master, it
- * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL
- * is still able to process input and query attributes of attached displays,
- * but it cannot change display state or draw to the screen directly.
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
*
- * In some cases, it can be useful to have the KMSDRM backend even if it cannot
- * be used for rendering. An app may want to use SDL for input processing while
- * using another rendering API (such as an MMAL overlay on Raspberry Pi) or
- * using its own code to render to DRM overlays that SDL doesn't support.
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_WHEEL_DEVICES "SDL_JOYSTICK_WHEEL_DEVICES"
+
+/**
+ * A variable containing a list of devices that are not wheel style
+ * controllers.
+ *
+ * This will override SDL_HINT_JOYSTICK_WHEEL_DEVICES and the built in device
+ * list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED "SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED"
+
+/**
+ * A variable containing a list of devices known to have all axes centered at
+ * zero.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES "SDL_JOYSTICK_ZERO_CENTERED_DEVICES"
+
+/**
+ * Determines whether SDL enforces that DRM master is required in order to
+ * initialize the KMSDRM video backend.
+ *
+ * The DRM subsystem has a concept of a "DRM master" which is a DRM client
+ * that has the ability to set planes, set cursor, etc. When SDL is DRM
+ * master, it can draw to the screen using the SDL rendering APIs. Without DRM
+ * master, SDL is still able to process input and query attributes of attached
+ * displays, but it cannot change display state or draw to the screen
+ * directly.
+ *
+ * In some cases, it can be useful to have the KMSDRM backend even if it
+ * cannot be used for rendering. An app may want to use SDL for input
+ * processing while using another rendering API (such as an MMAL overlay on
+ * Raspberry Pi) or using its own code to render to DRM overlays that SDL
+ * doesn't support.
*
* This hint must be set before initializing the video subsystem.
*
* This variable can be set to the following values:
- * "0" - SDL will allow usage of the KMSDRM backend without DRM master
- * "1" - SDL Will require DRM master to use the KMSDRM backend (default)
+ *
+ * - "0": SDL will allow usage of the KMSDRM backend without DRM master
+ * - "1": SDL Will require DRM master to use the KMSDRM backend (default)
*/
#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER"
/**
- * \brief A comma separated list of devices to open as joysticks
- *
- * This variable is currently only used by the Linux joystick driver.
- */
+ * A comma separated list of devices to open as joysticks
+ *
+ * This variable is currently only used by the Linux joystick driver.
+ */
#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE"
+
/**
- * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog.
- *
- * This variable can be set to the following values:
- * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default)
- * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats
- */
+ * A variable containing a list of devices and their desired number of haptic
+ * (force feedback) enabled axis.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form plus the number of desired axes, e.g.
+ *
+ * `0xAAAA/0xBBBB/1,0xCCCC/0xDDDD/3`
+ *
+ * This hint supports a "wildcard" device that will set the number of haptic
+ * axes on all initialized haptic devices which were not defined explicitly in
+ * this hint.
+ *
+ * `0xFFFF/0xFFFF/1`
+ *
+ * This hint should be set before a controller is opened. The number of haptic
+ * axes won't exceed the number of real axes found on the device.
+ */
+#define SDL_HINT_JOYSTICK_HAPTIC_AXES "SDL_JOYSTICK_HAPTIC_AXES"
+
+/**
+ * A variable controlling whether joysticks on Linux will always treat 'hat'
+ * axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking
+ * whether they may be analog.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Only map hat axis inputs to digital hat outputs if the input axes
+ * appear to actually be digital (the default)
+ * - "1": Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as
+ * digital hats
+ */
#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS"
/**
- * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values.
- *
- * This variable can be set to the following values:
- * "0" - Return digital hat values based on unfiltered input axis values
- * "1" - Return digital hat values with deadzones on the input axes taken into account (the default)
- */
+ * A variable controlling whether digital hats on Linux will apply deadzones
+ * to their underlying input axes or use unfiltered values.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Return digital hat values based on unfiltered input axis values
+ * - "1": Return digital hat values with deadzones on the input axes taken
+ * into account (the default)
+ */
#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES"
/**
- * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux
- *
- * This variable can be set to the following values:
- * "0" - Use /dev/input/event*
- * "1" - Use /dev/input/js*
- *
- * By default the /dev/input/event* interfaces are used
- */
+ * A variable controlling whether to use the classic /dev/input/js* joystick
+ * interface or the newer /dev/input/event* joystick interface on Linux
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Use /dev/input/event*
+ * - "1": Use /dev/input/js*
+ *
+ * By default the /dev/input/event* interfaces are used
+ */
#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC"
/**
- * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.
- *
- * This variable can be set to the following values:
- * "0" - Return unfiltered joystick axis values (the default)
- * "1" - Return axis values with deadzones taken into account
- */
+ * A variable controlling whether joysticks on Linux adhere to their
+ * HID-defined deadzones or return unfiltered values.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Return unfiltered joystick axis values (the default)
+ * - "1": Return axis values with deadzones taken into account
+ */
#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
/**
-* \brief When set don't force the SDL app to become a foreground process
-*
-* This hint only applies to Mac OS X.
-*
-*/
+ * 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"
+
+/**
+ * When set don't force the SDL app to become a foreground process
+ *
+ * This hint only applies to Mac OS X.
+ */
#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP"
/**
- * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
+ * A variable that determines whether ctrl+click should generate a right-click
+ * event on Mac
*
- * If present, holding ctrl while left clicking will generate a right click
- * event when on Mac.
+ * If present, holding ctrl while left clicking will generate a right click
+ * event when on Mac.
*/
#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
/**
- * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing
+ * A variable controlling whether dispatching OpenGL context updates should
+ * block the dispatching thread until the main thread finishes processing
*
- * This variable can be set to the following values:
- * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default).
- * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution.
+ * This variable can be set to the following values:
*
- * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread
- * hangs because it's waiting for that background thread, but that background thread is also hanging because it's
- * waiting for the main thread to do an update, this might fix your issue.
+ * - "0": Dispatching OpenGL context updates will block the dispatching thread
+ * until the main thread finishes processing (default).
+ * - "1": Dispatching OpenGL context updates will allow the dispatching thread
+ * to continue execution.
*
- * This hint only applies to macOS.
+ * Generally you want the default, but if you have OpenGL code in a background
+ * thread on a Mac, and the main thread hangs because it's waiting for that
+ * background thread, but that background thread is also hanging because it's
+ * waiting for the main thread to do an update, this might fix your issue.
*
- * This hint is available since SDL 2.24.0.
+ * This hint only applies to macOS.
*
+ * This hint is available since SDL 2.24.0.
*/
#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH"
/**
- * \brief A variable setting the double click radius, in pixels.
+ * A variable setting the double click radius, in pixels.
*/
#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
/**
- * \brief A variable setting the double click time, in milliseconds.
+ * A variable setting the double click time, in milliseconds.
*/
#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
/**
- * \brief Allow mouse click events when clicking to focus an SDL window
+ * Allow mouse click events when clicking to focus an SDL window
*
- * This variable can be set to the following values:
- * "0" - Ignore mouse clicks that activate a window
- * "1" - Generate events for mouse clicks that activate a window
+ * This variable can be set to the following values:
*
- * By default SDL will ignore mouse clicks that activate a window
+ * - "0": Ignore mouse clicks that activate a window
+ * - "1": Generate events for mouse clicks that activate a window
+ *
+ * By default SDL will ignore mouse clicks that activate a window
*/
#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
/**
- * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
+ * A variable setting the speed scale for mouse motion, in floating point,
+ * when the mouse is not in relative mode
*/
#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
/**
- * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window
+ * A variable controlling whether relative mouse mode constrains the mouse to
+ * the center of the window
*
- * This variable can be set to the following values:
- * "0" - Relative mouse mode constrains the mouse to the window
- * "1" - Relative mouse mode constrains the mouse to the center of the window
+ * This variable can be set to the following values:
*
- * Constraining to the center of the window works better for FPS games and when the
- * application is running over RDP. Constraining to the whole window works better
- * for 2D games and increases the chance that the mouse will be in the correct
- * position when using high DPI mice.
+ * - "0": Relative mouse mode constrains the mouse to the window
+ * - "1": Relative mouse mode constrains the mouse to the center of the window
*
- * By default SDL will constrain the mouse to the center of the window
+ * Constraining to the center of the window works better for FPS games and
+ * when the application is running over RDP. Constraining to the whole window
+ * works better for 2D games and increases the chance that the mouse will be
+ * in the correct position when using high DPI mice.
+ *
+ * By default SDL will constrain the mouse to the center of the window
*/
#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER"
/**
- * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
+ * A variable controlling whether relative mouse mode is implemented using
+ * mouse warping
*
- * This variable can be set to the following values:
- * "0" - Relative mouse mode uses raw input
- * "1" - Relative mouse mode uses mouse warping
+ * This variable can be set to the following values:
*
- * By default SDL will use raw input for relative mouse mode
+ * - "0": Relative mouse mode uses raw input
+ * - "1": Relative mouse mode uses mouse warping
+ *
+ * By default SDL will use raw input for relative mouse mode
*/
#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
/**
- * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
+ * A variable controlling whether relative mouse motion is affected by
+ * renderer scaling
*
- * This variable can be set to the following values:
- * "0" - Relative motion is unaffected by DPI or renderer's logical size
- * "1" - Relative motion is scaled according to DPI scaling and logical size
+ * This variable can be set to the following values:
*
- * By default relative mouse deltas are affected by DPI and renderer scaling
+ * - "0": Relative motion is unaffected by DPI or renderer's logical size
+ * - "1": Relative motion is scaled according to DPI scaling and logical size
+ *
+ * By default relative mouse deltas are affected by DPI and renderer scaling
*/
#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
/**
- * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
+ * A variable setting the scale for mouse motion, in floating point, when the
+ * mouse is in relative mode
*/
#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
/**
- * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion.
+ * A variable controlling whether the system mouse acceleration curve is used
+ * for relative mouse motion.
*
- * This variable can be set to the following values:
- * "0" - Relative mouse motion will be unscaled (the default)
- * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve.
+ * This variable can be set to the following values:
*
- * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale.
+ * - "0": Relative mouse motion will be unscaled (the default)
+ * - "1": Relative mouse motion will be scaled using the system mouse
+ * acceleration curve.
+ *
+ * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the
+ * system speed scale.
*/
#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE"
/**
- * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode.
+ * A variable controlling whether a motion event should be generated for mouse
+ * warping in relative mode.
*
- * This variable can be set to the following values:
- * "0" - Warping the mouse will not generate a motion event in relative mode
- * "1" - Warping the mouse will generate a motion event in relative mode
+ * This variable can be set to the following values:
*
- * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping.
+ * - "0": Warping the mouse will not generate a motion event in relative mode
+ * - "1": Warping the mouse will generate a motion event in relative mode
+ *
+ * By default warping the mouse will not generate motion events in relative
+ * mode. This avoids the application having to filter out large relative
+ * motion due to warping.
*/
#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION"
/**
- * \brief A variable controlling whether mouse events should generate synthetic touch events
+ * A variable controlling whether the hardware cursor stays visible when
+ * relative mode is active.
*
- * This variable can be set to the following values:
- * "0" - Mouse events will not generate touch events (default for desktop platforms)
- * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
+ * This variable can be set to the following values: "0" - The cursor will be
+ * hidden while relative mode is active (default) "1" - The cursor will remain
+ * visible while relative mode is active
+ *
+ * Note that for systems without raw hardware inputs, relative mode is
+ * implemented using warping, so the hardware cursor will visibly warp between
+ * frames if this is enabled on those systems.
+ */
+#define SDL_HINT_MOUSE_RELATIVE_CURSOR_VISIBLE "SDL_MOUSE_RELATIVE_CURSOR_VISIBLE"
+
+/**
+ * A variable controlling whether mouse events should generate synthetic touch
+ * events
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": Mouse events will not generate touch events (default for desktop
+ * platforms)
+ * - "1": Mouse events will generate touch events (default for mobile
+ * platforms, such as Android and iOS)
*/
#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
/**
- * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed
+ * A variable controlling whether the mouse is captured while mouse buttons
+ * are pressed
*
- * This variable can be set to the following values:
- * "0" - The mouse is not captured while mouse buttons are pressed
- * "1" - The mouse is captured while mouse buttons are pressed
+ * This variable can be set to the following values:
*
- * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged
- * outside the window, the application continues to receive mouse events until the button is
- * released.
+ * - "0": The mouse is not captured while mouse buttons are pressed
+ * - "1": The mouse is captured while mouse buttons are pressed
+ *
+ * By default the mouse is captured while mouse buttons are pressed so if the
+ * mouse is dragged outside the window, the application continues to receive
+ * mouse events until the button is released.
*/
#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE"
/**
- * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
+ * Tell SDL not to catch the SIGINT or SIGTERM signals.
*
- * This hint only applies to Unix-like platforms, and should set before
- * any calls to SDL_Init()
+ * This hint only applies to Unix-like platforms, and should set before any
+ * calls to SDL_Init()
*
* The variable can be set to the following values:
- * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
- * catches a signal, convert it into an SDL_QUIT event.
- * "1" - SDL will not install a signal handler at all.
+ *
+ * - "0": SDL will install a SIGINT and SIGTERM handler, and when it catches a
+ * signal, convert it into an SDL_QUIT event.
+ * - "1": SDL will not install a signal handler at all.
*/
#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
/**
- * \brief A variable controlling what driver to use for OpenGL ES contexts.
+ * A variable controlling what driver to use for OpenGL ES contexts.
*
- * On some platforms, currently Windows and X11, OpenGL drivers may support
- * creating contexts with an OpenGL ES profile. By default SDL uses these
- * profiles, when available, otherwise it attempts to load an OpenGL ES
- * library, e.g. that provided by the ANGLE project. This variable controls
- * whether SDL follows this default behaviour or will always load an
- * OpenGL ES library.
+ * On some platforms, currently Windows and X11, OpenGL drivers may support
+ * creating contexts with an OpenGL ES profile. By default SDL uses these
+ * profiles, when available, otherwise it attempts to load an OpenGL ES
+ * library, e.g. that provided by the ANGLE project. This variable controls
+ * whether SDL follows this default behaviour or will always load an OpenGL ES
+ * library.
*
- * Circumstances where this is useful include
- * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
- * or emulator, e.g. those from ARM, Imagination or Qualcomm.
- * - Resolving OpenGL ES function addresses at link time by linking with
- * the OpenGL ES library instead of querying them at run time with
- * SDL_GL_GetProcAddress().
+ * Circumstances where this is useful include - Testing an app with a
+ * particular OpenGL ES implementation, e.g ANGLE, or emulator, e.g. those
+ * from ARM, Imagination or Qualcomm. - Resolving OpenGL ES function addresses
+ * at link time by linking with the OpenGL ES library instead of querying them
+ * at run time with SDL_GL_GetProcAddress().
*
- * Caution: for an application to work with the default behaviour across
- * different OpenGL drivers it must query the OpenGL ES function
- * addresses at run time using SDL_GL_GetProcAddress().
+ * Caution: for an application to work with the default behaviour across
+ * different OpenGL drivers it must query the OpenGL ES function addresses at
+ * run time using SDL_GL_GetProcAddress().
*
- * This variable is ignored on most platforms because OpenGL ES is native
- * or not supported.
+ * This variable is ignored on most platforms because OpenGL ES is native or
+ * not supported.
*
- * This variable can be set to the following values:
- * "0" - Use ES profile of OpenGL, if available. (Default when not set.)
- * "1" - Load OpenGL ES library using the default library names.
+ * This variable can be set to the following values:
*
+ * - "0": Use ES profile of OpenGL, if available. (Default when not set.)
+ * - "1": Load OpenGL ES library using the default library names.
*/
#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
/**
- * \brief A variable controlling which orientations are allowed on iOS/Android.
+ * A variable controlling which orientations are allowed on iOS/Android.
*
- * In some circumstances it is necessary to be able to explicitly control
- * which UI orientations are allowed.
+ * In some circumstances it is necessary to be able to explicitly control
+ * which UI orientations are allowed.
*
- * This variable is a space delimited list of the following values:
- * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
+ * This variable is a space delimited list of the following values:
+ *
+ * - "LandscapeLeft"
+ * - "LandscapeRight"
+ * - "Portrait"
+ * - "PortraitUpsideDown"
*/
#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
/**
- * \brief A variable controlling the use of a sentinel event when polling the event queue
+ * A variable controlling the use of a sentinel event when polling the event
+ * queue
*
- * This variable can be set to the following values:
- * "0" - Disable poll sentinels
- * "1" - Enable poll sentinels
+ * This variable can be set to the following values:
*
- * When polling for events, SDL_PumpEvents is used to gather new events from devices.
- * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will
- * become stuck until the new events stop.
- * This is most noticeable when moving a high frequency mouse.
+ * - "0": Disable poll sentinels
+ * - "1": Enable poll sentinels
*
- * By default, poll sentinels are enabled.
+ * When polling for events, SDL_PumpEvents is used to gather new events from
+ * devices. If a device keeps producing new events between calls to
+ * SDL_PumpEvents, a poll loop will become stuck until the new events stop.
+ * This is most noticeable when moving a high frequency mouse.
+ *
+ * By default, poll sentinels are enabled.
*/
#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL"
/**
- * \brief Override for SDL_GetPreferredLocales()
+ * Override for SDL_GetPreferredLocales()
*
- * If set, this will be favored over anything the OS might report for the
- * user's preferred locales. Changing this hint at runtime will not generate
- * a SDL_LOCALECHANGED event (but if you can change the hint, you can push
- * your own event, if you want).
+ * If set, this will be favored over anything the OS might report for the
+ * user's preferred locales. Changing this hint at runtime will not generate a
+ * SDL_LOCALECHANGED event (but if you can change the hint, you can push your
+ * own event, if you want).
*
- * The format of this hint is a comma-separated list of language and locale,
- * combined with an underscore, as is a common format: "en_GB". Locale is
- * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
+ * The format of this hint is a comma-separated list of language and locale,
+ * combined with an underscore, as is a common format: "en_GB". Locale is
+ * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
*/
#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
/**
- * \brief A variable describing the content orientation on QtWayland-based platforms.
+ * A variable describing the content orientation on QtWayland-based platforms.
*
- * On QtWayland platforms, windows are rotated client-side to allow for custom
- * transitions. In order to correctly position overlays (e.g. volume bar) and
- * gestures (e.g. events view, close/minimize gestures), the system needs to
- * know in which orientation the application is currently drawing its contents.
+ * On QtWayland platforms, windows are rotated client-side to allow for custom
+ * transitions. In order to correctly position overlays (e.g. volume bar) and
+ * gestures (e.g. events view, close/minimize gestures), the system needs to
+ * know in which orientation the application is currently drawing its
+ * contents.
*
- * This does not cause the window to be rotated or resized, the application
- * needs to take care of drawing the content in the right orientation (the
- * framebuffer is always in portrait mode).
+ * This does not cause the window to be rotated or resized, the application
+ * needs to take care of drawing the content in the right orientation (the
+ * framebuffer is always in portrait mode).
*
- * This variable can be one of the following values:
- * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
+ * This variable can be one of the following values:
*
- * Since SDL 2.0.22 this variable accepts a comma-separated list of values above.
+ * - "primary" (default)
+ * - "portrait"
+ * - "landscape"
+ * - "inverted-portrait"
+ * - "inverted-landscape"
+ *
+ * Since SDL 2.0.22 this variable accepts a comma-separated list of values
+ * above.
*/
#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
/**
- * \brief Flags to set on QtWayland windows to integrate with the native window manager.
+ * Flags to set on QtWayland windows to integrate with the native window
+ * manager.
*
- * On QtWayland platforms, this hint controls the flags to set on the windows.
- * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
+ * On QtWayland platforms, this hint controls the flags to set on the windows.
+ * For example, on Sailfish OS "OverridesSystemGestures" disables swipe
+ * gestures.
*
- * This variable is a space-separated list of the following values (empty = no flags):
- * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
+ * This variable is a space-separated list of the following values (empty = no
+ * flags):
+ *
+ * - "OverridesSystemGestures"
+ * - "StaysOnTop"
+ * - "BypassWindowManager"
*/
#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
/**
- * \brief A variable controlling whether the 2D render API is compatible or efficient.
+ * A variable controlling whether the 2D render API is compatible or
+ * efficient.
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "0" - Don't use batching to make rendering more efficient.
- * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls.
+ * - "0": Don't use batching to make rendering more efficient.
+ * - "1": Use batching, but might cause problems if app makes its own direct
+ * OpenGL calls.
*
- * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
- * it batches up draw requests and sends them all to the GPU only when forced
- * to (during SDL_RenderPresent, when changing render targets, by updating a
- * texture that the batch needs, etc). This is significantly more efficient,
- * but it can cause problems for apps that expect to render on top of the
- * render API's output. As such, SDL will disable batching if a specific
- * render backend is requested (since this might indicate that the app is
- * planning to use the underlying graphics API directly). This hint can
- * be used to explicitly request batching in this instance. It is a contract
- * that you will either never use the underlying graphics API directly, or
- * if you do, you will call SDL_RenderFlush() before you do so any current
- * batch goes to the GPU before your work begins. Not following this contract
- * will result in undefined behavior.
+ * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
+ * it batches up draw requests and sends them all to the GPU only when forced
+ * to (during SDL_RenderPresent, when changing render targets, by updating a
+ * texture that the batch needs, etc). This is significantly more efficient,
+ * but it can cause problems for apps that expect to render on top of the
+ * render API's output. As such, SDL will disable batching if a specific
+ * render backend is requested (since this might indicate that the app is
+ * planning to use the underlying graphics API directly). This hint can be
+ * used to explicitly request batching in this instance. It is a contract that
+ * you will either never use the underlying graphics API directly, or if you
+ * do, you will call SDL_RenderFlush() before you do so any current batch goes
+ * to the GPU before your work begins. Not following this contract will result
+ * in undefined behavior.
*/
#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING"
/**
- * \brief A variable controlling how the 2D render API renders lines
+ * A variable controlling how the 2D render API renders lines
*
- * This variable can be set to the following values:
- * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20)
- * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points)
- * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20)
- * "3" - Use the driver geometry API (correct, draws thicker diagonal lines)
+ * This variable can be set to the following values:
*
- * This variable should be set when the renderer is created.
+ * - "0": Use the default line drawing method (Bresenham's line algorithm as
+ * of SDL 2.0.20)
+ * - "1": Use the driver point API using Bresenham's line algorithm (correct,
+ * draws many points)
+ * - "2": Use the driver line API (occasionally misses line endpoints based on
+ * hardware driver quirks, was the default before 2.0.20)
+ * - "3": Use the driver geometry API (correct, draws thicker diagonal lines)
+ *
+ * This variable should be set when the renderer is created.
*/
#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD"
/**
- * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
+ * A variable controlling whether to enable Direct3D 11+'s Debug Layer.
*
- * This variable does not have any effect on the Direct3D 9 based renderer.
+ * This variable does not have any effect on the Direct3D 9 based renderer.
*
- * This variable can be set to the following values:
- * "0" - Disable Debug Layer use
- * "1" - Enable Debug Layer use
+ * This variable can be set to the following values:
*
- * By default, SDL does not use Direct3D Debug Layer.
+ * - "0": Disable Debug Layer use
+ * - "1": Enable Debug Layer use
+ *
+ * By default, SDL does not use Direct3D Debug Layer.
*/
#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
/**
- * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
+ * A variable controlling whether the Direct3D device is initialized for
+ * thread-safe operations.
*
- * This variable can be set to the following values:
- * "0" - Thread-safety is not enabled (faster)
- * "1" - Thread-safety is enabled
+ * This variable can be set to the following values:
*
- * By default the Direct3D device is created with thread-safety disabled.
+ * - "0": Thread-safety is not enabled (faster)
+ * - "1": Thread-safety is enabled
+ *
+ * By default the Direct3D device is created with thread-safety disabled.
*/
#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
/**
- * \brief A variable specifying which render driver to use.
+ * A variable specifying which render driver to use.
*
- * If the application doesn't pick a specific renderer to use, this variable
- * specifies the name of the preferred renderer. If the preferred renderer
- * can't be initialized, the normal default renderer is used.
+ * If the application doesn't pick a specific renderer to use, this variable
+ * specifies the name of the preferred renderer. If the preferred renderer
+ * can't be initialized, the normal default renderer is used.
*
- * This variable is case insensitive and can be set to the following values:
- * "direct3d"
- * "direct3d11"
- * "direct3d12"
- * "opengl"
- * "opengles2"
- * "opengles"
- * "metal"
- * "software"
+ * This variable is case insensitive and can be set to the following values:
*
- * The default varies by platform, but it's the first one in the list that
- * is available on the current platform.
+ * - "direct3d"
+ * - "direct3d11"
+ * - "direct3d12"
+ * - "opengl"
+ * - "opengles2"
+ * - "opengles"
+ * - "metal"
+ * - "software"
+ *
+ * The default varies by platform, but it's the first one in the list that is
+ * available on the current platform.
*/
#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
/**
- * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
+ * A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
*
- * This variable can be set to the following values:
- * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
+ * This variable can be set to the following values:
*
- * By default letterbox is used
+ * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on
+ * screen "1" or "overscan" - Will zoom the rendering so it fills the entire
+ * screen, allowing edges to be drawn offscreen
+ *
+ * By default letterbox is used
*/
#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
/**
- * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
+ * A variable controlling whether the OpenGL render driver uses shaders if
+ * they are available.
*
- * This variable can be set to the following values:
- * "0" - Disable shaders
- * "1" - Enable shaders
+ * This variable can be set to the following values:
*
- * By default shaders are used if OpenGL supports them.
+ * - "0": Disable shaders
+ * - "1": Enable shaders
+ *
+ * By default shaders are used if OpenGL supports them.
*/
#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
/**
- * \brief A variable controlling the scaling quality
+ * A variable controlling the scaling quality
*
- * This variable can be set to the following values:
- * "0" or "nearest" - Nearest pixel sampling
- * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
- * "2" or "best" - Currently this is the same as "linear"
+ * This variable can be set to the following values:
*
- * By default nearest pixel sampling is used
+ * - "0" or "nearest": Nearest pixel sampling
+ * - "1" or "linear": Linear filtering (supported by OpenGL and Direct3D)
+ * - "2" or "best": Currently this is the same as "linear"
+ *
+ * By default nearest pixel sampling is used
*/
#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
/**
- * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
+ * A variable controlling whether updates to the SDL screen surface should be
+ * synchronized with the vertical refresh, to avoid tearing.
*
- * This variable can be set to the following values:
- * "0" - Disable vsync
- * "1" - Enable vsync
+ * This variable can be set to the following values:
*
- * By default SDL does not sync screen surface updates with vertical refresh.
+ * - "0": Disable vsync
+ * - "1": Enable vsync
+ *
+ * By default SDL does not sync screen surface updates with vertical refresh.
*/
#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
/**
- * \brief A variable controlling whether the Metal render driver select low power device over default one
+ * A variable controlling whether the Metal render driver select low power
+ * device over default one
*
- * This variable can be set to the following values:
- * "0" - Use the prefered OS device
- * "1" - Select a low power one
+ * This variable can be set to the following values:
*
- * By default the prefered OS device is used.
+ * - "0": Use the prefered OS device
+ * - "1": Select a low power one
+ *
+ * By default the prefered OS device is used.
*/
#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE"
/**
- * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS
+ * A variable containing a list of ROG gamepad capable mice.
*
- * This variable can be set to the following values:
- * "0" - It will be using VSYNC as defined in the main flag. Default
- * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
*
- * By default SDL does not enable the automatic VSYNC
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_ROG_GAMEPAD_MICE "SDL_ROG_GAMEPAD_MICE"
+
+/**
+ * A variable containing a list of devices that are not ROG gamepad capable
+ * mice.
+ *
+ * This will override SDL_HINT_ROG_GAMEPAD_MICE and the built in device list.
+ *
+ * The format of the string is a comma separated list of USB VID/PID pairs in
+ * hexadecimal form, e.g.
+ *
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
+ *
+ * The variable can also take the form of @file, in which case the named file
+ * will be loaded and interpreted as the value of the variable.
+ */
+#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED"
+
+/**
+ * A variable controlling if VSYNC is automatically disable if doesn't reach
+ * the enough FPS
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": It will be using VSYNC as defined in the main flag. Default
+ * - "1": If VSYNC was previously enabled, then it will disable VSYNC if
+ * doesn't reach enough speed
+ *
+ * By default SDL does not enable the automatic VSYNC
*/
#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC"
/**
- * \brief A variable to control whether the return key on the soft keyboard
- * should hide the soft keyboard on Android and iOS.
+ * A variable to control whether the return key on the soft keyboard should
+ * hide the soft keyboard on Android and iOS.
*
* The variable can be set to the following values:
- * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
- * "1" - The return key will hide the keyboard.
*
- * The value of this hint is used at runtime, so it can be changed at any time.
+ * - "0": The return key will be handled as a key event. This is the behaviour
+ * of SDL <= 2.0.3. (default)
+ * - "1": The return key will hide the keyboard.
+ *
+ * The value of this hint is used at runtime, so it can be changed at any
+ * time.
*/
#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
/**
- * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
+ * Tell SDL which Dispmanx layer to use on a Raspberry PI
*
* Also known as Z-order. The variable can take a negative or positive value.
* The default is 10000.
@@ -1517,7 +2062,7 @@ extern "C" {
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
/**
- * \brief Specify an "activity name" for screensaver inhibition.
+ * Specify an "activity name" for screensaver inhibition.
*
* Some platforms, notably Linux desktops, list the applications which are
* inhibiting the screensaver or other power-saving features.
@@ -1526,7 +2071,7 @@ extern "C" {
* SDL_DisableScreenSaver() is used (or the screensaver is automatically
* disabled). The contents of this hint are used when the screensaver is
* disabled. You should use a string that describes what your program is doing
- * (and, therefore, why the screensaver is disabled). For example, "Playing a
+ * (and, therefore, why the screensaver is disabled). For example, "Playing a
* game" or "Watching a video".
*
* Setting this to "" or leaving it unset will have SDL use a reasonable
@@ -1537,628 +2082,715 @@ extern "C" {
#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME"
/**
- * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.
+ * Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as
+ * realtime.
*
- * On some platforms, like Linux, a realtime priority thread may be subject to restrictions
- * that require special handling by the application. This hint exists to let SDL know that
- * the app is prepared to handle said restrictions.
+ * On some platforms, like Linux, a realtime priority thread may be subject to
+ * restrictions that require special handling by the application. This hint
+ * exists to let SDL know that the app is prepared to handle said
+ * restrictions.
*
- * On Linux, SDL will apply the following configuration to any thread that becomes realtime:
- * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
- * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
- * * Exceeding this limit will result in the kernel sending SIGKILL to the app,
- * * Refer to the man pages for more information.
+ * On Linux, SDL will apply the following configuration to any thread that
+ * becomes realtime:
*
- * This variable can be set to the following values:
- * "0" - default platform specific behaviour
- * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy
+ * - The SCHED_RESET_ON_FORK bit will be set on the scheduling policy.
+ * - An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
+ * - Exceeding this limit will result in the kernel sending SIGKILL to the
+ * app.
+ *
+ * Refer to the man pages for more information.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": default platform specific behaviour
+ * - "1": Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling
+ * policy
*/
#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
/**
-* \brief A string specifying additional information to use with SDL_SetThreadPriority.
-*
-* By default SDL_SetThreadPriority will make appropriate system changes in order to
-* apply a thread priority. For example on systems using pthreads the scheduler policy
-* is changed automatically to a policy that works well with a given priority.
-* Code which has specific requirements can override SDL's default behavior with this hint.
-*
-* pthread hint values are "current", "other", "fifo" and "rr".
-* Currently no other platform hint values are defined but may be in the future.
-*
-* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro
-* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME
-* after calling SDL_SetThreadPriority().
-*/
+ * A string specifying additional information to use with
+ * SDL_SetThreadPriority.
+ *
+ * By default SDL_SetThreadPriority will make appropriate system changes in
+ * order to apply a thread priority. For example on systems using pthreads the
+ * scheduler policy is changed automatically to a policy that works well with
+ * a given priority. Code which has specific requirements can override SDL's
+ * default behavior with this hint.
+ *
+ * pthread hint values are "current", "other", "fifo" and "rr". Currently no
+ * other platform hint values are defined but may be in the future.
+ */
#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY"
/**
-* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
-*
-* Use this hint in case you need to set SDL's threads stack size to other than the default.
-* This is specially useful if you build SDL against a non glibc libc library (such as musl) which
-* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
-* Support for this hint is currently available only in the pthread, Windows, and PSP backend.
-*
-* Instead of this hint, in 2.0.9 and later, you can use
-* SDL_CreateThreadWithStackSize(). This hint only works with the classic
-* SDL_CreateThread().
-*/
+ * A string specifying SDL's threads stack size in bytes or "0" for the
+ * backend's default size
+ *
+ * Use this hint in case you need to set SDL's threads stack size to other
+ * than the default. This is specially useful if you build SDL against a non
+ * glibc libc library (such as musl) which provides a relatively small default
+ * thread stack size (a few kilobytes versus the default 8MB glibc uses).
+ * Support for this hint is currently available only in the pthread, Windows,
+ * and PSP backend.
+ *
+ * Instead of this hint, in 2.0.9 and later, you can use
+ * SDL_CreateThreadWithStackSize(). This hint only works with the classic
+ * SDL_CreateThread().
+ */
#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE"
/**
- * \brief A variable that controls the timer resolution, in milliseconds.
+ * A variable that controls the timer resolution, in milliseconds.
*
- * The higher resolution the timer, the more frequently the CPU services
- * timer interrupts, and the more precise delays are, but this takes up
- * power and CPU time. This hint is only used on Windows.
+ * The higher resolution the timer, the more frequently the CPU services timer
+ * interrupts, and the more precise delays are, but this takes up power and
+ * CPU time. This hint is only used on Windows.
*
- * See this blog post for more information:
- * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
+ * See this blog post for more information:
+ * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
*
- * If this variable is set to "0", the system timer resolution is not set.
+ * If this variable is set to "0", the system timer resolution is not set.
*
- * The default value is "1". This hint may be set at any time.
+ * The default value is "1". This hint may be set at any time.
*/
#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
/**
- * \brief A variable controlling whether touch events should generate synthetic mouse events
+ * A variable controlling whether touch events should generate synthetic mouse
+ * events
*
- * This variable can be set to the following values:
- * "0" - Touch events will not generate mouse events
- * "1" - Touch events will generate mouse events
+ * This variable can be set to the following values:
*
- * By default SDL will generate mouse events for touch events
+ * - "0": Touch events will not generate mouse events
+ * - "1": Touch events will generate mouse events
+ *
+ * By default SDL will generate mouse events for touch events
*/
#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
/**
- * \brief A variable controlling which touchpad should generate synthetic mouse events
+ * A variable controlling which touchpad should generate synthetic mouse
+ * events
*
- * This variable can be set to the following values:
- * "0" - Only front touchpad should generate mouse events. Default
- * "1" - Only back touchpad should generate mouse events.
- * "2" - Both touchpads should generate mouse events.
+ * This variable can be set to the following values:
*
- * By default SDL will generate mouse events for all touch devices
+ * - "0": Only front touchpad should generate mouse events. Default
+ * - "1": Only back touchpad should generate mouse events.
+ * - "2": Both touchpads should generate mouse events.
+ *
+ * By default SDL will generate mouse events for all touch devices
*/
#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE"
/**
- * \brief A variable controlling whether the Android / tvOS remotes
- * should be listed as joystick devices, instead of sending keyboard events.
+ * A variable controlling whether the Android / tvOS remotes should be listed
+ * as joystick devices, instead of sending keyboard events.
*
- * This variable can be set to the following values:
- * "0" - Remotes send enter/escape/arrow key events
- * "1" - Remotes are available as 2 axis, 2 button joysticks (the default).
+ * This variable can be set to the following values:
+ *
+ * - "0": Remotes send enter/escape/arrow key events
+ * - "1": Remotes are available as 2 axis, 2 button joysticks (the default).
*/
#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
/**
- * \brief A variable controlling whether the screensaver is enabled.
+ * A variable controlling whether the screensaver is enabled.
*
- * This variable can be set to the following values:
- * "0" - Disable screensaver
- * "1" - Enable screensaver
+ * This variable can be set to the following values:
*
- * By default SDL will disable the screensaver.
+ * - "0": Disable screensaver
+ * - "1": Enable screensaver
+ *
+ * By default SDL will disable the screensaver.
*/
#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
/**
- * \brief Tell the video driver that we only want a double buffer.
+ * Tell the video driver that we only want a double buffer.
*
* By default, most lowlevel 2D APIs will use a triple buffer scheme that
* wastes no CPU time on waiting for vsync after issuing a flip, but
* introduces a frame of latency. On the other hand, using a double buffer
* scheme instead is recommended for cases where low latency is an important
- * factor because we save a whole frame of latency.
- * We do so by waiting for vsync immediately after issuing a flip, usually just
- * after eglSwapBuffers call in the backend's *_SwapWindow function.
+ * factor because we save a whole frame of latency. We do so by waiting for
+ * vsync immediately after issuing a flip, usually just after eglSwapBuffers
+ * call in the backend's *_SwapWindow function.
*
* Since it's driver-specific, it's only supported where possible and
* implemented. Currently supported the following drivers:
*
+ * - Wayland (wayland)
* - KMSDRM (kmsdrm)
* - Raspberry Pi (raspberrypi)
*/
#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER"
/**
- * \brief A variable controlling whether the EGL window is allowed to be
- * composited as transparent, rather than opaque.
+ * A variable controlling whether the EGL window is allowed to be composited
+ * as transparent, rather than opaque.
*
* Most window systems will always render windows opaque, even if the surface
- * format has an alpha channel. This is not always true, however, so by default
- * SDL will try to enforce opaque composition. To override this behavior, you
- * can set this hint to "1".
+ * format has an alpha channel. This is not always true, however, so by
+ * default SDL will try to enforce opaque composition. To override this
+ * behavior, you can set this hint to "1".
*/
#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY"
/**
- * \brief A variable controlling whether the graphics context is externally managed.
+ * A variable controlling whether the graphics context is externally managed.
*
* This variable can be set to the following values:
- * "0" - SDL will manage graphics contexts that are attached to windows.
- * "1" - Disable graphics context management on windows.
*
- * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
- * context will be automatically saved and restored when pausing the application. Additionally, some
- * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
- * behavior, which is desireable when the application manages the graphics context, such as
- * an externally managed OpenGL context or attaching a Vulkan surface to the window.
+ * - "0": SDL will manage graphics contexts that are attached to windows.
+ * - "1": Disable graphics context management on windows.
+ *
+ * By default SDL will manage OpenGL contexts in certain situations. For
+ * example, on Android the context will be automatically saved and restored
+ * when pausing the application. Additionally, some platforms will assume
+ * usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
+ * behavior, which is desireable when the application manages the graphics
+ * context, such as an externally managed OpenGL context or attaching a Vulkan
+ * surface to the window.
*/
#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
/**
- * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
+ * If set to 1, then do not allow high-DPI windows.
+ *
+ * ("Retina" on Mac and iOS)
*/
#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
/**
- * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
+ * A variable that dictates policy for fullscreen Spaces on Mac OS X.
*
- * This hint only applies to Mac OS X.
+ * This hint only applies to Mac OS X.
*
- * The variable can be set to the following values:
- * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- * button on their titlebars).
- * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- * button on their titlebars).
+ * The variable can be set to the following values:
*
- * The default value is "1". This hint must be set before any windows are created.
+ * - "0": Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
+ * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" button on their
+ * titlebars).
+ * - "1": Enable Spaces support (FULLSCREEN_DESKTOP will use them and
+ * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" button on their
+ * titlebars).
+ *
+ * The default value is "1". This hint must be set before any windows are
+ * created.
*/
#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
/**
- * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.
- * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're
- * seeing if "true" causes more problems than it solves in modern times.
+ * Minimize your SDL_Window if it loses key focus when in fullscreen mode.
*
+ * Defaults to false.
*/
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
/**
- * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used.
+ * A variable controlling whether the libdecor Wayland backend is allowed to
+ * be used.
*
- * This variable can be set to the following values:
- * "0" - libdecor use is disabled.
- * "1" - libdecor use is enabled (default).
+ * This variable can be set to the following values:
*
- * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
+ * - "0": libdecor use is disabled.
+ * - "1": libdecor use is enabled (default).
+ *
+ * libdecor is used over xdg-shell when xdg-decoration protocol is
+ * unavailable.
*/
#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
/**
- * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations.
+ * A variable controlling whether the libdecor Wayland backend is preferred
+ * over native decorations.
*
- * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is
- * available. (Note that, by default, libdecor will use xdg-decoration itself if available).
+ * When this hint is set, libdecor will be used to provide window decorations,
+ * even if xdg-decoration is available. (Note that, by default, libdecor will
+ * use xdg-decoration itself if available).
*
- * This variable can be set to the following values:
- * "0" - libdecor is enabled only if server-side decorations are unavailable.
- * "1" - libdecor is always enabled if available.
+ * This variable can be set to the following values:
*
- * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
+ * - "0": libdecor is enabled only if server-side decorations are unavailable.
+ * - "1": libdecor is always enabled if available.
+ *
+ * libdecor is used over xdg-shell when xdg-decoration protocol is
+ * unavailable.
*/
#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR"
/**
- * \brief A variable controlling whether video mode emulation is enabled under Wayland.
+ * A variable controlling whether video mode emulation is enabled under
+ * Wayland.
*
- * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application.
- * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled
- * desktop, the native display resolution.
+ * When this hint is set, a standard set of emulated CVT video modes will be
+ * exposed for use by the application. If it is disabled, the only modes
+ * exposed will be the logical desktop size and, in the case of a scaled
+ * desktop, the native display resolution.
*
- * This variable can be set to the following values:
- * "0" - Video mode emulation is disabled.
- * "1" - Video mode emulation is enabled.
+ * This variable can be set to the following values:
*
- * By default video mode emulation is enabled.
+ * - "0": Video mode emulation is disabled.
+ * - "1": Video mode emulation is enabled.
+ *
+ * By default video mode emulation is enabled.
*/
#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION"
/**
- * \brief Enable or disable mouse pointer warp emulation, needed by some older games.
+ * Enable or disable mouse pointer warp emulation, needed by some older games.
*
- * When this hint is set, any SDL will emulate mouse warps using relative mouse mode.
- * This is required for some older games (such as Source engine games), which warp the
- * mouse to the centre of the screen rather than using relative mouse motion. Note that
- * relative mouse mode may have different mouse acceleration behaviour than pointer warps.
+ * When this hint is set, any SDL will emulate mouse warps using relative
+ * mouse mode. This is required for some older games (such as Source engine
+ * games), which warp the mouse to the centre of the screen rather than using
+ * relative mouse motion. Note that relative mouse mode may have different
+ * mouse acceleration behaviour than pointer warps.
*
- * This variable can be set to the following values:
- * "0" - All mouse warps fail, as mouse warping is not available under wayland.
- * "1" - Some mouse warps will be emulated by forcing relative mouse mode.
+ * This variable can be set to the following values:
*
- * If not set, this is automatically enabled unless an application uses relative mouse
- * mode directly.
+ * - "0": All mouse warps fail, as mouse warping is not available under
+ * wayland.
+ * - "1": Some mouse warps will be emulated by forcing relative mouse mode.
+ *
+ * If not set, this is automatically enabled unless an application uses
+ * relative mouse mode directly.
*/
#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP"
/**
-* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
-*
-* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
-* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
-* created SDL_Window:
-*
-* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
-* needed for example when sharing an OpenGL context across multiple windows.
-*
-* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
-* OpenGL rendering.
-*
-* This variable can be set to the following values:
-* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
-* share a pixel format with.
-*/
+ * A variable that is the address of another SDL_Window* (as a hex string
+ * formatted with "%p").
+ *
+ * If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is
+ * set to has SDL_WINDOW_OPENGL set (and running on WGL only, currently), then
+ * two things will occur on the newly created SDL_Window:
+ *
+ * 1. Its pixel format will be set to the same pixel format as this
+ * SDL_Window. This is needed for example when sharing an OpenGL context
+ * across multiple windows.
+ *
+ * 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be
+ * used for OpenGL rendering.
+ *
+ * This variable can be set to the following values: The address (as a string
+ * "%p") of the SDL_Window* that new windows created with
+ * SDL_CreateWindowFrom() should share a pixel format with.
+ */
#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
/**
- * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL.
+ * When calling SDL_CreateWindowFrom(), make the window compatible with
+ * OpenGL.
*
* This variable can be set to the following values:
- * "0" - Don't add any graphics flags to the SDL_WindowFlags
- * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags
+ *
+ * - "0": Don't add any graphics flags to the SDL_WindowFlags
+ * - "1": Add SDL_WINDOW_OPENGL to the SDL_WindowFlags
*
* By default SDL will not make the foreign window compatible with OpenGL.
*/
#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL"
/**
- * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan.
+ * When calling SDL_CreateWindowFrom(), make the window compatible with
+ * Vulkan.
*
* This variable can be set to the following values:
- * "0" - Don't add any graphics flags to the SDL_WindowFlags
- * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags
+ *
+ * - "0": Don't add any graphics flags to the SDL_WindowFlags
+ * - "1": Add SDL_WINDOW_VULKAN to the SDL_WindowFlags
*
* By default SDL will not make the foreign window compatible with Vulkan.
*/
#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
/**
-* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
-*
-* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
-* can use two different sets of binaries, those compiled by the user from source
-* or those provided by the Chrome browser. In the later case, these binaries require
-* that SDL loads a DLL providing the shader compiler.
-*
-* This variable can be set to the following values:
-* "d3dcompiler_46.dll" - default, best for Vista or later.
-* "d3dcompiler_43.dll" - for XP support.
-* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
-*
-*/
+ * A variable specifying which shader compiler to preload when using the
+ * Chrome ANGLE binaries
+ *
+ * SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It can
+ * use two different sets of binaries, those compiled by the user from source
+ * or those provided by the Chrome browser. In the later case, these binaries
+ * require that SDL loads a DLL providing the shader compiler.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "d3dcompiler_46.dll: default, best for Vista or later.
+ * - "d3dcompiler_43.dll: for XP support.
+ * - "none": do not load any library, useful if you compiled ANGLE from source
+ * and included the compiler in your binaries.
+ */
#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER"
/**
- * \brief A variable controlling whether X11 should use GLX or EGL by default
+ * A variable controlling whether X11 should use GLX or EGL by default
*
* This variable can be set to the following values:
- * "0" - Use GLX
- * "1" - Use EGL
+ *
+ * - "0": Use GLX
+ * - "1": Use EGL
*
* By default SDL will use GLX when both are present.
*/
#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
+ * A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint
+ * should be used.
*
* This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
+ *
+ * - "0": Disable _NET_WM_BYPASS_COMPOSITOR
+ * - "1": Enable _NET_WM_BYPASS_COMPOSITOR
*
* By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- *
*/
#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
/**
- * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
+ * A variable controlling whether the X11 _NET_WM_PING protocol should be
+ * supported.
*
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_PING
- * "1" - Enable _NET_WM_PING
+ * This variable can be set to the following values:
*
- * By default SDL will use _NET_WM_PING, but for applications that know they
- * will not always be able to respond to ping requests in a timely manner they can
- * turn it off to avoid the window manager thinking the app is hung.
- * The hint is checked in CreateWindow.
+ * - "0": Disable _NET_WM_PING
+ * - "1": Enable _NET_WM_PING
+ *
+ * By default SDL will use _NET_WM_PING, but for applications that know they
+ * will not always be able to respond to ping requests in a timely manner they
+ * can turn it off to avoid the window manager thinking the app is hung. The
+ * hint is checked in CreateWindow.
*/
#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
/**
- * \brief A variable forcing the visual ID chosen for new X11 windows
- *
+ * A variable forcing the visual ID chosen for new X11 windows
*/
#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
/**
- * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used.
+ * A no-longer-used variable controlling whether the X11 Xinerama extension
+ * should be used.
*
- * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11.
- * Now SDL never uses Xinerama, and does not check for this hint at all.
- * The preprocessor define is left here for source compatibility.
+ * Before SDL 2.0.24, this would let apps and users disable Xinerama support
+ * on X11. Now SDL never uses Xinerama, and does not check for this hint at
+ * all. The preprocessor define is left here for source compatibility.
*/
#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
/**
- * \brief A variable controlling whether the X11 XRandR extension should be used.
+ * A variable controlling whether the X11 XRandR extension should be used.
*
- * This variable can be set to the following values:
- * "0" - Disable XRandR
- * "1" - Enable XRandR
+ * This variable can be set to the following values:
*
- * By default SDL will use XRandR.
+ * - "0": Disable XRandR
+ * - "1": Enable XRandR
+ *
+ * By default SDL will use XRandR.
*/
#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
/**
- * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used.
+ * A no-longer-used variable controlling whether the X11 VidMode extension
+ * should be used.
*
- * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11.
- * Now SDL never uses XVidMode, and does not check for this hint at all.
- * The preprocessor define is left here for source compatibility.
+ * Before SDL 2.0.24, this would let apps and users disable XVidMode support
+ * on X11. Now SDL never uses XVidMode, and does not check for this hint at
+ * all. The preprocessor define is left here for source compatibility.
*/
#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
/**
- * \brief Controls how the fact chunk affects the loading of a WAVE file.
+ * Controls how the fact chunk affects the loading of a WAVE file.
*
- * The fact chunk stores information about the number of samples of a WAVE
- * file. The Standards Update from Microsoft notes that this value can be used
- * to 'determine the length of the data in seconds'. This is especially useful
- * for compressed formats (for which this is a mandatory chunk) if they produce
- * multiple sample frames per block and truncating the block is not allowed.
- * The fact chunk can exactly specify how many sample frames there should be
- * in this case.
+ * The fact chunk stores information about the number of samples of a WAVE
+ * file. The Standards Update from Microsoft notes that this value can be used
+ * to 'determine the length of the data in seconds'. This is especially useful
+ * for compressed formats (for which this is a mandatory chunk) if they
+ * produce multiple sample frames per block and truncating the block is not
+ * allowed. The fact chunk can exactly specify how many sample frames there
+ * should be in this case.
*
- * Unfortunately, most application seem to ignore the fact chunk and so SDL
- * ignores it by default as well.
+ * Unfortunately, most application seem to ignore the fact chunk and so SDL
+ * ignores it by default as well.
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "truncate" - Use the number of samples to truncate the wave data if
- * the fact chunk is present and valid
- * "strict" - Like "truncate", but raise an error if the fact chunk
- * is invalid, not present for non-PCM formats, or if the
- * data chunk doesn't have that many samples
- * "ignorezero" - Like "truncate", but ignore fact chunk if the number of
- * samples is zero
- * "ignore" - Ignore fact chunk entirely (default)
+ * - "truncate": Use the number of samples to truncate the wave data if the
+ * fact chunk is present and valid
+ * - "strict": Like "truncate", but raise an error if the fact chunk is
+ * invalid, not present for non-PCM formats, or if the data chunk doesn't
+ * have that many samples
+ * - "ignorezero": Like "truncate", but ignore fact chunk if the number of
+ * samples is zero
+ * - "ignore": Ignore fact chunk entirely (default)
*/
#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
/**
- * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file.
+ * Controls how the size of the RIFF chunk affects the loading of a WAVE file.
*
- * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
- * file) is not always reliable. In case the size is wrong, it's possible to
- * just ignore it and step through the chunks until a fixed limit is reached.
+ * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
+ * file) is not always reliable. In case the size is wrong, it's possible to
+ * just ignore it and step through the chunks until a fixed limit is reached.
*
- * Note that files that have trailing data unrelated to the WAVE file or
- * corrupt files may slow down the loading process without a reliable boundary.
- * By default, SDL stops after 10000 chunks to prevent wasting time. Use the
- * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
+ * Note that files that have trailing data unrelated to the WAVE file or
+ * corrupt files may slow down the loading process without a reliable
+ * boundary. By default, SDL stops after 10000 chunks to prevent wasting time.
+ * Use the environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "force" - Always use the RIFF chunk size as a boundary for the chunk search
- * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default)
- * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB
- * "maximum" - Search for chunks until the end of file (not recommended)
+ * - "force": Always use the RIFF chunk size as a boundary for the chunk
+ * search
+ * - "ignorezero": Like "force", but a zero size searches up to 4 GiB
+ * (default)
+ * - "ignore": Ignore the RIFF chunk size and always search up to 4 GiB
+ * - "maximum": Search for chunks until the end of file (not recommended)
*/
#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
/**
- * \brief Controls how a truncated WAVE file is handled.
+ * Controls how a truncated WAVE file is handled.
*
- * A WAVE file is considered truncated if any of the chunks are incomplete or
- * the data chunk size is not a multiple of the block size. By default, SDL
- * decodes until the first incomplete block, as most applications seem to do.
+ * A WAVE file is considered truncated if any of the chunks are incomplete or
+ * the data chunk size is not a multiple of the block size. By default, SDL
+ * decodes until the first incomplete block, as most applications seem to do.
*
- * This variable can be set to the following values:
+ * This variable can be set to the following values:
*
- * "verystrict" - Raise an error if the file is truncated
- * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored
- * "dropframe" - Decode until the first incomplete sample frame
- * "dropblock" - Decode until the first incomplete block (default)
+ * - "verystrict": Raise an error if the file is truncated
+ * - "strict": Like "verystrict", but the size of the RIFF chunk is ignored
+ * - "dropframe": Decode until the first incomplete sample frame
+ * - "dropblock": Decode until the first incomplete block (default)
*/
#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
/**
- * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
- * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
- * thread's name, but it tends to cause problems with other debuggers,
- * and the .NET runtime. Note that SDL 2.0.6 and later will still use
- * the (safer) SetThreadDescription API, introduced in the Windows 10
- * Creators Update, if available.
+ * Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
+ *
+ * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
+ * thread's name, but it tends to cause problems with other debuggers, and the
+ * .NET runtime. Note that SDL 2.0.6 and later will still use the (safer)
+ * SetThreadDescription API, introduced in the Windows 10 Creators Update, if
+ * available.
*
* The variable can be set to the following values:
- * "0" - SDL will raise the 0x406D1388 Exception to name threads.
- * This is the default behavior of SDL <= 2.0.4.
- * "1" - SDL will not raise this exception, and threads will be unnamed. (default)
- * This is necessary with .NET languages or debuggers that aren't Visual Studio.
+ *
+ * - "0": SDL will raise the 0x406D1388 Exception to name threads. This is the
+ * default behavior of SDL <= 2.0.4.
+ * - "1": SDL will not raise this exception, and threads will be unnamed.
+ * (default) This is necessary with .NET languages or debuggers that aren't
+ * Visual Studio.
*/
#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
/**
- * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic).
+ * Controls whether menus can be opened with their keyboard shortcut
+ * (Alt+mnemonic).
*
- * If the mnemonics are enabled, then menus can be opened by pressing the Alt
- * key and the corresponding mnemonic (for example, Alt+F opens the File menu).
- * However, in case an invalid mnemonic is pressed, Windows makes an audible
- * beep to convey that nothing happened. This is true even if the window has
- * no menu at all!
+ * If the mnemonics are enabled, then menus can be opened by pressing the Alt
+ * key and the corresponding mnemonic (for example, Alt+F opens the File
+ * menu). However, in case an invalid mnemonic is pressed, Windows makes an
+ * audible beep to convey that nothing happened. This is true even if the
+ * window has no menu at all!
*
- * Because most SDL applications don't have menus, and some want to use the Alt
- * key for other purposes, SDL disables mnemonics (and the beeping) by default.
+ * Because most SDL applications don't have menus, and some want to use the
+ * Alt key for other purposes, SDL disables mnemonics (and the beeping) by
+ * default.
*
- * Note: This also affects keyboard events: with mnemonics enabled, when a
- * menu is opened from the keyboard, you will not receive a KEYUP event for
- * the mnemonic key, and *might* not receive one for Alt.
+ * Note: This also affects keyboard events: with mnemonics enabled, when a
+ * menu is opened from the keyboard, you will not receive a KEYUP event for
+ * the mnemonic key, and *might* not receive one for Alt.
*
- * This variable can be set to the following values:
- * "0" - Alt+mnemonic does nothing, no beeping. (default)
- * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep.
+ * This variable can be set to the following values:
+ *
+ * - "0": Alt+mnemonic does nothing, no beeping. (default)
+ * - "1": Alt+mnemonic opens menus, invalid mnemonics produce a beep.
*/
#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS"
/**
- * \brief A variable controlling whether the windows message loop is processed by SDL
+ * A variable controlling whether the windows message loop is processed by SDL
*
- * This variable can be set to the following values:
- * "0" - The window message loop is not run
- * "1" - The window message loop is processed in SDL_PumpEvents()
+ * This variable can be set to the following values:
*
- * By default SDL will process the windows message loop
+ * - "0": The window message loop is not run
+ * - "1": The window message loop is processed in SDL_PumpEvents()
+ *
+ * By default SDL will process the windows message loop
*/
#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
/**
- * \brief Force SDL to use Critical Sections for mutexes on Windows.
- * On Windows 7 and newer, Slim Reader/Writer Locks are available.
- * They offer better performance, allocate no kernel ressources and
- * use less memory. SDL will fall back to Critical Sections on older
- * OS versions or if forced to by this hint.
+ * Force SDL to use Critical Sections for mutexes on Windows.
*
- * This variable can be set to the following values:
- * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default)
- * "1" - Force the use of Critical Sections in all cases.
+ * On Windows 7 and newer, Slim Reader/Writer Locks are available. They offer
+ * better performance, allocate no kernel resources and use less memory. SDL
+ * will fall back to Critical Sections on older OS versions or if forced to by
+ * this hint.
*
+ * This variable can be set to the following values:
+ *
+ * - "0": Use SRW Locks when available. If not, fall back to Critical
+ * Sections. (default)
+ * - "1": Force the use of Critical Sections in all cases.
*/
#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS"
/**
- * \brief Force SDL to use Kernel Semaphores on Windows.
- * Kernel Semaphores are inter-process and require a context
- * switch on every interaction. On Windows 8 and newer, the
- * WaitOnAddress API is available. Using that and atomics to
- * implement semaphores increases performance.
- * SDL will fall back to Kernel Objects on older OS versions
- * or if forced to by this hint.
+ * Force SDL to use Kernel Semaphores on Windows.
*
- * This variable can be set to the following values:
- * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default)
- * "1" - Force the use of Kernel Objects in all cases.
+ * Kernel Semaphores are inter-process and require a context switch on every
+ * interaction. On Windows 8 and newer, the WaitOnAddress API is available.
+ * Using that and atomics to implement semaphores increases performance. SDL
+ * will fall back to Kernel Objects on older OS versions or if forced to by
+ * this hint.
*
+ * This variable can be set to the following values:
+ *
+ * - "0": Use Atomics and WaitOnAddress API when available. If not, fall back
+ * to Kernel Objects. (default)
+ * - "1": Force the use of Kernel Objects in all cases.
*/
#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"
/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform
+ * A variable to specify custom icon resource id from RC file on Windows
+ * platform
*/
#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
+
+/**
+ * A variable to specify custom icon resource id from RC file on Windows
+ * platform
+ */
#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
/**
- * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
+ * Tell SDL not to generate window-close events for Alt+F4 on Windows.
*
* The variable can be set to the following values:
- * "0" - SDL will generate a window-close event when it sees Alt+F4.
- * "1" - SDL will only do normal key handling for Alt+F4.
+ *
+ * - "0": SDL will generate a window-close event when it sees Alt+F4.
+ * - "1": SDL will only do normal key handling for Alt+F4.
*/
#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
/**
- * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.
- * Direct3D 9Ex contains changes to state management that can eliminate device
- * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require
- * some changes to your application to cope with the new behavior, so this
- * is disabled by default.
+ * Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.
*
- * This hint must be set before initializing the video subsystem.
+ * Direct3D 9Ex contains changes to state management that can eliminate device
+ * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may
+ * require some changes to your application to cope with the new behavior, so
+ * this is disabled by default.
*
- * For more information on Direct3D 9Ex, see:
- * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex
- * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements
+ * This hint must be set before initializing the video subsystem.
*
- * This variable can be set to the following values:
- * "0" - Use the original Direct3D 9 API (default)
- * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable)
+ * For more information on Direct3D 9Ex, see: -
+ * https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex
+ * -
+ * https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements
*
+ * This variable can be set to the following values:
+ *
+ * - "0": Use the original Direct3D 9 API (default)
+ * - "1": Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex
+ * is unavailable)
*/
#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX"
/**
- * \brief Controls whether SDL will declare the process to be DPI aware.
+ * Controls whether SDL will declare the process to be DPI aware.
*
- * This hint must be set before initializing the video subsystem.
+ * This hint must be set before initializing the video subsystem.
*
- * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with
- * a DPI scale factor.
+ * The main purpose of declaring DPI awareness is to disable OS bitmap scaling
+ * of SDL windows on monitors with a DPI scale factor.
*
- * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext)
- * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel
- * even on high-DPI displays.
+ * This hint is equivalent to requesting DPI awareness via external means
+ * (e.g. calling SetProcessDpiAwarenessContext) and does not cause SDL to use
+ * a virtualized coordinate system, so it will generally give you 1 SDL
+ * coordinate = 1 pixel even on high-DPI displays.
*
- * For more information, see:
- * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
+ * For more information, see:
+ * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
*
- * This variable can be set to the following values:
- * "" - Do not change the DPI awareness (default).
- * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later).
- * "system" - Request system DPI awareness. (Vista and later).
- * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later).
- * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later).
- * The most visible difference from "permonitor" is that window title bar will be scaled
- * to the visually correct size when dragging between monitors with different scale factors.
- * This is the preferred DPI awareness level.
+ * This variable can be set to the following values:
*
- * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best
- * available match.
+ * - "": Do not change the DPI awareness (default).
+ * - "unaware": Declare the process as DPI unaware. (Windows 8.1 and later).
+ * - "system": Request system DPI awareness. (Vista and later).
+ * - "permonitor": Request per-monitor DPI awareness. (Windows 8.1 and later).
+ * - "permonitorv2": Request per-monitor V2 DPI awareness. (Windows 10,
+ * version 1607 and later). The most visible difference from "permonitor" is
+ * that window title bar will be scaled to the visually correct size when
+ * dragging between monitors with different scale factors. This is the
+ * preferred DPI awareness level.
+ *
+ * If the requested DPI awareness is not available on the currently running
+ * OS, SDL will try to request the best available match.
*/
#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS"
/**
- * \brief Uses DPI-scaled points as the SDL coordinate system on Windows.
+ * Uses DPI-scaled points as the SDL coordinate system on Windows.
*
- * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere.
- * This means windows will be appropriately sized, even when created on high-DPI displays with scaling.
+ * This changes the SDL coordinate system units to be DPI-scaled points,
+ * rather than pixels everywhere. This means windows will be appropriately
+ * sized, even when created on high-DPI displays with scaling.
*
- * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings,
- * will create a window with an 800x600 client area (in pixels).
+ * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling
+ * in Windows display settings, will create a window with an 800x600 client
+ * area (in pixels).
*
- * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary),
- * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows.
+ * Setting this to "1" implicitly requests process DPI awareness (setting
+ * SDL_WINDOWS_DPI_AWARENESS is unnecessary), and forces
+ * SDL_WINDOW_ALLOW_HIGHDPI on all windows.
*
- * This variable can be set to the following values:
- * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging
- * between monitors with different scale factors (unless this is performed by
- * Windows itself, which is the case when the process is DPI unaware).
- * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on
- * displays with non-100% scale factors.
+ * This variable can be set to the following values:
+ *
+ * - "0": SDL coordinates equal Windows coordinates. No automatic window
+ * resizing when dragging between monitors with different scale factors
+ * (unless this is performed by Windows itself, which is the case when the
+ * process is DPI unaware).
+ * - "1": SDL coordinates are in DPI-scaled points. Automatically resize
+ * windows as needed on displays with non-100% scale factors.
*/
#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING"
/**
- * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
+ * A variable controlling whether the window frame and title bar are
+ * interactive when the cursor is hidden
*
- * This variable can be set to the following values:
- * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- * "1" - The window frame is interactive when the cursor is hidden
+ * This variable can be set to the following values:
*
- * By default SDL will allow interaction with the window frame when the cursor is hidden
+ * - "0": The window frame is not interactive when the cursor is hidden (no
+ * move, resize, etc)
+ * - "1": The window frame is interactive when the cursor is hidden
+ *
+ * By default SDL will allow interaction with the window frame when the cursor
+ * is hidden
*/
#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
/**
-* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called
-*
-* This variable can be set to the following values:
-* "0" - The window is activated when the SDL_ShowWindow function is called
-* "1" - The window is not activated when the SDL_ShowWindow function is called
-*
-* By default SDL will activate the window when the SDL_ShowWindow function is called
-*/
+ * A variable controlling whether the window is activated when the
+ * SDL_ShowWindow function is called
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": The window is activated when the SDL_ShowWindow function is called
+ * - "1": The window is not activated when the SDL_ShowWindow function is
+ * called
+ *
+ * By default SDL will activate the window when the SDL_ShowWindow function is
+ * called
+ */
#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN"
-/** \brief Allows back-button-press events on Windows Phone to be marked as handled
+/** Allows back-button-press events on Windows Phone to be marked as handled
*
* Windows Phone devices typically feature a Back button. When pressed,
* the OS will emit back-button-press events, which apps are expected to
@@ -2206,11 +2838,12 @@ extern "C" {
*
* More details on back button behavior in Windows Phone apps can be found
* at the following page, on Microsoft's developer site:
+ *
* http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
*/
#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
-/** \brief Label text for a WinRT app's privacy policy link
+/** Label text for a WinRT app's privacy policy link
*
* Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
* Microsoft mandates that this policy be available via the Windows Settings charm.
@@ -2232,221 +2865,267 @@ extern "C" {
#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
/**
- * \brief A URL to a WinRT app's privacy policy
+ * A URL to a WinRT app's privacy policy
*
- * All network-enabled WinRT apps must make a privacy policy available to its
- * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- * be available in the Windows Settings charm, as accessed from within the app.
- * SDL provides code to add a URL-based link there, which can point to the app's
- * privacy policy.
+ * All network-enabled WinRT apps must make a privacy policy available to its
+ * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be be
+ * available in the Windows Settings charm, as accessed from within the app.
+ * SDL provides code to add a URL-based link there, which can point to the
+ * app's privacy policy.
*
- * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * before calling any SDL_Init() functions. The contents of the hint should
- * be a valid URL. For example, "http://www.example.com".
+ * To setup a URL to an app's privacy policy, set
+ * SDL_HINT_WINRT_PRIVACY_POLICY_URL before calling any SDL_Init() functions.
+ * The contents of the hint should be a valid URL. For example,
+ * "http://www.example.com".
*
- * The default value is "", which will prevent SDL from adding a privacy policy
- * link to the Settings charm. This hint should only be set during app init.
+ * The default value is "", which will prevent SDL from adding a privacy
+ * policy link to the Settings charm. This hint should only be set during app
+ * init.
*
- * The label text of an app's "Privacy Policy" link may be customized via another
- * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
+ * The label text of an app's "Privacy Policy" link may be customized via
+ * another hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
*
- * Please note that on Windows Phone, Microsoft does not provide standard UI
- * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * will not get used on that platform. Network-enabled phone apps should display
- * their privacy policy through some other, in-app means.
+ * Please note that on Windows Phone, Microsoft does not provide standard UI
+ * for displaying a privacy policy link, and as such,
+ * SDL_HINT_WINRT_PRIVACY_POLICY_URL will not get used on that platform.
+ * Network-enabled phone apps should display their privacy policy through some
+ * other, in-app means.
*/
#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
/**
- * \brief Mark X11 windows as override-redirect.
+ * Mark X11 windows as override-redirect.
*
- * If set, this _might_ increase framerate at the expense of the desktop
- * not working as expected. Override-redirect windows aren't noticed by the
- * window manager at all.
+ * If set, this _might_ increase framerate at the expense of the desktop not
+ * working as expected. Override-redirect windows aren't noticed by the window
+ * manager at all.
*
- * You should probably only use this for fullscreen windows, and you probably
- * shouldn't even use it for that. But it's here if you want to try!
+ * You should probably only use this for fullscreen windows, and you probably
+ * shouldn't even use it for that. But it's here if you want to try!
*/
#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
/**
- * \brief A variable that lets you disable the detection and use of Xinput gamepad devices
+ * A variable that lets you disable the detection and use of Xinput gamepad
+ * devices
*
- * The variable can be set to the following values:
- * "0" - Disable XInput detection (only uses direct input)
- * "1" - Enable XInput detection (the default)
+ * The variable can be set to the following values:
+ *
+ * - "0": Disable XInput detection (only uses direct input)
+ * - "1": Enable XInput detection (the default)
*/
#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
- /**
- * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices
- *
- * The variable can be set to the following values:
- * "0" - Disable DirectInput detection (only uses XInput)
- * "1" - Enable DirectInput detection (the default)
- */
+/**
+ * A variable that lets you disable the detection and use of DirectInput
+ * gamepad devices
+ *
+ * The variable can be set to the following values:
+ *
+ * - "0": Disable DirectInput detection (only uses XInput)
+ * - "1": Enable DirectInput detection (the default)
+ */
#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED"
/**
- * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
+ * A variable that causes SDL to use the old axis and button mapping for
+ * XInput devices.
*
- * This hint is for backwards compatibility only and will be removed in SDL 2.1
+ * This hint is for backwards compatibility only and will be removed in SDL
+ * 2.1
*
- * The default value is "0". This hint must be set before SDL_Init()
+ * The default value is "0". This hint must be set before SDL_Init()
*/
#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
/**
- * \brief A variable that causes SDL to not ignore audio "monitors"
+ * A variable that causes SDL to not ignore audio "monitors"
*
- * This is currently only used for PulseAudio and ignored elsewhere.
+ * This is currently only used for PulseAudio and ignored elsewhere.
*
- * By default, SDL ignores audio devices that aren't associated with physical
- * hardware. Changing this hint to "1" will expose anything SDL sees that
- * appears to be an audio source or sink. This will add "devices" to the list
- * that the user probably doesn't want or need, but it can be useful in
- * scenarios where you want to hook up SDL to some sort of virtual device,
- * etc.
+ * By default, SDL ignores audio devices that aren't associated with physical
+ * hardware. Changing this hint to "1" will expose anything SDL sees that
+ * appears to be an audio source or sink. This will add "devices" to the list
+ * that the user probably doesn't want or need, but it can be useful in
+ * scenarios where you want to hook up SDL to some sort of virtual device,
+ * etc.
*
- * The default value is "0". This hint must be set before SDL_Init().
+ * The default value is "0". This hint must be set before SDL_Init().
*
- * This hint is available since SDL 2.0.16. Before then, virtual devices are
- * always ignored.
+ * This hint is available since SDL 2.0.16. Before then, virtual devices are
+ * always ignored.
*/
#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS"
/**
- * \brief A variable that forces X11 windows to create as a custom type.
+ * A variable that forces X11 windows to create as a custom type.
*
- * This is currently only used for X11 and ignored elsewhere.
+ * This is currently only used for X11 and ignored elsewhere.
*
- * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property
- * to report to the window manager the type of window it wants to create.
- * This might be set to various things if SDL_WINDOW_TOOLTIP or
- * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that
- * haven't set a specific type, this hint can be used to specify a custom
- * type. For example, a dock window might set this to
- * "_NET_WM_WINDOW_TYPE_DOCK".
+ * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property to
+ * report to the window manager the type of window it wants to create. This
+ * might be set to various things if SDL_WINDOW_TOOLTIP or
+ * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that
+ * haven't set a specific type, this hint can be used to specify a custom
+ * type. For example, a dock window might set this to
+ * "_NET_WM_WINDOW_TYPE_DOCK".
*
- * If not set or set to "", this hint is ignored. This hint must be set
- * before the SDL_CreateWindow() call that it is intended to affect.
+ * If not set or set to "", this hint is ignored. This hint must be set before
+ * the SDL_CreateWindow() call that it is intended to affect.
*
- * This hint is available since SDL 2.0.22.
+ * This hint is available since SDL 2.0.22.
*/
#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE"
/**
- * \brief A variable that decides whether to send SDL_QUIT when closing the final window.
+ * A variable that decides whether to send SDL_QUIT when closing the final
+ * window.
*
- * By default, SDL sends an SDL_QUIT event when there is only one window
- * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most
- * apps would also take the loss of this window as a signal to terminate the
- * program.
+ * By default, SDL sends an SDL_QUIT event when there is only one window and
+ * it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most apps
+ * would also take the loss of this window as a signal to terminate the
+ * program.
*
- * However, it's not unreasonable in some cases to have the program continue
- * to live on, perhaps to create new windows later.
+ * However, it's not unreasonable in some cases to have the program continue
+ * to live on, perhaps to create new windows later.
*
- * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event
- * when the final window is requesting to close. Note that in this case,
- * there are still other legitimate reasons one might get an SDL_QUIT
- * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c)
- * on Unix, etc.
+ * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event when
+ * the final window is requesting to close. Note that in this case, there are
+ * still other legitimate reasons one might get an SDL_QUIT event: choosing
+ * "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) on Unix, etc.
*
- * The default value is "1". This hint can be changed at any time.
+ * The default value is "1". This hint can be changed at any time.
*
- * This hint is available since SDL 2.0.22. Before then, you always get
- * an SDL_QUIT event when closing the final window.
+ * This hint is available since SDL 2.0.22. Before then, you always get an
+ * SDL_QUIT event when closing the final window.
*/
#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE"
/**
- * \brief A variable that decides what video backend to use.
+ * A variable that decides what video backend to use.
*
- * By default, SDL will try all available video backends in a reasonable
- * order until it finds one that can work, but this hint allows the app
- * or user to force a specific target, such as "x11" if, say, you are
- * on Wayland but want to try talking to the X server instead.
+ * By default, SDL will try all available video backends in a reasonable order
+ * until it finds one that can work, but this hint allows the app or user to
+ * force a specific target, such as "x11" if, say, you are on Wayland but want
+ * to try talking to the X server instead.
*
- * This functionality has existed since SDL 2.0.0 (indeed, before that)
- * but before 2.0.22 this was an environment variable only. In 2.0.22,
- * it was upgraded to a full SDL hint, so you can set the environment
- * variable as usual or programatically set the hint with SDL_SetHint,
- * which won't propagate to child processes.
+ * This functionality has existed since SDL 2.0.0 (indeed, before that) but
+ * before 2.0.22 this was an environment variable only. In 2.0.22, it was
+ * upgraded to a full SDL hint, so you can set the environment variable as
+ * usual or programatically set the hint with SDL_SetHint, which won't
+ * propagate to child processes.
*
- * The default value is unset, in which case SDL will try to figure out
- * the best video backend on your behalf. This hint needs to be set
- * before SDL_Init() is called to be useful.
+ * The default value is unset, in which case SDL will try to figure out the
+ * best video backend on your behalf. This hint needs to be set before
+ * SDL_Init() is called to be useful.
*
- * This hint is available since SDL 2.0.22. Before then, you could set
- * the environment variable to get the same effect.
+ * This hint is available since SDL 2.0.22. Before then, you could set the
+ * environment variable to get the same effect.
*/
#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER"
/**
- * \brief A variable that decides what audio backend to use.
+ * A variable that decides what audio backend to use.
*
- * By default, SDL will try all available audio backends in a reasonable
- * order until it finds one that can work, but this hint allows the app
- * or user to force a specific target, such as "alsa" if, say, you are
- * on PulseAudio but want to try talking to the lower level instead.
+ * By default, SDL will try all available audio backends in a reasonable order
+ * until it finds one that can work, but this hint allows the app or user to
+ * force a specific target, such as "alsa" if, say, you are on PulseAudio but
+ * want to try talking to the lower level instead.
*
- * This functionality has existed since SDL 2.0.0 (indeed, before that)
- * but before 2.0.22 this was an environment variable only. In 2.0.22,
- * it was upgraded to a full SDL hint, so you can set the environment
- * variable as usual or programatically set the hint with SDL_SetHint,
- * which won't propagate to child processes.
+ * This functionality has existed since SDL 2.0.0 (indeed, before that) but
+ * before 2.0.22 this was an environment variable only. In 2.0.22, it was
+ * upgraded to a full SDL hint, so you can set the environment variable as
+ * usual or programatically set the hint with SDL_SetHint, which won't
+ * propagate to child processes.
*
- * The default value is unset, in which case SDL will try to figure out
- * the best audio backend on your behalf. This hint needs to be set
- * before SDL_Init() is called to be useful.
+ * The default value is unset, in which case SDL will try to figure out the
+ * best audio backend on your behalf. This hint needs to be set before
+ * SDL_Init() is called to be useful.
*
- * This hint is available since SDL 2.0.22. Before then, you could set
- * the environment variable to get the same effect.
+ * This hint is available since SDL 2.0.22. Before then, you could set the
+ * environment variable to get the same effect.
*/
#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER"
/**
- * \brief A variable that decides what KMSDRM device to use.
+ * A variable that decides what KMSDRM device to use.
*
- * Internally, SDL might open something like "/dev/dri/cardNN" to
- * access KMSDRM functionality, where "NN" is a device index number.
+ * Internally, SDL might open something like "/dev/dri/cardNN" to access
+ * KMSDRM functionality, where "NN" is a device index number.
*
- * SDL makes a guess at the best index to use (usually zero), but the
- * app or user can set this hint to a number between 0 and 99 to
- * force selection.
+ * SDL makes a guess at the best index to use (usually zero), but the app or
+ * user can set this hint to a number between 0 and 99 to force selection.
*
- * This hint is available since SDL 2.24.0.
+ * This hint is available since SDL 2.24.0.
*/
#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX"
/**
- * \brief A variable that treats trackpads as touch devices.
+ * A variable that treats trackpads as touch devices.
*
- * On macOS (and possibly other platforms in the future), SDL will report
- * touches on a trackpad as mouse input, which is generally what users
- * expect from this device; however, these are often actually full
- * multitouch-capable touch devices, so it might be preferable to some apps
- * to treat them as such.
+ * On macOS (and possibly other platforms in the future), SDL will report
+ * touches on a trackpad as mouse input, which is generally what users expect
+ * from this device; however, these are often actually full multitouch-capable
+ * touch devices, so it might be preferable to some apps to treat them as
+ * such.
*
- * Setting this hint to true will make the trackpad input report as a
- * multitouch device instead of a mouse. The default is false.
+ * Setting this hint to true will make the trackpad input report as a
+ * multitouch device instead of a mouse. The default is false.
*
- * Note that most platforms don't support this hint. As of 2.24.0, it
- * only supports MacBooks' trackpads on macOS. Others may follow later.
+ * Note that most platforms don't support this hint. As of 2.24.0, it only
+ * supports MacBooks' trackpads on macOS. Others may follow later.
*
- * This hint is checked during SDL_Init and can not be changed after.
+ * This hint is checked during SDL_Init and can not be changed after.
*
- * This hint is available since SDL 2.24.0.
+ * This hint is available since SDL 2.24.0.
*/
#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY"
+/**
+ * Cause SDL to call dbus_shutdown() on quit.
+ *
+ * This is useful as a debug tool to validate memory leaks, but shouldn't ever
+ * be set in production applications, as other libraries used by the
+ * application might use dbus under the hood and this cause cause crashes if
+ * they continue after SDL_Quit().
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": SDL will not call dbus_shutdown() on quit (default)
+ * - "1": SDL will call dbus_shutdown() on quit
+ *
+ * This hint is available since SDL 2.30.0.
+ */
+#define SDL_HINT_SHUTDOWN_DBUS_ON_QUIT "SDL_SHUTDOWN_DBUS_ON_QUIT"
/**
- * \brief An enumeration of hint priorities
+ * Specify if SDL_RWFromFile should use the resource dir on Apple platforms.
+ *
+ * SDL2 has always done this on Apple platforms, but it can be surprising to
+ * try opening a path to discover that SDL adjusts the path to elsewhere, so
+ * this hint allows that behavior to be disabled.
+ *
+ * If running from a App Bundle, this will be MyApp.app/Contents/Resources. If
+ * running as a normal Unix-like process, this will be the directory where the
+ * running binary lives. Setting this hint to 0 avoids this and just uses the
+ * requested path as-is.
+ *
+ * This variable can be set to the following values:
+ *
+ * - "0": SDL will not use the app resource directory.
+ * - "1": SDL will use the app's resource directory (default).
+ *
+ * This hint is available since SDL 2.32.0.
*/
-typedef enum
+#define SDL_HINT_APPLE_RWFROMFILE_USE_RESOURCES "SDL_APPLE_RWFROMFILE_USE_RESOURCES"
+
+
+/**
+ * An enumeration of hint priorities
+ */
+typedef enum SDL_HintPriority
{
SDL_HINT_DEFAULT,
SDL_HINT_NORMAL,
@@ -2461,9 +3140,9 @@ typedef enum
* value. Hints will replace existing hints of their priority and lower.
* Environment variables are considered to have override priority.
*
- * \param name the hint to set
- * \param value the value of the hint variable
- * \param priority the SDL_HintPriority level for the hint
+ * \param name the hint to set.
+ * \param value the value of the hint variable.
+ * \param priority the SDL_HintPriority level for the hint.
* \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -2482,8 +3161,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
* variable that takes precedence. You can use SDL_SetHintWithPriority() to
* set the hint with override priority instead.
*
- * \param name the hint to set
- * \param value the value of the hint variable
+ * \param name the hint to set.
+ * \param value the value of the hint variable.
* \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -2501,7 +3180,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
* the environment isn't set. Callbacks will be called normally with this
* change.
*
- * \param name the hint to set
+ * \param name the hint to set.
* \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.24.0.
@@ -2529,7 +3208,7 @@ extern DECLSPEC void SDLCALL SDL_ResetHints(void);
/**
* Get the value of a hint.
*
- * \param name the hint to query
+ * \param name the hint to query.
* \returns the string value of a hint or NULL if the hint isn't set.
*
* \since This function is available since SDL 2.0.0.
@@ -2542,8 +3221,8 @@ extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
/**
* Get the boolean value of a hint variable.
*
- * \param name the name of the hint to get the boolean value from
- * \param default_value the value to return if the hint does not exist
+ * \param name the name of the hint to get the boolean value from.
+ * \param default_value the value to return if the hint does not exist.
* \returns the boolean value of a hint or the provided default value if the
* hint does not exist.
*
@@ -2557,20 +3236,20 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool d
/**
* Type definition of the hint callback function.
*
- * \param userdata what was passed as `userdata` to SDL_AddHintCallback()
- * \param name what was passed as `name` to SDL_AddHintCallback()
- * \param oldValue the previous hint value
- * \param newValue the new value hint is to be set to
+ * \param userdata what was passed as `userdata` to SDL_AddHintCallback().
+ * \param name what was passed as `name` to SDL_AddHintCallback().
+ * \param oldValue the previous hint value.
+ * \param newValue the new value hint is to be set to.
*/
typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
/**
* Add a function to watch a particular hint.
*
- * \param name the hint to watch
+ * \param name the hint to watch.
* \param callback An SDL_HintCallback function that will be called when the
- * hint value changes
- * \param userdata a pointer to pass to the callback function
+ * hint value changes.
+ * \param userdata a pointer to pass to the callback function.
*
* \since This function is available since SDL 2.0.0.
*
@@ -2583,10 +3262,10 @@ extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
/**
* Remove a function watching a particular hint.
*
- * \param name the hint being watched
+ * \param name the hint being watched.
* \param callback An SDL_HintCallback function that will be called when the
- * hint value changes
- * \param userdata a pointer being passed to the callback function
+ * hint value changes.
+ * \param userdata a pointer being passed to the callback function.
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_joystick.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_joystick.h
index b9b4f6228..668db5e30 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_joystick.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_joystick.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,22 +20,26 @@
*/
/**
- * \file SDL_joystick.h
+ * # CategoryJoystick
*
- * Include file for SDL joystick event handling
+ * Include file for SDL joystick event handling
*
- * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
- * behind a device_index changing as joysticks are plugged and unplugged.
+ * The term "device_index" identifies currently plugged in joystick devices
+ * between 0 and SDL_NumJoysticks(), with the exact joystick behind a
+ * device_index changing as joysticks are plugged and unplugged.
*
- * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
- * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
+ * The term "instance_id" is the current instantiation of a joystick device in
+ * the system, if the joystick is removed and then re-inserted then it will
+ * get a new instance_id, instance_id's are monotonically increasing
+ * identifiers of a joystick plugged in.
*
* The term "player_index" is the number assigned to a player on a specific
- * controller. For XInput controllers this returns the XInput user index.
- * Many joysticks will not be able to supply this information.
+ * controller. For XInput controllers this returns the XInput user index. Many
+ * joysticks will not be able to supply this information.
*
- * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
- * the device (a X360 wired controller for example). This identifier is platform dependent.
+ * The term JoystickGUID is a stable 128-bit identifier for a joystick device
+ * that does not change over time, it identifies class of the device (a X360
+ * wired controller for example). This identifier is platform dependent.
*/
#ifndef SDL_joystick_h_
@@ -56,7 +60,7 @@ extern "C" {
* \file SDL_joystick.h
*
* In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
+ * with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
* for joysticks, and load appropriate drivers.
*
* If you would like to receive joystick updates while the application
@@ -73,15 +77,21 @@ extern SDL_mutex *SDL_joystick_lock;
struct _SDL_Joystick;
typedef struct _SDL_Joystick SDL_Joystick;
-/* A structure that encodes the stable unique id for a joystick device */
+/**
+ * A structure that encodes the stable unique id for a joystick device.
+ *
+ * This is just a standard SDL_GUID by a different name.
+ */
typedef SDL_GUID SDL_JoystickGUID;
/**
- * This is a unique ID for a joystick for the time it is connected to the system,
- * and is never reused for the lifetime of the application. If the joystick is
- * disconnected and reconnected, it will get a new ID.
+ * This is a unique ID for a joystick for the time it is connected to the
+ * system, and is never reused for the lifetime of the application.
*
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
+ * If the joystick is disconnected and reconnected, it will get a new ID.
+ *
+ * The ID value starts at 0 and increments from there. The value -1 is an
+ * invalid ID.
*/
typedef Sint32 SDL_JoystickID;
@@ -172,7 +182,7 @@ extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
* This can be called before any joysticks are opened.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system)
+ * on the system).
* \returns the name of the selected joystick. If no name can be found, this
* function returns NULL; call SDL_GetError() for more information.
*
@@ -189,7 +199,7 @@ extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
* This can be called before any joysticks are opened.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system)
+ * on the system).
* \returns the path of the selected joystick. If no path can be found, this
* function returns NULL; call SDL_GetError() for more information.
*
@@ -215,9 +225,9 @@ extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
* This function can be called before any joysticks are opened.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the GUID of the selected joystick. If called on an invalid index,
- * this function returns a zero GUID
+ * this function returns a zero GUID.
*
* \since This function is available since SDL 2.0.0.
*
@@ -233,9 +243,9 @@ extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_in
* available this function returns 0.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the USB vendor ID of the selected joystick. If called on an
- * invalid index, this function returns zero
+ * invalid index, this function returns zero.
*
* \since This function is available since SDL 2.0.6.
*/
@@ -248,9 +258,9 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
* available this function returns 0.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the USB product ID of the selected joystick. If called on an
- * invalid index, this function returns zero
+ * invalid index, this function returns zero.
*
* \since This function is available since SDL 2.0.6.
*/
@@ -263,9 +273,9 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
* isn't available this function returns 0.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the product version of the selected joystick. If called on an
- * invalid index, this function returns zero
+ * invalid index, this function returns zero.
*
* \since This function is available since SDL 2.0.6.
*/
@@ -277,9 +287,9 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_in
* This can be called before any joysticks are opened.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the SDL_JoystickType of the selected joystick. If called on an
- * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`
+ * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`.
*
* \since This function is available since SDL 2.0.6.
*/
@@ -291,7 +301,7 @@ extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_in
* This can be called before any joysticks are opened.
*
* \param device_index the index of the joystick to query (the N'th joystick
- * on the system
+ * on the system.
* \returns the instance id of the selected joystick. If called on an invalid
* index, this function returns -1.
*
@@ -310,7 +320,7 @@ extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int devic
* The joystick subsystem must be initialized before a joystick can be opened
* for use.
*
- * \param device_index the index of the joystick to query
+ * \param device_index the index of the joystick to query.
* \returns a joystick identifier or NULL if an error occurred; call
* SDL_GetError() for more information.
*
@@ -324,7 +334,7 @@ extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
/**
* Get the SDL_Joystick associated with an instance id.
*
- * \param instance_id the instance id to get the SDL_Joystick for
+ * \param instance_id the instance id to get the SDL_Joystick for.
* \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
* for more information.
*
@@ -335,7 +345,7 @@ extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID
/**
* Get the SDL_Joystick associated with a player index.
*
- * \param player_index the player index to get the SDL_Joystick for
+ * \param player_index the player index to get the SDL_Joystick for.
* \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
* for more information.
*
@@ -358,8 +368,10 @@ extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,
/**
* The structure that defines an extended virtual joystick description
*
- * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx()
- * All other elements of this structure are optional and can be left 0.
+ * The caller must zero the structure and then initialize the version with
+ * `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to
+ * SDL_JoystickAttachVirtualEx() All other elements of this structure are
+ * optional and can be left 0.
*
* \sa SDL_JoystickAttachVirtualEx
*/
@@ -390,7 +402,7 @@ typedef struct SDL_VirtualJoystickDesc
} SDL_VirtualJoystickDesc;
/**
- * \brief The current version of the SDL_VirtualJoystickDesc structure
+ * The current version of the SDL_VirtualJoystickDesc structure
*/
#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1
@@ -407,7 +419,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystic
* Detach a virtual joystick.
*
* \param device_index a value previously returned from
- * SDL_JoystickAttachVirtual()
+ * SDL_JoystickAttachVirtual().
* \returns 0 on success, or -1 if an error occurred.
*
* \since This function is available since SDL 2.0.14.
@@ -485,7 +497,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, in
/**
* Get the implementation dependent name of a joystick.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the name of the selected joystick. If no name can be found, this
* function returns NULL; call SDL_GetError() for more information.
*
@@ -499,7 +511,7 @@ extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);
/**
* Get the implementation dependent path of a joystick.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the path of the selected joystick. If no path can be found, this
* function returns NULL; call SDL_GetError() for more information.
*
@@ -515,7 +527,7 @@ extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick);
* For XInput controllers this returns the XInput user index. Many joysticks
* will not be able to supply this information.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the player index, or -1 if it's not available.
*
* \since This function is available since SDL 2.0.9.
@@ -525,7 +537,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);
/**
* Set the player index of an opened joystick.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \param player_index Player index to assign to this joystick, or -1 to clear
* the player index and turn off player LEDs.
*
@@ -538,7 +550,7 @@ extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick,
*
* This function requires an open joystick.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the GUID of the given joystick. If called on an invalid index,
* this function returns a zero GUID; call SDL_GetError() for more
* information.
@@ -555,7 +567,7 @@ extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joyst
*
* If the vendor ID isn't available this function returns 0.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the USB vendor ID of the selected joystick, or 0 if unavailable.
*
* \since This function is available since SDL 2.0.6.
@@ -567,7 +579,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick);
*
* If the product ID isn't available this function returns 0.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the USB product ID of the selected joystick, or 0 if unavailable.
*
* \since This function is available since SDL 2.0.6.
@@ -579,7 +591,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
*
* If the product version isn't available this function returns 0.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the product version of the selected joystick, or 0 if unavailable.
*
* \since This function is available since SDL 2.0.6.
@@ -591,7 +603,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joyst
*
* If the firmware version isn't available this function returns 0.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the firmware version of the selected joystick, or 0 if
* unavailable.
*
@@ -604,7 +616,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joys
*
* Returns the serial number of the joystick, or NULL if it is not available.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the serial number of the selected joystick, or NULL if
* unavailable.
*
@@ -615,7 +627,7 @@ extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystic
/**
* Get the type of an opened joystick.
*
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen().
* \returns the SDL_JoystickType of the selected joystick.
*
* \since This function is available since SDL 2.0.6.
@@ -627,9 +639,9 @@ extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joyst
*
* You should supply at least 33 bytes for pszGUID.
*
- * \param guid the SDL_JoystickGUID you wish to convert to string
- * \param pszGUID buffer in which to write the ASCII string
- * \param cbGUID the size of pszGUID
+ * \param guid the SDL_JoystickGUID you wish to convert to string.
+ * \param pszGUID buffer in which to write the ASCII string.
+ * \param cbGUID the size of pszGUID.
*
* \since This function is available since SDL 2.0.0.
*
@@ -646,7 +658,7 @@ extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, ch
* an invalid GUID, the function will silently succeed, but the GUID generated
* will not be useful.
*
- * \param pchGUID string containing an ASCII representation of a GUID
+ * \param pchGUID string containing an ASCII representation of a GUID.
* \returns a SDL_JoystickGUID structure.
*
* \since This function is available since SDL 2.0.0.
@@ -658,15 +670,15 @@ extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const cha
/**
* Get the device information encoded in a SDL_JoystickGUID structure
*
- * \param guid the SDL_JoystickGUID you wish to get info about
+ * \param guid the SDL_JoystickGUID you wish to get info about.
* \param vendor A pointer filled in with the device VID, or 0 if not
- * available
+ * available.
* \param product A pointer filled in with the device PID, or 0 if not
- * available
+ * available.
* \param version A pointer filled in with the device version, or 0 if not
- * available
+ * available.
* \param crc16 A pointer filled in with a CRC used to distinguish different
- * products with the same VID/PID, or 0 if not available
+ * products with the same VID/PID, or 0 if not available.
*
* \since This function is available since SDL 2.26.0.
*
@@ -677,7 +689,7 @@ extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint
/**
* Get the status of a specified joystick.
*
- * \param joystick the joystick to query
+ * \param joystick the joystick to query.
* \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not;
* call SDL_GetError() for more information.
*
@@ -691,7 +703,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick)
/**
* Get the instance ID of an opened joystick.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \returns the instance ID of the specified joystick on success or a negative
* error code on failure; call SDL_GetError() for more information.
*
@@ -708,7 +720,7 @@ extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joys
* separate buttons or a POV hat, and not axes, but all of this is up to the
* device and platform.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \returns the number of axis controls/number of axes on success or a
* negative error code on failure; call SDL_GetError() for more
* information.
@@ -728,7 +740,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);
*
* Most joysticks do not have trackballs.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \returns the number of trackballs on success or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -741,7 +753,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);
/**
* Get the number of POV hats on a joystick.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \returns the number of POV hats on success or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -755,7 +767,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);
/**
* Get the number of buttons on a joystick.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \returns the number of buttons on success or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -790,12 +802,17 @@ extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
* **WARNING**: Calling this function may delete all events currently in SDL's
* event queue.
*
- * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
- * \returns 1 if enabled, 0 if disabled, or a negative error code on failure;
- * call SDL_GetError() for more information.
+ * While `param` is meant to be one of `SDL_QUERY`, `SDL_IGNORE`, or
+ * `SDL_ENABLE`, this function accepts any value, with any non-zero value that
+ * isn't `SDL_QUERY` being treated as `SDL_ENABLE`.
*
- * If `state` is `SDL_QUERY` then the current state is returned,
- * otherwise the new processing state is returned.
+ * If SDL was built with events disabled (extremely uncommon!), this will do
+ * nothing and always return `SDL_IGNORE`.
+ *
+ * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`.
+ * \returns If `state` is `SDL_QUERY` then the current state is returned,
+ * otherwise `state` is returned (even if it was not one of the
+ * allowed values).
*
* \since This function is available since SDL 2.0.0.
*
@@ -803,6 +820,7 @@ extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
*/
extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
+/* Limits for joystick axes... */
#define SDL_JOYSTICK_AXIS_MAX 32767
#define SDL_JOYSTICK_AXIS_MIN -32768
@@ -819,8 +837,8 @@ extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
* 32767) representing the current position of the axis. It may be necessary
* to impose certain tolerances on these values to account for jitter.
*
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param axis the axis to query; the axis indices start at index 0
+ * \param joystick an SDL_Joystick structure containing joystick information.
+ * \param axis the axis to query; the axis indices start at index 0.
* \returns a 16-bit signed integer representing the current position of the
* axis or 0 on failure; call SDL_GetError() for more information.
*
@@ -838,8 +856,8 @@ extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick,
*
* The axis indices start at index 0.
*
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param axis the axis to query; the axis indices start at index 0
+ * \param joystick an SDL_Joystick structure containing joystick information.
+ * \param axis the axis to query; the axis indices start at index 0.
* \param state Upon return, the initial value is supplied here.
* \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
*
@@ -878,8 +896,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *j
* - `SDL_HAT_LEFTUP`
* - `SDL_HAT_LEFTDOWN`
*
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param hat the hat index to get the state from; indices start at index 0
+ * \param joystick an SDL_Joystick structure containing joystick information.
+ * \param hat the hat index to get the state from; indices start at index 0.
* \returns the current hat position.
*
* \since This function is available since SDL 2.0.0.
@@ -897,10 +915,10 @@ extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,
*
* Most joysticks do not have trackballs.
*
- * \param joystick the SDL_Joystick to query
- * \param ball the ball index to query; ball indices start at index 0
- * \param dx stores the difference in the x axis position since the last poll
- * \param dy stores the difference in the y axis position since the last poll
+ * \param joystick the SDL_Joystick to query.
+ * \param ball the ball index to query; ball indices start at index 0.
+ * \param dx stores the difference in the x axis position since the last poll.
+ * \param dy stores the difference in the y axis position since the last poll.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -914,9 +932,9 @@ extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick,
/**
* Get the current state of a button on a joystick.
*
- * \param joystick an SDL_Joystick structure containing joystick information
+ * \param joystick an SDL_Joystick structure containing joystick information.
* \param button the button index to get the state from; indices start at
- * index 0
+ * index 0.
* \returns 1 if the specified button is pressed, 0 otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -932,13 +950,13 @@ extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,
* Each call to this function cancels any previous rumble effect, and calling
* it with 0 intensity stops any rumbling.
*
- * \param joystick The joystick to vibrate
+ * \param joystick The joystick to vibrate.
* \param low_frequency_rumble The intensity of the low frequency (left)
- * rumble motor, from 0 to 0xFFFF
+ * rumble motor, from 0 to 0xFFFF.
* \param high_frequency_rumble The intensity of the high frequency (right)
- * rumble motor, from 0 to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if rumble isn't supported on this joystick
+ * rumble motor, from 0 to 0xFFFF.
+ * \param duration_ms The duration of the rumble effect, in milliseconds.
+ * \returns 0, or -1 if rumble isn't supported on this joystick.
*
* \since This function is available since SDL 2.0.9.
*
@@ -957,13 +975,13 @@ extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 lo
* want the (more common) whole-controller rumble, use SDL_JoystickRumble()
* instead.
*
- * \param joystick The joystick to vibrate
+ * \param joystick The joystick to vibrate.
* \param left_rumble The intensity of the left trigger rumble motor, from 0
- * to 0xFFFF
+ * to 0xFFFF.
* \param right_rumble The intensity of the right trigger rumble motor, from 0
- * to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if trigger rumble isn't supported on this joystick
+ * to 0xFFFF.
+ * \param duration_ms The duration of the rumble effect, in milliseconds.
+ * \returns 0, or -1 if trigger rumble isn't supported on this joystick.
*
* \since This function is available since SDL 2.0.14.
*
@@ -977,7 +995,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, U
* An example of a joystick LED is the light on the back of a PlayStation 4's
* DualShock 4 controller.
*
- * \param joystick The joystick to query
+ * \param joystick The joystick to query.
* \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -987,7 +1005,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);
/**
* Query whether a joystick has rumble support.
*
- * \param joystick The joystick to query
+ * \param joystick The joystick to query.
* \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.18.
@@ -999,7 +1017,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick);
/**
* Query whether a joystick has rumble support on triggers.
*
- * \param joystick The joystick to query
+ * \param joystick The joystick to query.
* \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.18.
@@ -1014,11 +1032,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joy
* An example of a joystick LED is the light on the back of a PlayStation 4's
* DualShock 4 controller.
*
- * \param joystick The joystick to update
- * \param red The intensity of the red LED
- * \param green The intensity of the green LED
- * \param blue The intensity of the blue LED
- * \returns 0 on success, -1 if this joystick does not have a modifiable LED
+ * \param joystick The joystick to update.
+ * \param red The intensity of the red LED.
+ * \param green The intensity of the green LED.
+ * \param blue The intensity of the blue LED.
+ * \returns 0 on success, -1 if this joystick does not have a modifiable LED.
*
* \since This function is available since SDL 2.0.14.
*/
@@ -1027,10 +1045,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red
/**
* Send a joystick specific effect packet
*
- * \param joystick The joystick to affect
- * \param data The data to send to the joystick
- * \param size The size of the data to send to the joystick
- * \returns 0, or -1 if this joystick or driver doesn't support effect packets
+ * \param joystick The joystick to affect.
+ * \param data The data to send to the joystick.
+ * \param size The size of the data to send to the joystick.
+ * \returns 0, or -1 if this joystick or driver doesn't support effect
+ * packets.
*
* \since This function is available since SDL 2.0.16.
*/
@@ -1039,7 +1058,7 @@ extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const
/**
* Close a joystick previously opened with SDL_JoystickOpen().
*
- * \param joystick The joystick device to close
+ * \param joystick The joystick device to close.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1050,9 +1069,9 @@ extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);
/**
* Get the battery level of a joystick as SDL_JoystickPowerLevel.
*
- * \param joystick the SDL_Joystick to query
+ * \param joystick the SDL_Joystick to query.
* \returns the current battery level as SDL_JoystickPowerLevel on success or
- * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown
+ * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown.
*
* \since This function is available since SDL 2.0.4.
*/
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keyboard.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keyboard.h
index 86a37ad1a..62ac9f228 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keyboard.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keyboard.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_keyboard.h
+ * # CategoryKeyboard
*
- * Include file for SDL keyboard event handling
+ * Include file for SDL keyboard event handling
*/
#ifndef SDL_keyboard_h_
@@ -40,14 +40,15 @@ extern "C" {
#endif
/**
- * \brief The SDL keysym structure, used in key events.
+ * The SDL keysym structure, used in key events.
*
- * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
+ * If you are looking for translated character input, see the SDL_TEXTINPUT
+ * event.
*/
typedef struct SDL_Keysym
{
- SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */
- SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */
+ SDL_Scancode scancode; /**< SDL physical key code - see SDL_Scancode for details */
+ SDL_Keycode sym; /**< SDL virtual key code - see SDL_Keycode for details */
Uint16 mod; /**< current key modifiers */
Uint32 unused;
} SDL_Keysym;
@@ -84,7 +85,7 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
* Note: This function doesn't take into account whether shift has been
* pressed or not.
*
- * \param numkeys if non-NULL, receives the length of the returned array
+ * \param numkeys if non-NULL, receives the length of the returned array.
* \returns a pointer to an array of key states.
*
* \since This function is available since SDL 2.0.0.
@@ -129,7 +130,7 @@ extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
* This does not change the keyboard state, only the key modifier flags that
* SDL reports.
*
- * \param modstate the desired SDL_Keymod for the keyboard
+ * \param modstate the desired SDL_Keymod for the keyboard.
*
* \since This function is available since SDL 2.0.0.
*
@@ -143,7 +144,7 @@ extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
*
* See SDL_Keycode for details.
*
- * \param scancode the desired SDL_Scancode to query
+ * \param scancode the desired SDL_Scancode to query.
* \returns the SDL_Keycode that corresponds to the given SDL_Scancode.
*
* \since This function is available since SDL 2.0.0.
@@ -159,7 +160,7 @@ extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode
*
* See SDL_Scancode for details.
*
- * \param key the desired SDL_Keycode to query
+ * \param key the desired SDL_Keycode to query.
* \returns the SDL_Scancode that corresponds to the given SDL_Keycode.
*
* \since This function is available since SDL 2.0.0.
@@ -183,7 +184,7 @@ extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
* unsuitable for creating a stable cross-platform two-way mapping between
* strings and scancodes.
*
- * \param scancode the desired SDL_Scancode to query
+ * \param scancode the desired SDL_Scancode to query.
* \returns a pointer to the name for the scancode. If the scancode doesn't
* have a name this function returns an empty string ("").
*
@@ -197,7 +198,7 @@ extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
/**
* Get a scancode from a human-readable name.
*
- * \param name the human-readable scancode name
+ * \param name the human-readable scancode name.
* \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't
* recognized; call SDL_GetError() for more information.
*
@@ -214,7 +215,7 @@ extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
*
* See SDL_Scancode and SDL_Keycode for details.
*
- * \param key the desired SDL_Keycode to query
+ * \param key the desired SDL_Keycode to query.
* \returns a pointer to a UTF-8 string that stays valid at least until the
* next call to this function. If you need it around any longer, you
* must copy it. If the key doesn't have a name, this function
@@ -231,7 +232,7 @@ extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
/**
* Get a key code from a human-readable name.
*
- * \param name the human-readable key name
+ * \param name the human-readable key name.
* \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call
* SDL_GetError() for more information.
*
@@ -253,6 +254,10 @@ extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
*
* On some platforms using this function activates the screen keyboard.
*
+ * On desktop platforms, SDL_StartTextInput() is implicitly called on SDL
+ * video subsystem initialization which will cause SDL_TextInputEvent and
+ * SDL_TextEditingEvent to begin emitting.
+ *
* \since This function is available since SDL 2.0.0.
*
* \sa SDL_SetTextInputRect
@@ -300,6 +305,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
/**
* Set the rectangle used to type Unicode text inputs.
*
+ * Native input methods will place a window with word suggestions near it,
+ * without covering the text being inputted.
+ *
* To start text input in a given location, this function is intended to be
* called before SDL_StartTextInput, although some platforms support moving
* the rectangle even while text input (and a composition) is active.
@@ -309,7 +317,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
* any feedback.
*
* \param rect the SDL_Rect structure representing the rectangle to receive
- * text (ignored if NULL)
+ * text (ignored if NULL).
*
* \since This function is available since SDL 2.0.0.
*
@@ -333,7 +341,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
/**
* Check whether the screen keyboard is shown for given window.
*
- * \param window the window for which screen keyboard should be queried
+ * \param window the window for which screen keyboard should be queried.
* \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not.
*
* \since This function is available since SDL 2.0.0.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keycode.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keycode.h
index 710622302..eb1678e38 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keycode.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_keycode.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_keycode.h
+ * # CategoryKeycode
*
- * Defines constants which identify keyboard keys and modifiers.
+ * Defines constants which identify keyboard keys and modifiers.
*/
#ifndef SDL_keycode_h_
@@ -32,22 +32,22 @@
#include "SDL_scancode.h"
/**
- * \brief The SDL virtual key representation.
+ * The SDL virtual key representation.
*
- * Values of this type are used to represent keyboard keys using the current
- * layout of the keyboard. These values include Unicode values representing
- * the unmodified character that would be generated by pressing the key, or
- * an SDLK_* constant for those keys that do not generate characters.
+ * Values of this type are used to represent keyboard keys using the current
+ * layout of the keyboard. These values include Unicode values representing
+ * the unmodified character that would be generated by pressing the key, or an
+ * SDLK_* constant for those keys that do not generate characters.
*
- * A special exception is the number keys at the top of the keyboard which
- * map to SDLK_0...SDLK_9 on AZERTY layouts.
+ * A special exception is the number keys at the top of the keyboard which map
+ * to SDLK_0...SDLK_9 on AZERTY layouts.
*/
typedef Sint32 SDL_Keycode;
#define SDLK_SCANCODE_MASK (1<<30)
#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK)
-typedef enum
+typedef enum SDL_KeyCode
{
SDLK_UNKNOWN = 0,
@@ -327,9 +327,9 @@ typedef enum
} SDL_KeyCode;
/**
- * \brief Enumeration of valid key mods (possibly OR'd together).
+ * Enumeration of valid key mods (possibly OR'd together).
*/
-typedef enum
+typedef enum SDL_Keymod
{
KMOD_NONE = 0x0000,
KMOD_LSHIFT = 0x0001,
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_loadso.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_loadso.h
index ca59b681c..1763b5280 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_loadso.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_loadso.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,23 +19,25 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: LoadSO */
+
/**
- * \file SDL_loadso.h
+ * # CategoryLoadSO
*
- * System dependent library loading routines
+ * System-dependent library loading routines.
*
- * Some things to keep in mind:
- * \li These functions only work on C function names. Other languages may
- * have name mangling and intrinsic language support that varies from
- * compiler to compiler.
- * \li Make sure you declare your function pointers with the same calling
- * convention as the actual library function. Your code will crash
- * mysteriously if you do not do this.
- * \li Avoid namespace collisions. If you load a symbol from the library,
- * it is not defined whether or not it goes into the global symbol
- * namespace for the application. If it does and it conflicts with
- * symbols in your code or other shared libraries, you will not get
- * the results you expect. :)
+ * Some things to keep in mind:
+ *
+ * - These functions only work on C function names. Other languages may have
+ * name mangling and intrinsic language support that varies from compiler to
+ * compiler.
+ * - Make sure you declare your function pointers with the same calling
+ * convention as the actual library function. Your code will crash
+ * mysteriously if you do not do this.
+ * - Avoid namespace collisions. If you load a symbol from the library, it is
+ * not defined whether or not it goes into the global symbol namespace for
+ * the application. If it does and it conflicts with symbols in your code or
+ * other shared libraries, you will not get the results you expect. :)
*/
#ifndef SDL_loadso_h_
@@ -53,7 +55,7 @@ extern "C" {
/**
* Dynamically load a shared object.
*
- * \param sofile a system-dependent name of the object file
+ * \param sofile a system-dependent name of the object file.
* \returns an opaque pointer to the object handle or NULL if there was an
* error; call SDL_GetError() for more information.
*
@@ -79,8 +81,8 @@ extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);
*
* If the requested function doesn't exist, NULL is returned.
*
- * \param handle a valid shared object handle returned by SDL_LoadObject()
- * \param name the name of the function to look up
+ * \param handle a valid shared object handle returned by SDL_LoadObject().
+ * \param name the name of the function to look up.
* \returns a pointer to the function or NULL if there was an error; call
* SDL_GetError() for more information.
*
@@ -95,7 +97,7 @@ extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,
/**
* Unload a shared object from memory.
*
- * \param handle a valid shared object handle returned by SDL_LoadObject()
+ * \param handle a valid shared object handle returned by SDL_LoadObject().
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_locale.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_locale.h
index 482dbefe7..8126efc79 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_locale.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_locale.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_locale.h
+ * # CategoryLocale
*
- * Include file for SDL locale services
+ * Include file for SDL locale services
*/
#ifndef _SDL_locale_h
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_log.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_log.h
index da733c402..75833ba3c 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_log.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_log.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,18 +20,19 @@
*/
/**
- * \file SDL_log.h
+ * # CategoryLog
*
- * Simple log messages with categories and priorities.
+ * Simple log messages with categories and priorities.
*
- * By default logs are quiet, but if you're debugging SDL you might want:
+ * By default logs are quiet, but if you're debugging SDL you might want:
*
- * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
+ * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
*
- * Here's where the messages go on different platforms:
- * Windows: debug output stream
- * Android: log output
- * Others: standard error output (stderr)
+ * Here's where the messages go on different platforms:
+ *
+ * - Windows: debug output stream
+ * - Android: log output
+ * - Others: standard error output (stderr)
*/
#ifndef SDL_log_h_
@@ -47,21 +48,20 @@ extern "C" {
/**
- * \brief The maximum size of a log message prior to SDL 2.0.24
+ * The maximum size of a log message prior to SDL 2.0.24
*
- * As of 2.0.24 there is no limit to the length of SDL log messages.
+ * As of 2.0.24 there is no limit to the length of SDL log messages.
*/
#define SDL_MAX_LOG_MESSAGE 4096
/**
- * \brief The predefined log categories
+ * The predefined log categories
*
- * 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.
+ * 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 ERROR level.
*/
-typedef enum
+typedef enum SDL_LogCategory
{
SDL_LOG_CATEGORY_APPLICATION,
SDL_LOG_CATEGORY_ERROR,
@@ -97,9 +97,9 @@ typedef enum
} SDL_LogCategory;
/**
- * \brief The predefined log priorities
+ * The predefined log priorities
*/
-typedef enum
+typedef enum SDL_LogPriority
{
SDL_LOG_PRIORITY_VERBOSE = 1,
SDL_LOG_PRIORITY_DEBUG,
@@ -114,7 +114,7 @@ typedef enum
/**
* Set the priority of all log categories.
*
- * \param priority the SDL_LogPriority to assign
+ * \param priority the SDL_LogPriority to assign.
*
* \since This function is available since SDL 2.0.0.
*
@@ -125,8 +125,8 @@ extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);
/**
* Set the priority of a particular log category.
*
- * \param category the category to assign a priority to
- * \param priority the SDL_LogPriority to assign
+ * \param category the category to assign a priority to.
+ * \param priority the SDL_LogPriority to assign.
*
* \since This function is available since SDL 2.0.0.
*
@@ -139,8 +139,8 @@ extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,
/**
* Get the priority of a particular log category.
*
- * \param category the category to query
- * \returns the SDL_LogPriority for the requested category
+ * \param category the category to query.
+ * \returns the SDL_LogPriority for the requested category.
*
* \since This function is available since SDL 2.0.0.
*
@@ -166,7 +166,7 @@ extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
* = * \param fmt a printf() style message format string
*
* \param ... additional parameters matching % tokens in the `fmt` string, if
- * any
+ * any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -184,10 +184,10 @@ extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, .
/**
* Log a message with SDL_LOG_PRIORITY_VERBOSE.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -205,10 +205,10 @@ extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRI
/**
* Log a message with SDL_LOG_PRIORITY_DEBUG.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -226,10 +226,10 @@ extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING
/**
* Log a message with SDL_LOG_PRIORITY_INFO.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -247,10 +247,10 @@ extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING
/**
* Log a message with SDL_LOG_PRIORITY_WARN.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -268,10 +268,10 @@ extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING
/**
* Log a message with SDL_LOG_PRIORITY_ERROR.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -289,10 +289,10 @@ extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING
/**
* Log a message with SDL_LOG_PRIORITY_CRITICAL.
*
- * \param category the category of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -310,11 +310,11 @@ extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STR
/**
* Log a message with the specified category and priority.
*
- * \param category the category of the message
- * \param priority the priority of the message
- * \param fmt a printf() style message format string
+ * \param category the category of the message.
+ * \param priority the priority of the message.
+ * \param fmt a printf() style message format string.
* \param ... additional parameters matching % tokens in the **fmt** string,
- * if any
+ * if any.
*
* \since This function is available since SDL 2.0.0.
*
@@ -334,10 +334,10 @@ extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
/**
* Log a message with the specified category and priority.
*
- * \param category the category of the message
- * \param priority the priority of the message
- * \param fmt a printf() style message format string
- * \param ap a variable argument list
+ * \param category the category of the message.
+ * \param priority the priority of the message.
+ * \param fmt a printf() style message format string.
+ * \param ap a variable argument list.
*
* \since This function is available since SDL 2.0.0.
*
@@ -352,17 +352,18 @@ extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
*/
extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
SDL_LogPriority priority,
- const char *fmt, va_list ap);
+ SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
/**
* The prototype for the log output callback function.
*
* This function is called by SDL when there is new text to be logged.
*
- * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction()
- * \param category the category of the message
- * \param priority the priority of the message
- * \param message the message being output
+ * \param userdata what was passed as `userdata` to
+ * SDL_LogSetOutputFunction().
+ * \param category the category of the message.
+ * \param priority the priority of the message.
+ * \param message the message being output.
*/
typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
@@ -370,9 +371,9 @@ typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_
* Get the current log output function.
*
* \param callback an SDL_LogOutputFunction filled in with the current log
- * callback
+ * callback.
* \param userdata a pointer filled in with the pointer that is passed to
- * `callback`
+ * `callback`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -383,8 +384,8 @@ extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *cal
/**
* Replace the default log output function with one of your own.
*
- * \param callback an SDL_LogOutputFunction to call instead of the default
- * \param userdata a pointer that is passed to `callback`
+ * \param callback an SDL_LogOutputFunction to call instead of the default.
+ * \param userdata a pointer that is passed to `callback`.
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_main.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_main.h
index 5cc8e5913..a1ef3e746 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_main.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_main.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -25,9 +25,9 @@
#include "SDL_stdinc.h"
/**
- * \file SDL_main.h
+ * # CategoryMain
*
- * Redefine main() on some platforms so that it is called by SDL.
+ * Redefine main() on some platforms so that it is called by SDL.
*/
#ifndef SDL_MAIN_HANDLED
@@ -129,14 +129,14 @@
*
* The application's main() function must be called with C linkage,
* and should be declared like this:
- * \code
+ * ```c
* #ifdef __cplusplus
* extern "C"
* #endif
* int main(int argc, char *argv[])
* {
* }
- * \endcode
+ * ```
*/
#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
@@ -149,7 +149,7 @@ extern "C" {
#endif
/**
- * The prototype for the application's main() function
+ * The prototype for the application's main() function
*/
typedef int (*SDL_main_func)(int argc, char *argv[]);
extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
@@ -222,8 +222,8 @@ extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
/**
* Initialize and launch an SDL/WinRT application.
*
- * \param mainFunction the SDL app's C-style main(), an SDL_main_func
- * \param reserved reserved for future use; should be NULL
+ * \param mainFunction the SDL app's C-style main(), an SDL_main_func.
+ * \param reserved reserved for future use; should be NULL.
* \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
* more information on the failure.
*
@@ -238,10 +238,10 @@ extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * r
/**
* Initializes and launches an SDL application.
*
- * \param argc The argc parameter from the application's main() function
- * \param argv The argv parameter from the application's main() function
- * \param mainFunction The SDL app's C-style main(), an SDL_main_func
- * \return the return value from mainFunction
+ * \param argc The argc parameter from the application's main() function.
+ * \param argv The argv parameter from the application's main() function.
+ * \param mainFunction The SDL app's C-style main(), an SDL_main_func.
+ * \return the return value from mainFunction.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -254,8 +254,8 @@ extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_fun
/**
* Initialize and launch an SDL GDK application.
*
- * \param mainFunction the SDL app's C-style main(), an SDL_main_func
- * \param reserved reserved for future use; should be NULL
+ * \param mainFunction the SDL app's C-style main(), an SDL_main_func.
+ * \param reserved reserved for future use; should be NULL.
* \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
* more information on the failure.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_messagebox.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_messagebox.h
index 7896fd129..725d4124a 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_messagebox.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_messagebox.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -32,9 +32,11 @@ extern "C" {
#endif
/**
- * SDL_MessageBox flags. If supported will display warning icon, etc.
+ * SDL_MessageBox flags.
+ *
+ * If supported will display warning icon, etc.
*/
-typedef enum
+typedef enum SDL_MessageBoxFlags
{
SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */
SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */
@@ -46,7 +48,7 @@ typedef enum
/**
* Flags for SDL_MessageBoxButtonData.
*/
-typedef enum
+typedef enum SDL_MessageBoxButtonFlags
{
SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */
SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */
@@ -55,9 +57,9 @@ typedef enum
/**
* Individual button data.
*/
-typedef struct
+typedef struct SDL_MessageBoxButtonData
{
- Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */
+ Uint32 flags; /**< SDL_MessageBoxButtonFlags */
int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */
const char * text; /**< The UTF-8 button text */
} SDL_MessageBoxButtonData;
@@ -65,12 +67,12 @@ typedef struct
/**
* RGB value used in a message box color scheme
*/
-typedef struct
+typedef struct SDL_MessageBoxColor
{
Uint8 r, g, b;
} SDL_MessageBoxColor;
-typedef enum
+typedef enum SDL_MessageBoxColorType
{
SDL_MESSAGEBOX_COLOR_BACKGROUND,
SDL_MESSAGEBOX_COLOR_TEXT,
@@ -83,7 +85,7 @@ typedef enum
/**
* A set of colors to use for message box dialogs
*/
-typedef struct
+typedef struct SDL_MessageBoxColorScheme
{
SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
} SDL_MessageBoxColorScheme;
@@ -91,9 +93,9 @@ typedef struct
/**
* MessageBox structure containing title, text, window, etc.
*/
-typedef struct
+typedef struct SDL_MessageBoxData
{
- Uint32 flags; /**< ::SDL_MessageBoxFlags */
+ Uint32 flags; /**< SDL_MessageBoxFlags */
SDL_Window *window; /**< Parent window, can be NULL */
const char *title; /**< UTF-8 title */
const char *message; /**< UTF-8 message text */
@@ -101,7 +103,7 @@ typedef struct
int numbuttons;
const SDL_MessageBoxButtonData *buttons;
- const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */
+ const SDL_MessageBoxColorScheme *colorScheme; /**< SDL_MessageBoxColorScheme, can be NULL to use system settings */
} SDL_MessageBoxData;
/**
@@ -128,8 +130,9 @@ typedef struct
* to stderr if you can.
*
* \param messageboxdata the SDL_MessageBoxData structure with title, text and
- * other options
- * \param buttonid the pointer to which user id of hit button should be copied
+ * other options.
+ * \param buttonid the pointer to which user id of hit button should be
+ * copied.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -168,10 +171,10 @@ extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *message
* concern, check the return value from this function and fall back to writing
* to stderr if you can.
*
- * \param flags an SDL_MessageBoxFlags value
- * \param title UTF-8 title text
- * \param message UTF-8 message text
- * \param window the parent window, or NULL for no parent
+ * \param flags an SDL_MessageBoxFlags value.
+ * \param title UTF-8 title text.
+ * \param message UTF-8 message text.
+ * \param window the parent window, or NULL for no parent.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_metal.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_metal.h
index f36e34878..d3f21d5ec 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_metal.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_metal.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,10 @@
*/
/**
- * \file SDL_metal.h
+ * # CategoryMetal
*
- * Header file for functions to creating Metal layers and views on SDL windows.
+ * Header file for functions to creating Metal layers and views on SDL
+ * windows.
*/
#ifndef SDL_metal_h_
@@ -37,9 +38,9 @@ extern "C" {
#endif
/**
- * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS).
+ * A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS).
*
- * \note This can be cast directly to an NSView or UIView.
+ * This can be cast directly to an NSView or UIView.
*/
typedef void *SDL_MetalView;
@@ -90,9 +91,9 @@ extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
* Get the size of a window's underlying drawable in pixels (for use with
* setting viewport, scissor & etc).
*
- * \param window SDL_Window from which the drawable size should be queried
- * \param w Pointer to variable for storing the width in pixels, may be NULL
- * \param h Pointer to variable for storing the height in pixels, may be NULL
+ * \param window SDL_Window from which the drawable size should be queried.
+ * \param w Pointer to variable for storing the width in pixels, may be NULL.
+ * \param h Pointer to variable for storing the height in pixels, may be NULL.
*
* \since This function is available since SDL 2.0.14.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_misc.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_misc.h
index 13ed9c771..86a82bc5d 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_misc.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_misc.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_misc.h
+ * # CategoryMisc
*
- * \brief Include file for SDL API functions that don't fit elsewhere.
+ * Include file for SDL API functions that don't fit elsewhere.
*/
#ifndef SDL_misc_h_
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mouse.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mouse.h
index aa0757573..628b7a2f8 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mouse.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mouse.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_mouse.h
+ * # CategoryMouse
*
- * Include file for SDL mouse event handling.
+ * Include file for SDL mouse event handling.
*/
#ifndef SDL_mouse_h_
@@ -41,9 +41,9 @@ extern "C" {
typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */
/**
- * \brief Cursor types for SDL_CreateSystemCursor().
+ * Cursor types for SDL_CreateSystemCursor().
*/
-typedef enum
+typedef enum SDL_SystemCursor
{
SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */
SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */
@@ -61,9 +61,9 @@ typedef enum
} SDL_SystemCursor;
/**
- * \brief Scroll direction types for the Scroll event
+ * Scroll direction types for the Scroll event
*/
-typedef enum
+typedef enum SDL_MouseWheelDirection
{
SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */
SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */
@@ -90,9 +90,9 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);
* either `x` or `y`.
*
* \param x the x coordinate of the mouse cursor position relative to the
- * focus window
+ * focus window.
* \param y the y coordinate of the mouse cursor position relative to the
- * focus window
+ * focus window.
* \returns a 32-bit button bitmask of the current button state.
*
* \since This function is available since SDL 2.0.0.
@@ -120,9 +120,9 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
* reason to use this function, you probably want SDL_GetMouseState() instead.
*
* \param x filled in with the current X coord relative to the desktop; can be
- * NULL
+ * NULL.
* \param y filled in with the current Y coord relative to the desktop; can be
- * NULL
+ * NULL.
* \returns the current button state as a bitmask which can be tested using
* the SDL_BUTTON(X) macros.
*
@@ -141,8 +141,8 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);
* mouse deltas since the last call to SDL_GetRelativeMouseState() or since
* event initialization. You can pass NULL for either `x` or `y`.
*
- * \param x a pointer filled with the last recorded x coordinate of the mouse
- * \param y a pointer filled with the last recorded y coordinate of the mouse
+ * \param x a pointer filled with the last recorded x coordinate of the mouse.
+ * \param y a pointer filled with the last recorded y coordinate of the mouse.
* \returns a 32-bit button bitmask of the relative button state.
*
* \since This function is available since SDL 2.0.0.
@@ -162,9 +162,9 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
* mouse when used over Microsoft Remote Desktop.
*
* \param window the window to move the mouse into, or NULL for the current
- * mouse focus
- * \param x the x coordinate within the window
- * \param y the y coordinate within the window
+ * mouse focus.
+ * \param x the x coordinate within the window.
+ * \param y the y coordinate within the window.
*
* \since This function is available since SDL 2.0.0.
*
@@ -184,8 +184,8 @@ extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
* Note that this function will appear to succeed, but not actually move the
* mouse when used over Microsoft Remote Desktop.
*
- * \param x the x coordinate
- * \param y the y coordinate
+ * \param x the x coordinate.
+ * \param y the y coordinate.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -297,14 +297,14 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
* Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which
* provides twelve readily available system cursors to pick from.
*
- * \param data the color value for each pixel of the cursor
- * \param mask the mask value for each pixel of the cursor
- * \param w the width of the cursor
- * \param h the height of the cursor
+ * \param data the color value for each pixel of the cursor.
+ * \param mask the mask value for each pixel of the cursor.
+ * \param w the width of the cursor.
+ * \param h the height of the cursor.
* \param hot_x the X-axis location of the upper left corner of the cursor
- * relative to the actual mouse position
+ * relative to the actual mouse position.
* \param hot_y the Y-axis location of the upper left corner of the cursor
- * relative to the actual mouse position
+ * relative to the actual mouse position.
* \returns a new cursor with the specified parameters on success or NULL on
* failure; call SDL_GetError() for more information.
*
@@ -322,9 +322,9 @@ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,
/**
* Create a color cursor.
*
- * \param surface an SDL_Surface structure representing the cursor image
- * \param hot_x the x position of the cursor hot spot
- * \param hot_y the y position of the cursor hot spot
+ * \param surface an SDL_Surface structure representing the cursor image.
+ * \param hot_x the x position of the cursor hot spot.
+ * \param hot_y the y position of the cursor hot spot.
* \returns the new cursor on success or NULL on failure; call SDL_GetError()
* for more information.
*
@@ -340,7 +340,7 @@ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,
/**
* Create a system cursor.
*
- * \param id an SDL_SystemCursor enum value
+ * \param id an SDL_SystemCursor enum value.
* \returns a cursor on success or NULL on failure; call SDL_GetError() for
* more information.
*
@@ -358,7 +358,7 @@ extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);
* the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if
* this is desired for any reason.
*
- * \param cursor a cursor to make active
+ * \param cursor a cursor to make active.
*
* \since This function is available since SDL 2.0.0.
*
@@ -402,7 +402,7 @@ extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);
* Use this function to free cursor resources created with SDL_CreateCursor(),
* SDL_CreateColorCursor() or SDL_CreateSystemCursor().
*
- * \param cursor the cursor to free
+ * \param cursor the cursor to free.
*
* \since This function is available since SDL 2.0.0.
*
@@ -437,9 +437,9 @@ extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);
/**
* Used as a mask when testing buttons in buttonstate.
*
- * - Button 1: Left mouse button
- * - Button 2: Middle mouse button
- * - Button 3: Right mouse button
+ * - Button 1: Left mouse button
+ * - Button 2: Middle mouse button
+ * - Button 3: Right mouse button
*/
#define SDL_BUTTON(X) (1 << ((X)-1))
#define SDL_BUTTON_LEFT 1
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mutex.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mutex.h
index e679d3808..0fe3eb5a5 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mutex.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_mutex.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -23,9 +23,9 @@
#define SDL_mutex_h_
/**
- * \file SDL_mutex.h
+ * # CategoryMutex
*
- * Functions to provide thread synchronization primitives.
+ * Functions to provide thread synchronization primitives.
*/
#include "SDL_stdinc.h"
@@ -112,13 +112,13 @@ extern "C" {
#endif
/**
- * Synchronization functions which can time out return this value
- * if they time out.
+ * Synchronization functions which can time out return this value if they time
+ * out.
*/
#define SDL_MUTEX_TIMEDOUT 1
/**
- * This is the timeout value which corresponds to never time out.
+ * This is the timeout value which corresponds to never time out.
*/
#define SDL_MUTEX_MAXWAIT (~(Uint32)0)
@@ -165,7 +165,7 @@ extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
* unlock it the same number of times before it is actually made available for
* other threads in the system (this is known as a "recursive mutex").
*
- * \param mutex the mutex to lock
+ * \param mutex the mutex to lock.
* \return 0, or -1 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -182,7 +182,7 @@ extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex);
* This technique is useful if you need exclusive access to a resource but
* don't want to wait for it, and will return to it to try again later.
*
- * \param mutex the mutex to try to lock
+ * \param mutex the mutex to try to lock.
* \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for
* more information.
*
@@ -224,7 +224,7 @@ extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex
* to destroy a locked mutex, and may result in undefined behavior depending
* on the platform.
*
- * \param mutex the mutex to destroy
+ * \param mutex the mutex to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -256,7 +256,7 @@ typedef struct SDL_semaphore SDL_sem;
* is 0. Each post operation will atomically increment the semaphore value and
* wake waiting threads and allow them to retry the wait operation.
*
- * \param initial_value the starting value of the semaphore
+ * \param initial_value the starting value of the semaphore.
* \returns a new semaphore or NULL on failure; call SDL_GetError() for more
* information.
*
@@ -277,7 +277,7 @@ extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);
* It is not safe to destroy a semaphore if there are threads currently
* waiting on it.
*
- * \param sem the semaphore to destroy
+ * \param sem the semaphore to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -301,7 +301,7 @@ extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);
* This function is the equivalent of calling SDL_SemWaitTimeout() with a time
* length of `SDL_MUTEX_MAXWAIT`.
*
- * \param sem the semaphore wait on
+ * \param sem the semaphore wait on.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -325,7 +325,7 @@ extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
* the semaphore doesn't have a positive value, the function immediately
* returns SDL_MUTEX_TIMEDOUT.
*
- * \param sem the semaphore to wait on
+ * \param sem the semaphore to wait on.
* \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would
* block, or a negative error code on failure; call SDL_GetError()
* for more information.
@@ -349,8 +349,8 @@ extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
* signal or error, or the specified time has elapsed. If the call is
* successful it will atomically decrement the semaphore value.
*
- * \param sem the semaphore to wait on
- * \param timeout the length of the timeout, in milliseconds
+ * \param sem the semaphore to wait on.
+ * \param timeout the length of the timeout, in milliseconds.
* \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not
* succeed in the allotted time, or a negative error code on failure;
* call SDL_GetError() for more information.
@@ -369,7 +369,7 @@ extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout);
/**
* Atomically increment a semaphore's value and wake waiting threads.
*
- * \param sem the semaphore to increment
+ * \param sem the semaphore to increment.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -387,7 +387,7 @@ extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);
/**
* Get the current value of a semaphore.
*
- * \param sem the semaphore to query
+ * \param sem the semaphore to query.
* \returns the current value of the semaphore.
*
* \since This function is available since SDL 2.0.0.
@@ -427,7 +427,7 @@ extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);
/**
* Destroy a condition variable.
*
- * \param cond the condition variable to destroy
+ * \param cond the condition variable to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -442,7 +442,7 @@ extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);
/**
* Restart one of the threads that are waiting on the condition variable.
*
- * \param cond the condition variable to signal
+ * \param cond the condition variable to signal.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -459,7 +459,7 @@ extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);
/**
* Restart all threads that are waiting on the condition variable.
*
- * \param cond the condition variable to signal
+ * \param cond the condition variable to signal.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -486,8 +486,8 @@ extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
* This function is the equivalent of calling SDL_CondWaitTimeout() with a
* time length of `SDL_MUTEX_MAXWAIT`.
*
- * \param cond the condition variable to wait on
- * \param mutex the mutex used to coordinate thread access
+ * \param cond the condition variable to wait on.
+ * \param mutex the mutex used to coordinate thread access.
* \returns 0 when it is signaled or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -512,10 +512,10 @@ extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
*
* The mutex must be locked before calling this function.
*
- * \param cond the condition variable to wait on
- * \param mutex the mutex used to coordinate thread access
+ * \param cond the condition variable to wait on.
+ * \param mutex the mutex used to coordinate thread access.
* \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT`
- * to wait indefinitely
+ * to wait indefinitely.
* \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if
* the condition is not signaled in the allotted time, or a negative
* error code on failure; call SDL_GetError() for more information.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_name.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_name.h
index 5c3e07ab7..0c48bcf31 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_name.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_name.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengl.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengl.h
index 0ba89127a..c6250d131 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengl.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengl.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,17 +19,11 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_opengl.h
+/*
+ * This is a simple file to encapsulate the OpenGL API headers.
*
- * This is a simple file to encapsulate the OpenGL API headers.
- */
-
-/**
- * \def NO_SDL_GLEXT
- *
- * Define this if you have your own version of glext.h and want to disable the
- * version included in SDL_opengl.h.
+ * Define NO_SDL_GLEXT if you have your own version of glext.h and want
+ * to disable the version included in SDL_opengl.h.
*/
#ifndef SDL_opengl_h_
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles.h
index f4465eaa9..adf6ef782 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,11 +19,10 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_opengles.h
- *
- * This is a simple file to encapsulate the OpenGL ES 1.X API headers.
+/*
+ * This is a simple file to encapsulate the OpenGL ES 1.X API headers.
*/
+
#include "SDL_config.h"
#ifdef __IPHONEOS__
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles2.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles2.h
index 5e3b717de..551419712 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles2.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_opengles2.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,11 +19,10 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_opengles2.h
- *
- * This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
+/*
+ * This is a simple file to encapsulate the OpenGL ES 2.0 API headers.
*/
+
#include "SDL_config.h"
#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_pixels.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_pixels.h
index 9abd57b42..6f29811d3 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_pixels.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_pixels.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_pixels.h
+ * # CategoryPixels
*
- * Header for the enumerated pixel format definitions.
+ * Header for the enumerated pixel format definitions.
*/
#ifndef SDL_pixels_h_
@@ -61,7 +61,10 @@ typedef enum
SDL_PIXELTYPE_ARRAYU16,
SDL_PIXELTYPE_ARRAYU32,
SDL_PIXELTYPE_ARRAYF16,
- SDL_PIXELTYPE_ARRAYF32
+ SDL_PIXELTYPE_ARRAYF32,
+
+ /* This must be at the end of the list to avoid breaking the existing ABI */
+ SDL_PIXELTYPE_INDEX2
} SDL_PixelType;
/** Bitmap pixel order, high bit -> low bit. */
@@ -134,6 +137,7 @@ typedef enum
#define SDL_ISPIXELFORMAT_INDEXED(format) \
(!SDL_ISPIXELFORMAT_FOURCC(format) && \
((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
+ (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX2) || \
(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
@@ -177,6 +181,12 @@ typedef enum
SDL_PIXELFORMAT_INDEX1MSB =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
1, 0),
+ SDL_PIXELFORMAT_INDEX2LSB =
+ SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_4321, 0,
+ 2, 0),
+ SDL_PIXELFORMAT_INDEX2MSB =
+ SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_1234, 0,
+ 2, 0),
SDL_PIXELFORMAT_INDEX4LSB =
SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
4, 0),
@@ -276,11 +286,19 @@ typedef enum
SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
+ SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_RGBX8888,
+ SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_XRGB8888,
+ SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_BGRX8888,
+ SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_XBGR8888,
#else
SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
+ SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_XBGR8888,
+ SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_BGRX8888,
+ SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_XRGB8888,
+ SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_RGBX8888,
#endif
SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */
@@ -302,9 +320,10 @@ typedef enum
} SDL_PixelFormatEnum;
/**
- * The bits of this structure can be directly reinterpreted as an integer-packed
- * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888
- * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems).
+ * The bits of this structure can be directly reinterpreted as an
+ * integer-packed color which uses the SDL_PIXELFORMAT_RGBA32 format
+ * (SDL_PIXELFORMAT_ABGR8888 on little-endian systems and
+ * SDL_PIXELFORMAT_RGBA8888 on big-endian systems).
*/
typedef struct SDL_Color
{
@@ -324,7 +343,30 @@ typedef struct SDL_Palette
} SDL_Palette;
/**
- * \note Everything in the pixel format structure is read-only.
+ * A structure that contains pixel format information.
+ *
+ * Everything in the pixel format structure is read-only.
+ *
+ * A pixel format has either a palette or masks. If a palette is used `Rmask`,
+ * `Gmask`, `Bmask`, and `Amask` will be 0.
+ *
+ * An SDL_PixelFormat describes the format of the pixel data stored at the
+ * `pixels` field of an SDL_Surface. Every surface stores an SDL_PixelFormat
+ * in the `format` field.
+ *
+ * If you wish to do pixel level modifications on a surface, then
+ * understanding how SDL stores its color information is essential.
+ *
+ * For information on modern pixel color spaces, see the following Wikipedia
+ * article: http://en.wikipedia.org/wiki/RGBA_color_space
+ *
+ * \sa SDL_ConvertSurface
+ * \sa SDL_GetRGB
+ * \sa SDL_GetRGBA
+ * \sa SDL_MapRGB
+ * \sa SDL_MapRGBA
+ * \sa SDL_AllocFormat
+ * \sa SDL_FreeFormat
*/
typedef struct SDL_PixelFormat
{
@@ -352,7 +394,7 @@ typedef struct SDL_PixelFormat
/**
* Get the human readable name of a pixel format.
*
- * \param format the pixel format to query
+ * \param format the pixel format to query.
* \returns the human readable name of the specified pixel format or
* `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized.
*
@@ -363,12 +405,12 @@ extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);
/**
* Convert one of the enumerated pixel formats to a bpp value and RGBA masks.
*
- * \param format one of the SDL_PixelFormatEnum values
- * \param bpp a bits per pixel value; usually 15, 16, or 32
- * \param Rmask a pointer filled in with the red mask for the format
- * \param Gmask a pointer filled in with the green mask for the format
- * \param Bmask a pointer filled in with the blue mask for the format
- * \param Amask a pointer filled in with the alpha mask for the format
+ * \param format one of the SDL_PixelFormatEnum values.
+ * \param bpp a bits per pixel value; usually 15, 16, or 32.
+ * \param Rmask a pointer filled in with the red mask for the format.
+ * \param Gmask a pointer filled in with the green mask for the format.
+ * \param Bmask a pointer filled in with the blue mask for the format.
+ * \param Amask a pointer filled in with the alpha mask for the format.
* \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't
* possible; call SDL_GetError() for more information.
*
@@ -389,12 +431,12 @@ extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,
* This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't
* possible.
*
- * \param bpp a bits per pixel value; usually 15, 16, or 32
- * \param Rmask the red mask for the format
- * \param Gmask the green mask for the format
- * \param Bmask the blue mask for the format
- * \param Amask the alpha mask for the format
- * \returns one of the SDL_PixelFormatEnum values
+ * \param bpp a bits per pixel value; usually 15, 16, or 32.
+ * \param Rmask the red mask for the format.
+ * \param Gmask the green mask for the format.
+ * \param Bmask the blue mask for the format.
+ * \param Amask the alpha mask for the format.
+ * \returns one of the SDL_PixelFormatEnum values.
*
* \since This function is available since SDL 2.0.0.
*
@@ -413,7 +455,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,
* allocated), and hence should not be modified, especially the palette. Weird
* errors such as `Blit combination not supported` may occur.
*
- * \param pixel_format one of the SDL_PixelFormatEnum values
+ * \param pixel_format one of the SDL_PixelFormatEnum values.
* \returns the new SDL_PixelFormat structure or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -426,7 +468,7 @@ extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);
/**
* Free an SDL_PixelFormat structure allocated by SDL_AllocFormat().
*
- * \param format the SDL_PixelFormat structure to free
+ * \param format the SDL_PixelFormat structure to free.
*
* \since This function is available since SDL 2.0.0.
*
@@ -439,7 +481,7 @@ extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);
*
* The palette entries are initialized to white.
*
- * \param ncolors represents the number of color entries in the color palette
+ * \param ncolors represents the number of color entries in the color palette.
* \returns a new SDL_Palette structure on success or NULL on failure (e.g. if
* there wasn't enough memory); call SDL_GetError() for more
* information.
@@ -453,8 +495,8 @@ extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);
/**
* Set the palette for a pixel format structure.
*
- * \param format the SDL_PixelFormat structure that will use the palette
- * \param palette the SDL_Palette structure that will be used
+ * \param format the SDL_PixelFormat structure that will use the palette.
+ * \param palette the SDL_Palette structure that will be used.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -469,10 +511,10 @@ extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,
/**
* Set a range of colors in a palette.
*
- * \param palette the SDL_Palette structure to modify
- * \param colors an array of SDL_Color structures to copy into the palette
- * \param firstcolor the index of the first palette entry to modify
- * \param ncolors the number of entries to modify
+ * \param palette the SDL_Palette structure to modify.
+ * \param colors an array of SDL_Color structures to copy into the palette.
+ * \param firstcolor the index of the first palette entry to modify.
+ * \param ncolors the number of entries to modify.
* \returns 0 on success or a negative error code if not all of the colors
* could be set; call SDL_GetError() for more information.
*
@@ -488,7 +530,7 @@ extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,
/**
* Free a palette created with SDL_AllocPalette().
*
- * \param palette the SDL_Palette structure to be freed
+ * \param palette the SDL_Palette structure to be freed.
*
* \since This function is available since SDL 2.0.0.
*
@@ -514,11 +556,11 @@ extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);
* format the return value can be assigned to a Uint16, and similarly a Uint8
* for an 8-bpp format).
*
- * \param format an SDL_PixelFormat structure describing the pixel format
- * \param r the red component of the pixel in the range 0-255
- * \param g the green component of the pixel in the range 0-255
- * \param b the blue component of the pixel in the range 0-255
- * \returns a pixel value
+ * \param format an SDL_PixelFormat structure describing the pixel format.
+ * \param r the red component of the pixel in the range 0-255.
+ * \param g the green component of the pixel in the range 0-255.
+ * \param b the blue component of the pixel in the range 0-255.
+ * \returns a pixel value.
*
* \since This function is available since SDL 2.0.0.
*
@@ -548,12 +590,12 @@ extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,
* for an 8-bpp format).
*
* \param format an SDL_PixelFormat structure describing the format of the
- * pixel
- * \param r the red component of the pixel in the range 0-255
- * \param g the green component of the pixel in the range 0-255
- * \param b the blue component of the pixel in the range 0-255
- * \param a the alpha component of the pixel in the range 0-255
- * \returns a pixel value
+ * pixel.
+ * \param r the red component of the pixel in the range 0-255.
+ * \param g the green component of the pixel in the range 0-255.
+ * \param b the blue component of the pixel in the range 0-255.
+ * \param a the alpha component of the pixel in the range 0-255.
+ * \returns a pixel value.
*
* \since This function is available since SDL 2.0.0.
*
@@ -573,12 +615,12 @@ extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,
* (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,
* 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).
*
- * \param pixel a pixel value
+ * \param pixel a pixel value.
* \param format an SDL_PixelFormat structure describing the format of the
- * pixel
- * \param r a pointer filled in with the red component
- * \param g a pointer filled in with the green component
- * \param b a pointer filled in with the blue component
+ * pixel.
+ * \param r a pointer filled in with the red component.
+ * \param g a pointer filled in with the green component.
+ * \param b a pointer filled in with the blue component.
*
* \since This function is available since SDL 2.0.0.
*
@@ -601,13 +643,13 @@ extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,
* If the surface has no alpha component, the alpha will be returned as 0xff
* (100% opaque).
*
- * \param pixel a pixel value
+ * \param pixel a pixel value.
* \param format an SDL_PixelFormat structure describing the format of the
- * pixel
- * \param r a pointer filled in with the red component
- * \param g a pointer filled in with the green component
- * \param b a pointer filled in with the blue component
- * \param a a pointer filled in with the alpha component
+ * pixel.
+ * \param r a pointer filled in with the red component.
+ * \param g a pointer filled in with the green component.
+ * \param b a pointer filled in with the blue component.
+ * \param a a pointer filled in with the alpha component.
*
* \since This function is available since SDL 2.0.0.
*
@@ -623,8 +665,8 @@ extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,
/**
* Calculate a 256 entry gamma ramp for a gamma value.
*
- * \param gamma a gamma value where 0.0 is black and 1.0 is identity
- * \param ramp an array of 256 values filled in with the gamma ramp
+ * \param gamma a gamma value where 0.0 is black and 1.0 is identity.
+ * \param ramp an array of 256 values filled in with the gamma ramp.
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_platform.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_platform.h
index d2a7e052d..64ece4fe7 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_platform.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_platform.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_platform.h
+ * # CategoryPlatform
*
- * Try to get a standard set of platform defines.
+ * Try to get a standard set of platform defines.
*/
#ifndef SDL_platform_h_
@@ -73,7 +73,13 @@
#if defined(__APPLE__)
/* lets us know what version of Mac OS X we're compiling on */
#include
+#ifndef __has_extension /* Older compilers don't support this */
+#define __has_extension(x) 0
#include
+#undef __has_extension
+#else
+#include
+#endif
/* Fix building with older SDKs that don't define these
See this for more information:
@@ -166,6 +172,12 @@
#define WINAPI_FAMILY_WINRT 0
#endif /* HAVE_WINAPIFAMILY_H */
+#if (HAVE_WINAPIFAMILY_H) && defined(WINAPI_FAMILY_PHONE_APP)
+#define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
+#else
+#define SDL_WINAPI_FAMILY_PHONE 0
+#endif
+
#if WINAPI_FAMILY_WINRT
#undef __WINRT__
#define __WINRT__ 1
@@ -193,8 +205,10 @@
#undef __GDK__
#define __GDK__ 1
#endif
-#if defined(__PSP__)
+#if defined(__PSP__) || defined(__psp__)
+#ifdef __PSP__
#undef __PSP__
+#endif
#define __PSP__ 1
#endif
#if defined(PS2)
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_power.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_power.h
index 1d75704c4..755c5d42a 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_power.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_power.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -23,9 +23,9 @@
#define SDL_power_h_
/**
- * \file SDL_power.h
+ * # CategoryPower
*
- * Header for the SDL power management routines.
+ * Header for the SDL power management routines.
*/
#include "SDL_stdinc.h"
@@ -37,9 +37,9 @@ extern "C" {
#endif
/**
- * The basic state for the system's power supply.
+ * The basic state for the system's power supply.
*/
-typedef enum
+typedef enum SDL_PowerState
{
SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */
SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */
@@ -66,10 +66,10 @@ typedef enum
*
* \param seconds seconds of battery life left, you can pass a NULL here if
* you don't care, will return -1 if we can't determine a
- * value, or we're not running on a battery
+ * value, or we're not running on a battery.
* \param percent percentage of battery life left, between 0 and 100, you can
* pass a NULL here if you don't care, will return -1 if we
- * can't determine a value, or we're not running on a battery
+ * can't determine a value, or we're not running on a battery.
* \returns an SDL_PowerState enum representing the current battery state.
*
* \since This function is available since SDL 2.0.0.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_quit.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_quit.h
index d8ceb8943..03630e232 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_quit.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_quit.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,20 @@
*/
/**
- * \file SDL_quit.h
+ * # CategoryQuit
*
- * Include file for SDL quit event handling.
+ * An SDL_QUIT event is generated when the user tries to close the application
+ * window. If it is ignored or filtered out, the window will remain open. If
+ * it is not ignored or filtered, it is queued normally and the window is
+ * allowed to close. When the window is closed, screen updates will complete,
+ * but have no effect.
+ *
+ * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) and
+ * SIGTERM (system termination request), if handlers do not already exist,
+ * that generate SDL_QUIT events as well. There is no way to determine the
+ * cause of an SDL_QUIT event, but setting a signal handler in your
+ * application will override the default generation of quit events for that
+ * signal.
*/
#ifndef SDL_quit_h_
@@ -31,25 +42,6 @@
#include "SDL_stdinc.h"
#include "SDL_error.h"
-/**
- * \file SDL_quit.h
- *
- * An ::SDL_QUIT event is generated when the user tries to close the application
- * window. If it is ignored or filtered out, the window will remain open.
- * If it is not ignored or filtered, it is queued normally and the window
- * is allowed to close. When the window is closed, screen updates will
- * complete, but have no effect.
- *
- * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)
- * and SIGTERM (system termination request), if handlers do not already
- * exist, that generate ::SDL_QUIT events as well. There is no way
- * to determine the cause of an ::SDL_QUIT event, but setting a signal
- * handler in your application will override the default generation of
- * quit events for that signal.
- *
- * \sa SDL_Quit()
- */
-
/* There are no functions directly affecting the quit event */
#define SDL_QuitRequested() \
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rect.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rect.h
index 9611a311c..b7e609d94 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rect.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rect.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_rect.h
+ * # CategoryRect
*
- * Header file for SDL_rect definition and management functions.
+ * Header file for SDL_rect definition and management functions.
*/
#ifndef SDL_rect_h_
@@ -135,8 +135,8 @@ SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)
*
* If either pointer is NULL the function will return SDL_FALSE.
*
- * \param A an SDL_Rect structure representing the first rectangle
- * \param B an SDL_Rect structure representing the second rectangle
+ * \param A an SDL_Rect structure representing the first rectangle.
+ * \param B an SDL_Rect structure representing the second rectangle.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -151,10 +151,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,
*
* If `result` is NULL then this function will return SDL_FALSE.
*
- * \param A an SDL_Rect structure representing the first rectangle
- * \param B an SDL_Rect structure representing the second rectangle
+ * \param A an SDL_Rect structure representing the first rectangle.
+ * \param B an SDL_Rect structure representing the second rectangle.
* \param result an SDL_Rect structure filled in with the intersection of
- * rectangles `A` and `B`
+ * rectangles `A` and `B`.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -168,10 +168,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,
/**
* Calculate the union of two rectangles.
*
- * \param A an SDL_Rect structure representing the first rectangle
- * \param B an SDL_Rect structure representing the second rectangle
+ * \param A an SDL_Rect structure representing the first rectangle.
+ * \param B an SDL_Rect structure representing the second rectangle.
* \param result an SDL_Rect structure filled in with the union of rectangles
- * `A` and `B`
+ * `A` and `B`.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -186,11 +186,11 @@ extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
* considered.
*
* \param points an array of SDL_Point structures representing points to be
- * enclosed
- * \param count the number of structures in the `points` array
- * \param clip an SDL_Rect used for clipping or NULL to enclose all points
+ * enclosed.
+ * \param count the number of structures in the `points` array.
+ * \param clip an SDL_Rect used for clipping or NULL to enclose all points.
* \param result an SDL_Rect structure filled in with the minimal enclosing
- * rectangle
+ * rectangle.
* \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the
* points were outside of the clipping rectangle.
*
@@ -210,11 +210,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,
* both ends will be clipped to the boundary of the rectangle and the new
* coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.
*
- * \param rect an SDL_Rect structure representing the rectangle to intersect
- * \param X1 a pointer to the starting X-coordinate of the line
- * \param Y1 a pointer to the starting Y-coordinate of the line
- * \param X2 a pointer to the ending X-coordinate of the line
- * \param Y2 a pointer to the ending Y-coordinate of the line
+ * \param rect an SDL_Rect structure representing the rectangle to intersect.
+ * \param X1 a pointer to the starting X-coordinate of the line.
+ * \param Y1 a pointer to the starting Y-coordinate of the line.
+ * \param X2 a pointer to the ending X-coordinate of the line.
+ * \param Y2 a pointer to the ending Y-coordinate of the line.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -274,8 +274,8 @@ SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b
*
* If either pointer is NULL the function will return SDL_FALSE.
*
- * \param A an SDL_FRect structure representing the first rectangle
- * \param B an SDL_FRect structure representing the second rectangle
+ * \param A an SDL_FRect structure representing the first rectangle.
+ * \param B an SDL_FRect structure representing the second rectangle.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.22.
@@ -290,10 +290,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A,
*
* If `result` is NULL then this function will return SDL_FALSE.
*
- * \param A an SDL_FRect structure representing the first rectangle
- * \param B an SDL_FRect structure representing the second rectangle
+ * \param A an SDL_FRect structure representing the first rectangle.
+ * \param B an SDL_FRect structure representing the second rectangle.
* \param result an SDL_FRect structure filled in with the intersection of
- * rectangles `A` and `B`
+ * rectangles `A` and `B`.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.22.
@@ -307,10 +307,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A,
/**
* Calculate the union of two rectangles with float precision.
*
- * \param A an SDL_FRect structure representing the first rectangle
- * \param B an SDL_FRect structure representing the second rectangle
+ * \param A an SDL_FRect structure representing the first rectangle.
+ * \param B an SDL_FRect structure representing the second rectangle.
* \param result an SDL_FRect structure filled in with the union of rectangles
- * `A` and `B`
+ * `A` and `B`.
*
* \since This function is available since SDL 2.0.22.
*/
@@ -326,11 +326,11 @@ extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A,
* considered.
*
* \param points an array of SDL_FPoint structures representing points to be
- * enclosed
- * \param count the number of structures in the `points` array
- * \param clip an SDL_FRect used for clipping or NULL to enclose all points
+ * enclosed.
+ * \param count the number of structures in the `points` array.
+ * \param clip an SDL_FRect used for clipping or NULL to enclose all points.
* \param result an SDL_FRect structure filled in with the minimal enclosing
- * rectangle
+ * rectangle.
* \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the
* points were outside of the clipping rectangle.
*
@@ -351,11 +351,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points,
* both ends will be clipped to the boundary of the rectangle and the new
* coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.
*
- * \param rect an SDL_FRect structure representing the rectangle to intersect
- * \param X1 a pointer to the starting X-coordinate of the line
- * \param Y1 a pointer to the starting Y-coordinate of the line
- * \param X2 a pointer to the ending X-coordinate of the line
- * \param Y2 a pointer to the ending Y-coordinate of the line
+ * \param rect an SDL_FRect structure representing the rectangle to intersect.
+ * \param X1 a pointer to the starting X-coordinate of the line.
+ * \param Y1 a pointer to the starting Y-coordinate of the line.
+ * \param X2 a pointer to the ending X-coordinate of the line.
+ * \param Y2 a pointer to the ending Y-coordinate of the line.
* \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.22.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_render.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_render.h
index 2d3f07366..527417217 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_render.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_render.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,29 +20,30 @@
*/
/**
- * \file SDL_render.h
+ * # CategoryRender
*
- * Header file for SDL 2D rendering functions.
+ * Header file for SDL 2D rendering functions.
*
- * This API supports the following features:
- * * single pixel points
- * * single pixel lines
- * * filled rectangles
- * * texture images
+ * This API supports the following features:
*
- * The primitives may be drawn in opaque, blended, or additive modes.
+ * - single pixel points
+ * - single pixel lines
+ * - filled rectangles
+ * - texture images
*
- * The texture images may be drawn in opaque, blended, or additive modes.
- * They can have an additional color tint or alpha modulation applied to
- * them, and may also be stretched with linear interpolation.
+ * The primitives may be drawn in opaque, blended, or additive modes.
*
- * This API is designed to accelerate simple 2D operations. You may
- * want more functionality such as polygons and particle effects and
- * in that case you should use SDL's OpenGL/Direct3D support or one
- * of the many good 3D engines.
+ * The texture images may be drawn in opaque, blended, or additive modes. They
+ * can have an additional color tint or alpha modulation applied to them, and
+ * may also be stretched with linear interpolation.
*
- * These functions must be called from the main thread.
- * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995
+ * This API is designed to accelerate simple 2D operations. You may want more
+ * functionality such as polygons and particle effects and in that case you
+ * should use SDL's OpenGL/Direct3D support or one of the many good 3D
+ * engines.
+ *
+ * These functions must be called from the main thread. See this bug for
+ * details: https://github.com/libsdl-org/SDL/issues/986
*/
#ifndef SDL_render_h_
@@ -61,7 +62,7 @@ extern "C" {
/**
* Flags used when creating a rendering context
*/
-typedef enum
+typedef enum SDL_RendererFlags
{
SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */
SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware
@@ -78,7 +79,7 @@ typedef enum
typedef struct SDL_RendererInfo
{
const char *name; /**< The name of the renderer */
- Uint32 flags; /**< Supported ::SDL_RendererFlags */
+ Uint32 flags; /**< Supported SDL_RendererFlags */
Uint32 num_texture_formats; /**< The number of available texture formats */
Uint32 texture_formats[16]; /**< The available texture formats */
int max_texture_width; /**< The maximum texture width */
@@ -86,7 +87,7 @@ typedef struct SDL_RendererInfo
} SDL_RendererInfo;
/**
- * Vertex structure
+ * Vertex structure
*/
typedef struct SDL_Vertex
{
@@ -98,7 +99,7 @@ typedef struct SDL_Vertex
/**
* The scaling mode for a texture.
*/
-typedef enum
+typedef enum SDL_ScaleMode
{
SDL_ScaleModeNearest, /**< nearest pixel sampling */
SDL_ScaleModeLinear, /**< linear filtering */
@@ -108,7 +109,7 @@ typedef enum
/**
* The access pattern allowed for a texture.
*/
-typedef enum
+typedef enum SDL_TextureAccess
{
SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */
SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */
@@ -118,7 +119,7 @@ typedef enum
/**
* The texture channel modulation used in SDL_RenderCopy().
*/
-typedef enum
+typedef enum SDL_TextureModulate
{
SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */
SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */
@@ -128,7 +129,7 @@ typedef enum
/**
* Flip constants for SDL_RenderCopyEx
*/
-typedef enum
+typedef enum SDL_RendererFlip
{
SDL_FLIP_NONE = 0x00000000, /**< Do not flip */
SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */
@@ -171,9 +172,9 @@ extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);
/**
* Get info about a specific 2D rendering driver for the current display.
*
- * \param index the index of the driver to query information about
+ * \param index the index of the driver to query information about.
* \param info an SDL_RendererInfo structure to be filled with information on
- * the rendering driver
+ * the rendering driver.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -188,12 +189,12 @@ extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,
/**
* Create a window and default renderer.
*
- * \param width the width of the window
- * \param height the height of the window
+ * \param width the width of the window.
+ * \param height the height of the window.
* \param window_flags the flags used to create the window (see
- * SDL_CreateWindow())
- * \param window a pointer filled with the window, or NULL on error
- * \param renderer a pointer filled with the renderer, or NULL on error
+ * SDL_CreateWindow()).
+ * \param window a pointer filled with the window, or NULL on error.
+ * \param renderer a pointer filled with the renderer, or NULL on error.
* \returns 0 on success, or -1 on error; call SDL_GetError() for more
* information.
*
@@ -210,10 +211,10 @@ extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(
/**
* Create a 2D rendering context for a window.
*
- * \param window the window where rendering is displayed
+ * \param window the window where rendering is displayed.
* \param index the index of the rendering driver to initialize, or -1 to
- * initialize the first one supporting the requested flags
- * \param flags 0, or one or more SDL_RendererFlags OR'd together
+ * initialize the first one supporting the requested flags.
+ * \param flags 0, or one or more SDL_RendererFlags OR'd together.
* \returns a valid rendering context or NULL if there was an error; call
* SDL_GetError() for more information.
*
@@ -236,14 +237,14 @@ extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,
* SDL_Window as the final destination and not an SDL_Surface.
*
* \param surface the SDL_Surface structure representing the surface where
- * rendering is done
+ * rendering is done.
* \returns a valid rendering context or NULL if there was an error; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 2.0.0.
*
* \sa SDL_CreateRenderer
- * \sa SDL_CreateWindowRenderer
+ * \sa SDL_CreateWindowAndRenderer
* \sa SDL_DestroyRenderer
*/
extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);
@@ -251,7 +252,7 @@ extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface *
/**
* Get the renderer associated with a window.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the rendering context on success or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -264,7 +265,7 @@ extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);
/**
* Get the window associated with a renderer.
*
- * \param renderer the renderer to query
+ * \param renderer the renderer to query.
* \returns the window on success or NULL on failure; call SDL_GetError() for
* more information.
*
@@ -275,9 +276,9 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer)
/**
* Get information about a rendering context.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param info an SDL_RendererInfo structure filled with information about the
- * current renderer
+ * current renderer.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -295,9 +296,9 @@ extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,
* has more pixels than the window that contains it, so use this instead of
* SDL_GetWindowSize() to decide how much drawing area you have.
*
- * \param renderer the rendering context
- * \param w an int filled with the width
- * \param h an int filled with the height
+ * \param renderer the rendering context.
+ * \param w an int filled with the width.
+ * \param h an int filled with the height.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -314,11 +315,11 @@ extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,
* You can set the texture scaling method by setting
* `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture.
*
- * \param renderer the rendering context
- * \param format one of the enumerated values in SDL_PixelFormatEnum
- * \param access one of the enumerated values in SDL_TextureAccess
- * \param w the width of the texture in pixels
- * \param h the height of the texture in pixels
+ * \param renderer the rendering context.
+ * \param format one of the enumerated values in SDL_PixelFormatEnum.
+ * \param access one of the enumerated values in SDL_TextureAccess.
+ * \param w the width of the texture in pixels.
+ * \param h the height of the texture in pixels.
* \returns a pointer to the created texture or NULL if no rendering context
* was active, the format was unsupported, or the width or height
* were out of range; call SDL_GetError() for more information.
@@ -347,9 +348,9 @@ extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
* format of the surface. Use SDL_QueryTexture() to query the pixel format of
* the texture.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param surface the SDL_Surface structure containing pixel data used to fill
- * the texture
+ * the texture.
* \returns the created texture or NULL on failure; call SDL_GetError() for
* more information.
*
@@ -364,7 +365,7 @@ extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer
/**
* Query the attributes of a texture.
*
- * \param texture the texture to query
+ * \param texture the texture to query.
* \param format a pointer filled in with the raw format of the texture; the
* actual format may differ, but pixel transfers will use this
* format (one of the SDL_PixelFormatEnum values). This argument
@@ -399,10 +400,10 @@ extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,
* Color modulation is not always supported by the renderer; it will return -1
* if color modulation is not supported.
*
- * \param texture the texture to update
- * \param r the red color value multiplied into copy operations
- * \param g the green color value multiplied into copy operations
- * \param b the blue color value multiplied into copy operations
+ * \param texture the texture to update.
+ * \param r the red color value multiplied into copy operations.
+ * \param g the green color value multiplied into copy operations.
+ * \param b the blue color value multiplied into copy operations.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -418,10 +419,10 @@ extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,
/**
* Get the additional color value multiplied into render copy operations.
*
- * \param texture the texture to query
- * \param r a pointer filled in with the current red color value
- * \param g a pointer filled in with the current green color value
- * \param b a pointer filled in with the current blue color value
+ * \param texture the texture to query.
+ * \param r a pointer filled in with the current red color value.
+ * \param g a pointer filled in with the current green color value.
+ * \param b a pointer filled in with the current blue color value.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -445,8 +446,8 @@ extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,
* Alpha modulation is not always supported by the renderer; it will return -1
* if alpha modulation is not supported.
*
- * \param texture the texture to update
- * \param alpha the source alpha value multiplied into copy operations
+ * \param texture the texture to update.
+ * \param alpha the source alpha value multiplied into copy operations.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -461,8 +462,8 @@ extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
/**
* Get the additional alpha value multiplied into render copy operations.
*
- * \param texture the texture to query
- * \param alpha a pointer filled in with the current alpha value
+ * \param texture the texture to query.
+ * \param alpha a pointer filled in with the current alpha value.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -480,8 +481,8 @@ extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
* If the blend mode is not supported, the closest supported mode is chosen
* and this function returns -1.
*
- * \param texture the texture to update
- * \param blendMode the SDL_BlendMode to use for texture blending
+ * \param texture the texture to update.
+ * \param blendMode the SDL_BlendMode to use for texture blending.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -496,8 +497,8 @@ extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,
/**
* Get the blend mode used for texture copy operations.
*
- * \param texture the texture to query
- * \param blendMode a pointer filled in with the current SDL_BlendMode
+ * \param texture the texture to query.
+ * \param blendMode a pointer filled in with the current SDL_BlendMode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -579,12 +580,12 @@ extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture);
* While this function will work with streaming textures, for optimization
* reasons you may not get the pixels back if you lock the texture afterward.
*
- * \param texture the texture to update
+ * \param texture the texture to update.
* \param rect an SDL_Rect structure representing the area to update, or NULL
- * to update the entire texture
- * \param pixels the raw pixel data in the format of the texture
+ * to update the entire texture.
+ * \param pixels the raw pixel data in the format of the texture.
* \param pitch the number of bytes in a row of pixel data, including padding
- * between lines
+ * between lines.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -606,18 +607,18 @@ extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
* block of Y and U/V planes in the proper order, but this function is
* available if your pixel data is not contiguous.
*
- * \param texture the texture to update
+ * \param texture the texture to update.
* \param rect a pointer to the rectangle of pixels to update, or NULL to
- * update the entire texture
- * \param Yplane the raw pixel data for the Y plane
+ * update the entire texture.
+ * \param Yplane the raw pixel data for the Y plane.
* \param Ypitch the number of bytes between rows of pixel data for the Y
- * plane
- * \param Uplane the raw pixel data for the U plane
+ * plane.
+ * \param Uplane the raw pixel data for the U plane.
* \param Upitch the number of bytes between rows of pixel data for the U
- * plane
- * \param Vplane the raw pixel data for the V plane
+ * plane.
+ * \param Vplane the raw pixel data for the V plane.
* \param Vpitch the number of bytes between rows of pixel data for the V
- * plane
+ * plane.
* \returns 0 on success or -1 if the texture is not valid; call
* SDL_GetError() for more information.
*
@@ -638,7 +639,7 @@ extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
* block of NV12/21 planes in the proper order, but this function is available
* if your pixel data is not contiguous.
*
- * \param texture the texture to update
+ * \param texture the texture to update.
* \param rect a pointer to the rectangle of pixels to update, or NULL to
* update the entire texture.
* \param Yplane the raw pixel data for the Y plane.
@@ -668,13 +669,13 @@ extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture,
* changes.
*
* \param texture the texture to lock for access, which was created with
- * `SDL_TEXTUREACCESS_STREAMING`
+ * `SDL_TEXTUREACCESS_STREAMING`.
* \param rect an SDL_Rect structure representing the area to lock for access;
- * NULL to lock the entire texture
+ * NULL to lock the entire texture.
* \param pixels this is filled in with a pointer to the locked pixels,
- * appropriately offset by the locked area
+ * appropriately offset by the locked area.
* \param pitch this is filled in with the pitch of the locked pixels; the
- * pitch is the length of one row in bytes
+ * pitch is the length of one row in bytes.
* \returns 0 on success or a negative error code if the texture is not valid
* or was not created with `SDL_TEXTUREACCESS_STREAMING`; call
* SDL_GetError() for more information.
@@ -706,13 +707,13 @@ extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
* or SDL_DestroyTexture(). The caller should not free it.
*
* \param texture the texture to lock for access, which was created with
- * `SDL_TEXTUREACCESS_STREAMING`
+ * `SDL_TEXTUREACCESS_STREAMING`.
* \param rect a pointer to the rectangle to lock for access. If the rect is
- * NULL, the entire texture will be locked
+ * NULL, the entire texture will be locked.
* \param surface this is filled in with an SDL surface representing the
- * locked area
+ * locked area.
* \returns 0 on success, or -1 if the texture is not valid or was not created
- * with `SDL_TEXTUREACCESS_STREAMING`
+ * with `SDL_TEXTUREACCESS_STREAMING`.
*
* \since This function is available since SDL 2.0.12.
*
@@ -734,7 +735,7 @@ extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,
* Which is to say: locking and immediately unlocking a texture can result in
* corrupted textures, depending on the renderer in use.
*
- * \param texture a texture locked by SDL_LockTexture()
+ * \param texture a texture locked by SDL_LockTexture().
*
* \since This function is available since SDL 2.0.0.
*
@@ -745,7 +746,7 @@ extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);
/**
* Determine whether a renderer supports the use of render targets.
*
- * \param renderer the renderer that will be checked
+ * \param renderer the renderer that will be checked.
* \returns SDL_TRUE if supported or SDL_FALSE if not.
*
* \since This function is available since SDL 2.0.0.
@@ -763,9 +764,12 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *rendere
*
* The default render target is the window for which the renderer was created.
* To stop rendering to a texture and render to the window again, call this
- * function with a NULL `texture`.
+ * function with a NULL `texture`. This will reset the renderer's viewport,
+ * clipping rectangle, and scaling settings to the state they were in before
+ * setting a non-NULL `texture` target, losing any changes made in the
+ * meantime.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param texture the targeted texture, which must be created with the
* `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the
* window instead of a texture.
@@ -783,9 +787,9 @@ extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,
* Get the current render target.
*
* The default render target is the window for which the renderer was created,
- * and is reported a NULL here.
+ * and is reported as NULL here.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \returns the current render target or NULL for the default render target.
*
* \since This function is available since SDL 2.0.0.
@@ -810,9 +814,9 @@ extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer
* If this function results in scaling or subpixel drawing by the rendering
* backend, it will be handled using the appropriate quality hints.
*
- * \param renderer the renderer for which resolution should be set
- * \param w the width of the logical resolution
- * \param h the height of the logical resolution
+ * \param renderer the renderer for which resolution should be set.
+ * \param w the width of the logical resolution.
+ * \param h the height of the logical resolution.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -833,9 +837,9 @@ extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, in
* When using a target texture: Never return 0 for `w` and `h` at first. Then
* it returns the logical width and height that are set.
*
- * \param renderer a rendering context
- * \param w an int to be filled with the width
- * \param h an int to be filled with the height
+ * \param renderer a rendering context.
+ * \param w an int to be filled with the width.
+ * \param h an int to be filled with the height.
*
* \since This function is available since SDL 2.0.0.
*
@@ -850,8 +854,8 @@ extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, i
* when a resolution is between two multiples of a logical size, the viewport
* size is rounded down to the lower multiple.
*
- * \param renderer the renderer for which integer scaling should be set
- * \param enable enable or disable the integer scaling for rendering
+ * \param renderer the renderer for which integer scaling should be set.
+ * \param enable enable or disable the integer scaling for rendering.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -866,7 +870,7 @@ extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,
/**
* Get whether integer scales are forced for resolution-independent rendering.
*
- * \param renderer the renderer from which integer scaling should be queried
+ * \param renderer the renderer from which integer scaling should be queried.
* \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on
* failure; call SDL_GetError() for more information.
*
@@ -882,9 +886,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * render
* When the window is resized, the viewport is reset to fill the entire new
* window size.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rect the SDL_Rect structure representing the drawing area, or NULL
- * to set the viewport to the entire target
+ * to set the viewport to the entire target.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -898,8 +902,8 @@ extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,
/**
* Get the drawing area for the current target.
*
- * \param renderer the rendering context
- * \param rect an SDL_Rect structure filled in with the current drawing area
+ * \param renderer the rendering context.
+ * \param rect an SDL_Rect structure filled in with the current drawing area.
*
* \since This function is available since SDL 2.0.0.
*
@@ -912,9 +916,9 @@ extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,
* Set the clip rectangle for rendering on the specified target.
*
* \param renderer the rendering context for which clip rectangle should be
- * set
+ * set.
* \param rect an SDL_Rect structure representing the clip area, relative to
- * the viewport, or NULL to disable clipping
+ * the viewport, or NULL to disable clipping.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -930,9 +934,9 @@ extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,
* Get the clip rectangle for the current target.
*
* \param renderer the rendering context from which clip rectangle should be
- * queried
+ * queried.
* \param rect an SDL_Rect structure filled in with the current clipping area
- * or an empty rectangle if clipping is disabled
+ * or an empty rectangle if clipping is disabled.
*
* \since This function is available since SDL 2.0.0.
*
@@ -945,7 +949,7 @@ extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,
/**
* Get whether clipping is enabled on the given renderer.
*
- * \param renderer the renderer from which clip state should be queried
+ * \param renderer the renderer from which clip state should be queried.
* \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call
* SDL_GetError() for more information.
*
@@ -968,9 +972,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer
* will be handled using the appropriate quality hints. For best results use
* integer scaling factors.
*
- * \param renderer a rendering context
- * \param scaleX the horizontal scaling factor
- * \param scaleY the vertical scaling factor
+ * \param renderer a rendering context.
+ * \param scaleX the horizontal scaling factor.
+ * \param scaleY the vertical scaling factor.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -985,9 +989,9 @@ extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,
/**
* Get the drawing scale for the current target.
*
- * \param renderer the renderer from which drawing scale should be queried
- * \param scaleX a pointer filled in with the horizontal scaling factor
- * \param scaleY a pointer filled in with the vertical scaling factor
+ * \param renderer the renderer from which drawing scale should be queried.
+ * \param scaleX a pointer filled in with the horizontal scaling factor.
+ * \param scaleY a pointer filled in with the vertical scaling factor.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1004,11 +1008,11 @@ extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
* and logical renderer size set
*
* \param renderer the renderer from which the logical coordinates should be
- * calculated
- * \param windowX the real X coordinate in the window
- * \param windowY the real Y coordinate in the window
- * \param logicalX the pointer filled with the logical x coordinate
- * \param logicalY the pointer filled with the logical y coordinate
+ * calculated.
+ * \param windowX the real X coordinate in the window.
+ * \param windowY the real Y coordinate in the window.
+ * \param logicalX the pointer filled with the logical x coordinate.
+ * \param logicalY the pointer filled with the logical y coordinate.
*
* \since This function is available since SDL 2.0.18.
*
@@ -1030,11 +1034,11 @@ extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer,
* and logical renderer size set
*
* \param renderer the renderer from which the window coordinates should be
- * calculated
- * \param logicalX the logical x coordinate
- * \param logicalY the logical y coordinate
- * \param windowX the pointer filled with the real X coordinate in the window
- * \param windowY the pointer filled with the real Y coordinate in the window
+ * calculated.
+ * \param logicalX the logical x coordinate.
+ * \param logicalY the logical y coordinate.
+ * \param windowX the pointer filled with the real X coordinate in the window.
+ * \param windowY the pointer filled with the real Y coordinate in the window.
*
* \since This function is available since SDL 2.0.18.
*
@@ -1053,13 +1057,13 @@ extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer,
* Set the color for drawing or filling rectangles, lines, and points, and for
* SDL_RenderClear().
*
- * \param renderer the rendering context
- * \param r the red value used to draw on the rendering target
- * \param g the green value used to draw on the rendering target
- * \param b the blue value used to draw on the rendering target
+ * \param renderer the rendering context.
+ * \param r the red value used to draw on the rendering target.
+ * \param g the green value used to draw on the rendering target.
+ * \param b the blue value used to draw on the rendering target.
* \param a the alpha value used to draw on the rendering target; usually
* `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to
- * specify how the alpha channel is used
+ * specify how the alpha channel is used.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1083,15 +1087,15 @@ extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
/**
* Get the color used for drawing operations (Rect, Line and Clear).
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param r a pointer filled in with the red value used to draw on the
- * rendering target
+ * rendering target.
* \param g a pointer filled in with the green value used to draw on the
- * rendering target
+ * rendering target.
* \param b a pointer filled in with the blue value used to draw on the
- * rendering target
+ * rendering target.
* \param a a pointer filled in with the alpha value used to draw on the
- * rendering target; usually `SDL_ALPHA_OPAQUE` (255)
+ * rendering target; usually `SDL_ALPHA_OPAQUE` (255).
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1108,8 +1112,8 @@ extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,
*
* If the blend mode is not supported, the closest supported mode is chosen.
*
- * \param renderer the rendering context
- * \param blendMode the SDL_BlendMode to use for blending
+ * \param renderer the rendering context.
+ * \param blendMode the SDL_BlendMode to use for blending.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1131,8 +1135,8 @@ extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,
/**
* Get the blend mode used for drawing operations.
*
- * \param renderer the rendering context
- * \param blendMode a pointer filled in with the current SDL_BlendMode
+ * \param renderer the rendering context.
+ * \param blendMode a pointer filled in with the current SDL_BlendMode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1149,7 +1153,7 @@ extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,
* This function clears the entire rendering target, ignoring the viewport and
* the clip rectangle.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1165,9 +1169,9 @@ extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
* SDL_RenderDrawPoint() draws a single point. If you want to draw multiple,
* use SDL_RenderDrawPoints() instead.
*
- * \param renderer the rendering context
- * \param x the x coordinate of the point
- * \param y the y coordinate of the point
+ * \param renderer the rendering context.
+ * \param x the x coordinate of the point.
+ * \param y the y coordinate of the point.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1190,10 +1194,10 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,
/**
* Draw multiple points on the current rendering target.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param points an array of SDL_Point structures that represent the points to
- * draw
- * \param count the number of points to draw
+ * draw.
+ * \param count the number of points to draw.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1220,11 +1224,11 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,
* SDL_RenderDrawLine() draws the line to include both end points. If you want
* to draw multiple, connecting lines use SDL_RenderDrawLines() instead.
*
- * \param renderer the rendering context
- * \param x1 the x coordinate of the start point
- * \param y1 the y coordinate of the start point
- * \param x2 the x coordinate of the end point
- * \param y2 the y coordinate of the end point
+ * \param renderer the rendering context.
+ * \param x1 the x coordinate of the start point.
+ * \param y1 the y coordinate of the start point.
+ * \param x2 the x coordinate of the end point.
+ * \param y2 the y coordinate of the end point.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1247,10 +1251,10 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,
/**
* Draw a series of connected lines on the current rendering target.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param points an array of SDL_Point structures representing points along
- * the lines
- * \param count the number of points, drawing count-1 lines
+ * the lines.
+ * \param count the number of points, drawing count-1 lines.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1274,9 +1278,9 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,
/**
* Draw a rectangle on the current rendering target.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rect an SDL_Rect structure representing the rectangle to draw, or
- * NULL to outline the entire rendering target
+ * NULL to outline the entire rendering target.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1299,10 +1303,10 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,
/**
* Draw some number of rectangles on the current rendering target.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rects an array of SDL_Rect structures representing the rectangles to
- * be drawn
- * \param count the number of rectangles
+ * be drawn.
+ * \param count the number of rectangles.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1330,9 +1334,9 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,
* color's alpha value is ignored unless blending is enabled with the
* appropriate call to SDL_SetRenderDrawBlendMode().
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rect the SDL_Rect structure representing the rectangle to fill, or
- * NULL for the entire rendering target
+ * NULL for the entire rendering target.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1356,10 +1360,10 @@ extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,
* Fill some number of rectangles on the current rendering target with the
* drawing color.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rects an array of SDL_Rect structures representing the rectangles to
- * be filled
- * \param count the number of rectangles
+ * be filled.
+ * \param count the number of rectangles.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1390,12 +1394,13 @@ extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,
* The texture alpha is affected based on its alpha modulation set by
* SDL_SetTextureAlphaMod().
*
- * \param renderer the rendering context
- * \param texture the source texture
- * \param srcrect the source SDL_Rect structure or NULL for the entire texture
+ * \param renderer the rendering context.
+ * \param texture the source texture.
+ * \param srcrect the source SDL_Rect structure or NULL for the entire
+ * texture.
* \param dstrect the destination SDL_Rect structure or NULL for the entire
* rendering target; the texture will be stretched to fill the
- * given rectangle
+ * given rectangle.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1428,18 +1433,19 @@ extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
* The texture alpha is affected based on its alpha modulation set by
* SDL_SetTextureAlphaMod().
*
- * \param renderer the rendering context
- * \param texture the source texture
- * \param srcrect the source SDL_Rect structure or NULL for the entire texture
+ * \param renderer the rendering context.
+ * \param texture the source texture.
+ * \param srcrect the source SDL_Rect structure or NULL for the entire
+ * texture.
* \param dstrect the destination SDL_Rect structure or NULL for the entire
- * rendering target
+ * rendering target.
* \param angle an angle in degrees that indicates the rotation that will be
- * applied to dstrect, rotating it in a clockwise direction
+ * applied to dstrect, rotating it in a clockwise direction.
* \param center a pointer to a point indicating the point around which
* dstrect will be rotated (if NULL, rotation will be done
- * around `dstrect.w / 2`, `dstrect.h / 2`)
+ * around `dstrect.w / 2`, `dstrect.h / 2`).
* \param flip a SDL_RendererFlip value stating which flipping actions should
- * be performed on the texture
+ * be performed on the texture.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1465,7 +1471,7 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,
* \param renderer The renderer which should draw a point.
* \param x The x coordinate of the point.
* \param y The y coordinate of the point.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1476,9 +1482,9 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,
* Draw multiple points on the current rendering target at subpixel precision.
*
* \param renderer The renderer which should draw multiple points.
- * \param points The points to draw
- * \param count The number of points to draw
- * \return 0 on success, or -1 on error
+ * \param points The points to draw.
+ * \param count The number of points to draw.
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1494,7 +1500,7 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,
* \param y1 The y coordinate of the start point.
* \param x2 The x coordinate of the end point.
* \param y2 The y coordinate of the end point.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1506,9 +1512,9 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,
* subpixel precision.
*
* \param renderer The renderer which should draw multiple lines.
- * \param points The points along the lines
- * \param count The number of points, drawing count-1 lines
- * \return 0 on success, or -1 on error
+ * \param points The points along the lines.
+ * \param count The number of points, drawing count-1 lines.
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1522,7 +1528,7 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
* \param renderer The renderer which should draw a rectangle.
* \param rect A pointer to the destination rectangle, or NULL to outline the
* entire rendering target.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1536,7 +1542,7 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
* \param renderer The renderer which should draw multiple rectangles.
* \param rects A pointer to an array of destination rectangles.
* \param count The number of rectangles.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1551,7 +1557,7 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
* \param renderer The renderer which should fill a rectangle.
* \param rect A pointer to the destination rectangle, or NULL for the entire
* rendering target.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1565,7 +1571,7 @@ extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,
* \param renderer The renderer which should fill multiple rectangles.
* \param rects A pointer to an array of destination rectangles.
* \param count The number of rectangles.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1583,7 +1589,7 @@ extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,
* texture.
* \param dstrect A pointer to the destination rectangle, or NULL for the
* entire rendering target.
- * \return 0 on success, or -1 on error
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1603,13 +1609,13 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
* \param dstrect A pointer to the destination rectangle, or NULL for the
* entire rendering target.
* \param angle An angle in degrees that indicates the rotation that will be
- * applied to dstrect, rotating it in a clockwise direction
+ * applied to dstrect, rotating it in a clockwise direction.
* \param center A pointer to a point indicating the point around which
* dstrect will be rotated (if NULL, rotation will be done
* around dstrect.w/2, dstrect.h/2).
* \param flip An SDL_RendererFlip value stating which flipping actions should
- * be performed on the texture
- * \return 0 on success, or -1 on error
+ * be performed on the texture.
+ * \return 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.10.
*/
@@ -1634,7 +1640,7 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
* array, if NULL all vertices will be rendered in sequential
* order.
* \param num_indices Number of indices.
- * \return 0 on success, or -1 if the operation is not supported
+ * \return 0 on success, or -1 if the operation is not supported.
*
* \since This function is available since SDL 2.0.18.
*
@@ -1653,18 +1659,18 @@ extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer,
*
* \param renderer The rendering context.
* \param texture (optional) The SDL texture to use.
- * \param xy Vertex positions
- * \param xy_stride Byte size to move from one element to the next element
- * \param color Vertex colors (as SDL_Color)
- * \param color_stride Byte size to move from one element to the next element
- * \param uv Vertex normalized texture coordinates
- * \param uv_stride Byte size to move from one element to the next element
+ * \param xy Vertex positions.
+ * \param xy_stride Byte size to move from one element to the next element.
+ * \param color Vertex colors (as SDL_Color).
+ * \param color_stride Byte size to move from one element to the next element.
+ * \param uv Vertex normalized texture coordinates.
+ * \param uv_stride Byte size to move from one element to the next element.
* \param num_vertices Number of vertices.
* \param indices (optional) An array of indices into the 'vertices' arrays,
* if NULL all vertices will be rendered in sequential order.
* \param num_indices Number of indices.
- * \param size_indices Index size: 1 (byte), 2 (short), 4 (int)
- * \return 0 on success, or -1 if the operation is not supported
+ * \param size_indices Index size: 1 (byte), 2 (short), 4 (int).
+ * \return 0 on success, or -1 if the operation is not supported.
*
* \since This function is available since SDL 2.0.18.
*
@@ -1693,13 +1699,13 @@ extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer,
* but it might contain additional padding (for example, 24bit RGB Windows
* Bitmap data pads all rows to multiples of 4 bytes).
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \param rect an SDL_Rect structure representing the area to read, or NULL
- * for the entire render target
+ * for the entire render target.
* \param format an SDL_PixelFormatEnum value of the desired format of the
- * pixel data, or 0 to use the format of the rendering target
- * \param pixels a pointer to the pixel data to copy into
- * \param pitch the pitch of the `pixels` parameter
+ * pixel data, or 0 to use the format of the rendering target.
+ * \param pixels a pointer to the pixel data to copy into.
+ * \param pitch the pitch of the `pixels` parameter.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1729,7 +1735,7 @@ extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
* starting each new frame's drawing, even if you plan to overwrite every
* pixel.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
*
* \threadsafety You may only call this function on the main thread. If this
* happens to work on a background thread on any given platform
@@ -1738,6 +1744,7 @@ extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
*
* \since This function is available since SDL 2.0.0.
*
+ * \sa SDL_CreateRenderer
* \sa SDL_RenderClear
* \sa SDL_RenderDrawLine
* \sa SDL_RenderDrawLines
@@ -1758,7 +1765,7 @@ extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
* Passing NULL or an otherwise invalid texture will set the SDL error message
* to "Invalid texture".
*
- * \param texture the texture to destroy
+ * \param texture the texture to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1773,7 +1780,7 @@ extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);
* If `renderer` is NULL, this function will return immediately after setting
* the SDL error message to "Invalid renderer". See SDL_GetError().
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1804,7 +1811,7 @@ extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
* and earlier, as earlier versions did not queue rendering commands at all,
* instead flushing them to the OS immediately.
*
- * \param renderer the rendering context
+ * \param renderer the rendering context.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1835,11 +1842,11 @@ extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);
* re-order the color channels in the shaders phase, so the uploaded texture
* may have swapped color channels.
*
- * \param texture the texture to bind to the current OpenGL/ES/ES2 context
+ * \param texture the texture to bind to the current OpenGL/ES/ES2 context.
* \param texw a pointer to a float value which will be filled with the
- * texture width or NULL if you don't need that value
+ * texture width or NULL if you don't need that value.
* \param texh a pointer to a float value which will be filled with the
- * texture height or NULL if you don't need that value
+ * texture height or NULL if you don't need that value.
* \returns 0 on success, or -1 if the operation is not supported; call
* SDL_GetError() for more information.
*
@@ -1855,8 +1862,9 @@ extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw
*
* See SDL_GL_BindTexture() for examples on how to use these functions
*
- * \param texture the texture to unbind from the current OpenGL/ES/ES2 context
- * \returns 0 on success, or -1 if the operation is not supported
+ * \param texture the texture to unbind from the current OpenGL/ES/ES2
+ * context.
+ * \returns 0 on success, or -1 if the operation is not supported.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1871,9 +1879,9 @@ extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
* This function returns `void *`, so SDL doesn't have to include Metal's
* headers, but it can be safely cast to a `CAMetalLayer *`.
*
- * \param renderer The renderer to query
+ * \param renderer The renderer to query.
* \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a
- * Metal renderer
+ * Metal renderer.
*
* \since This function is available since SDL 2.0.8.
*
@@ -1892,7 +1900,7 @@ extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
* hidden/minimized/offscreen. This doesn't apply to command encoders for
* render targets, just the window's backbuffer. Check your return values!
*
- * \param renderer The renderer to query
+ * \param renderer The renderer to query.
* \returns an `id` on success, or NULL if the
* renderer isn't a Metal renderer or there was an error.
*
@@ -1905,9 +1913,9 @@ extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * re
/**
* Toggle VSync of the given renderer.
*
- * \param renderer The renderer to toggle
- * \param vsync 1 for on, 0 for off. All other values are reserved
- * \returns a 0 int on success, or non-zero on failure
+ * \param renderer The renderer to toggle.
+ * \param vsync 1 for on, 0 for off. All other values are reserved.
+ * \returns a 0 int on success, or non-zero on failure.
*
* \since This function is available since SDL 2.0.18.
*/
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_revision.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_revision.h
index 4455a08b6..241012dfc 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_revision.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_revision.h
@@ -1,7 +1,8 @@
-/* Generated by updaterev.sh, do not edit */
-#ifdef SDL_VENDOR_INFO
-#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")"
-#else
-#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40"
-#endif
+/* #undef SDL_VENDOR_INFO */
#define SDL_REVISION_NUMBER 0
+
+#ifdef SDL_VENDOR_INFO
+#define SDL_REVISION "SDL-release-2.32.6-0-g6510d6ccb (" SDL_VENDOR_INFO ")"
+#else
+#define SDL_REVISION "SDL-release-2.32.6-0-g6510d6ccb"
+#endif
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rwops.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rwops.h
index 8615cb542..43c1b0ec7 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rwops.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_rwops.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,11 +19,13 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: RWOPS */
+
/**
- * \file SDL_rwops.h
+ * # CategoryRWOPS
*
- * This file provides a general interface for SDL to read and write
- * data streams. It can easily be extended to files, memory, etc.
+ * This file provides a general interface for SDL to read and write data
+ * streams. It can easily be extended to files, memory, etc.
*/
#ifndef SDL_rwops_h_
@@ -57,7 +59,7 @@ typedef struct SDL_RWops
Sint64 (SDLCALL * size) (struct SDL_RWops * context);
/**
- * Seek to \c offset relative to \c whence, one of stdio's whence values:
+ * Seek to `offset` relative to `whence`, one of stdio's whence values:
* RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END
*
* \return the final offset in the data stream, or -1 on error.
@@ -66,8 +68,8 @@ typedef struct SDL_RWops
int whence);
/**
- * Read up to \c maxnum objects each of size \c size from the data
- * stream to the area pointed at by \c ptr.
+ * Read up to `maxnum` objects each of size `size` from the data
+ * stream to the area pointed at by `ptr`.
*
* \return the number of objects read, or 0 at error or end of file.
*/
@@ -75,8 +77,8 @@ typedef struct SDL_RWops
size_t size, size_t maxnum);
/**
- * Write exactly \c num objects each of size \c size from the area
- * pointed at by \c ptr to data stream.
+ * Write exactly `num` objects each of size `size` from the area
+ * pointed at by `ptr` to data stream.
*
* \return the number of objects written, or 0 at error or end of file.
*/
@@ -186,7 +188,7 @@ typedef struct SDL_RWops
*
* Closing the SDL_RWops will close the file handle SDL is holding internally.
*
- * \param file a UTF-8 string representing the filename to open
+ * \param file a UTF-8 string representing the filename to open.
* \param mode an ASCII string representing the mode to be used for opening
* the file.
* \returns a pointer to the SDL_RWops structure that is created, or NULL on
@@ -224,10 +226,10 @@ extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose);
* `FILE*`, depending on what system headers are available to SDL. It is
* always intended to be the `FILE*` type from the C runtime's stdio.h.
*
- * \param fp the `FILE*` that feeds the SDL_RWops stream
+ * \param fp the `FILE*` that feeds the SDL_RWops stream.
* \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops,
* SDL_FALSE to leave the `FILE*` open when the RWops is
- * closed
+ * closed.
* \returns a pointer to the SDL_RWops structure that is created, or NULL on
* failure; call SDL_GetError() for more information.
*
@@ -260,8 +262,8 @@ extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,
* If you need to make sure the RWops never writes to the memory buffer, you
* should use SDL_RWFromConstMem() with a read-only buffer of memory instead.
*
- * \param mem a pointer to a buffer to feed an SDL_RWops stream
- * \param size the buffer size, in bytes
+ * \param mem a pointer to a buffer to feed an SDL_RWops stream.
+ * \param size the buffer size, in bytes.
* \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
* SDL_GetError() for more information.
*
@@ -295,8 +297,8 @@ extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);
* If you need to write to a memory buffer, you should use SDL_RWFromMem()
* with a writable buffer of memory instead.
*
- * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream
- * \param size the buffer size, in bytes
+ * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream.
+ * \param size the buffer size, in bytes.
* \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call
* SDL_GetError() for more information.
*
@@ -358,7 +360,7 @@ extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
* creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must
* be responsible for managing that memory in their **close** method.
*
- * \param area the SDL_RWops structure to be freed
+ * \param area the SDL_RWops structure to be freed.
*
* \since This function is available since SDL 2.0.0.
*
@@ -366,6 +368,7 @@ extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);
*/
extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
+/* Possible `whence` values for SDL_RWops seeking... */
#define RW_SEEK_SET 0 /**< Seek from the beginning of data */
#define RW_SEEK_CUR 1 /**< Seek relative to current read point */
#define RW_SEEK_END 2 /**< Seek relative to the end of data */
@@ -375,7 +378,7 @@ extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);
*
* Prior to SDL 2.0.10, this function was a macro.
*
- * \param context the SDL_RWops to get the size of the data stream from
+ * \param context the SDL_RWops to get the size of the data stream from.
* \returns the size of the data stream in the SDL_RWops on success, -1 if
* unknown or a negative error code on failure; call SDL_GetError()
* for more information.
@@ -402,10 +405,10 @@ extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);
*
* Prior to SDL 2.0.10, this function was a macro.
*
- * \param context a pointer to an SDL_RWops structure
+ * \param context a pointer to an SDL_RWops structure.
* \param offset an offset in bytes, relative to **whence** location; can be
- * negative
- * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`
+ * negative.
+ * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`.
* \returns the final offset in the data stream after the seek or -1 on error.
*
* \since This function is available since SDL 2.0.10.
@@ -432,7 +435,7 @@ extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
* Prior to SDL 2.0.10, this function was a macro.
*
* \param context a SDL_RWops data stream object from which to get the current
- * offset
+ * offset.
* \returns the current offset in the stream, or -1 if the information can not
* be determined.
*
@@ -462,10 +465,10 @@ extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);
*
* Prior to SDL 2.0.10, this function was a macro.
*
- * \param context a pointer to an SDL_RWops structure
- * \param ptr a pointer to a buffer to read data into
- * \param size the size of each object to read, in bytes
- * \param maxnum the maximum number of objects to be read
+ * \param context a pointer to an SDL_RWops structure.
+ * \param ptr a pointer to a buffer to read data into.
+ * \param size the size of each object to read, in bytes.
+ * \param maxnum the maximum number of objects to be read.
* \returns the number of objects read, or 0 at error or end of file; call
* SDL_GetError() for more information.
*
@@ -496,10 +499,10 @@ extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
*
* Prior to SDL 2.0.10, this function was a macro.
*
- * \param context a pointer to an SDL_RWops structure
- * \param ptr a pointer to a buffer containing data to write
- * \param size the size of an object to write, in bytes
- * \param num the number of objects to write
+ * \param context a pointer to an SDL_RWops structure.
+ * \param ptr a pointer to a buffer containing data to write.
+ * \param size the size of an object to write, in bytes.
+ * \param num the number of objects to write.
* \returns the number of objects written, which will be less than **num** on
* error; call SDL_GetError() for more information.
*
@@ -530,7 +533,7 @@ extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
*
* Prior to SDL 2.0.10, this function was a macro.
*
- * \param context SDL_RWops structure to close
+ * \param context SDL_RWops structure to close.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -555,9 +558,9 @@ extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);
*
* The data should be freed with SDL_free().
*
- * \param src the SDL_RWops to read all available data from
- * \param datasize if not NULL, will store the number of bytes read
- * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning
+ * \param src the SDL_RWops to read all available data from.
+ * \param datasize if not NULL, will store the number of bytes read.
+ * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning.
* \returns the data, or NULL if there was an error.
*
* \since This function is available since SDL 2.0.6.
@@ -578,8 +581,8 @@ extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src,
* Prior to SDL 2.0.10, this function was a macro wrapping around
* SDL_LoadFile_RW.
*
- * \param file the path to read all available data from
- * \param datasize if not NULL, will store the number of bytes read
+ * \param file the path to read all available data from.
+ * \param datasize if not NULL, will store the number of bytes read.
* \returns the data, or NULL if there was an error.
*
* \since This function is available since SDL 2.0.10.
@@ -596,7 +599,7 @@ extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);
/**
* Use this function to read a byte from an SDL_RWops.
*
- * \param src the SDL_RWops to read from
+ * \param src the SDL_RWops to read from.
* \returns the read byte on success or 0 on failure; call SDL_GetError() for
* more information.
*
@@ -613,7 +616,7 @@ extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 16 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -629,7 +632,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 16 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -645,7 +648,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 32 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -661,7 +664,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 32 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -677,7 +680,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 64 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -693,7 +696,7 @@ extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);
* SDL byteswaps the data only if necessary, so the data returned will be in
* the native byte order.
*
- * \param src the stream from which to read data
+ * \param src the stream from which to read data.
* \returns 64 bits of data in the native byte order of the platform.
*
* \since This function is available since SDL 2.0.0.
@@ -713,8 +716,8 @@ extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);
/**
* Use this function to write a byte to an SDL_RWops.
*
- * \param dst the SDL_RWops to write to
- * \param value the byte value to write
+ * \param dst the SDL_RWops to write to.
+ * \param value the byte value to write.
* \returns 1 on success or 0 on failure; call SDL_GetError() for more
* information.
*
@@ -732,8 +735,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);
* specifies native format, and the data written will be in little-endian
* format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -749,8 +752,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);
* SDL byteswaps the data only if necessary, so the application always
* specifies native format, and the data written will be in big-endian format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -767,8 +770,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);
* specifies native format, and the data written will be in little-endian
* format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -784,8 +787,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);
* SDL byteswaps the data only if necessary, so the application always
* specifies native format, and the data written will be in big-endian format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -802,8 +805,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);
* specifies native format, and the data written will be in little-endian
* format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
@@ -819,8 +822,8 @@ extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);
* SDL byteswaps the data only if necessary, so the application always
* specifies native format, and the data written will be in big-endian format.
*
- * \param dst the stream to which data will be written
- * \param value the data to be written, in native format
+ * \param dst the stream to which data will be written.
+ * \param value the data to be written, in native format.
* \returns 1 on successful write, 0 on error.
*
* \since This function is available since SDL 2.0.0.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_scancode.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_scancode.h
index a960a7991..0652d7ef6 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_scancode.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_scancode.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_scancode.h
+ * # CategoryScancode
*
- * Defines keyboard scancodes.
+ * Defines keyboard scancodes.
*/
#ifndef SDL_scancode_h_
@@ -31,16 +31,16 @@
#include "SDL_stdinc.h"
/**
- * \brief The SDL keyboard scancode representation.
+ * The SDL keyboard scancode representation.
*
- * Values of this type are used to represent keyboard keys, among other places
- * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the
- * SDL_Event structure.
+ * Values of this type are used to represent keyboard keys, among other places
+ * in the SDL_Keysym::scancode key.keysym.scancode field of the SDL_Event
+ * structure.
*
- * The values in this enumeration are based on the USB usage page standard:
- * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
+ * The values in this enumeration are based on the USB usage page standard:
+ * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
*/
-typedef enum
+typedef enum SDL_Scancode
{
SDL_SCANCODE_UNKNOWN = 0,
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_sensor.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_sensor.h
index 9ecce44b1..d4b1c511d 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_sensor.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_sensor.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,10 +20,9 @@
*/
/**
- * \file SDL_sensor.h
- *
- * Include file for SDL sensor event handling
+ * # CategorySensor
*
+ * Include file for SDL sensor event handling
*/
#ifndef SDL_sensor_h_
@@ -44,7 +43,7 @@ extern "C" {
* \brief SDL_sensor.h
*
* In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system
+ * with the SDL_INIT_SENSOR flag. This causes SDL to scan the system
* for sensors, and load appropriate drivers.
*/
@@ -52,21 +51,67 @@ struct _SDL_Sensor;
typedef struct _SDL_Sensor SDL_Sensor;
/**
- * This is a unique ID for a sensor for the time it is connected to the system,
- * and is never reused for the lifetime of the application.
+ * This is a unique ID for a sensor for the time it is connected to the
+ * system, and is never reused for the lifetime of the application.
*
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
+ * The ID value starts at 0 and increments from there. The value -1 is an
+ * invalid ID.
*/
typedef Sint32 SDL_SensorID;
-/* The different sensors defined by SDL
+/**
+ * The different sensors defined by SDL.
*
* Additional sensors may be available, using platform dependent semantics.
*
- * Hare are the additional Android sensors:
+ * Here are the additional Android sensors:
+ *
* https://developer.android.com/reference/android/hardware/SensorEvent.html#values
+ *
+ * Accelerometer sensor notes:
+ *
+ * The accelerometer returns the current acceleration in SI meters per second
+ * squared. This measurement includes the force of gravity, so a device at
+ * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the
+ * earth, which is a positive Y value.
+ *
+ * - `values[0]`: Acceleration on the x axis
+ * - `values[1]`: Acceleration on the y axis
+ * - `values[2]`: Acceleration on the z axis
+ *
+ * For phones and tablets held in natural orientation and game controllers
+ * held in front of you, the axes are defined as follows:
+ *
+ * - -X ... +X : left ... right
+ * - -Y ... +Y : bottom ... top
+ * - -Z ... +Z : farther ... closer
+ *
+ * The accelerometer axis data is not changed when the device is rotated.
+ *
+ * Gyroscope sensor notes:
+ *
+ * The gyroscope returns the current rate of rotation in radians per second.
+ * The rotation is positive in the counter-clockwise direction. That is, an
+ * observer looking from a positive location on one of the axes would see
+ * positive rotation on that axis when it appeared to be rotating
+ * counter-clockwise.
+ *
+ * - `values[0]`: Angular speed around the x axis (pitch)
+ * - `values[1]`: Angular speed around the y axis (yaw)
+ * - `values[2]`: Angular speed around the z axis (roll)
+ *
+ * For phones and tablets held in natural orientation and game controllers
+ * held in front of you, the axes are defined as follows:
+ *
+ * - -X ... +X : left ... right
+ * - -Y ... +Y : bottom ... top
+ * - -Z ... +Z : farther ... closer
+ *
+ * The gyroscope axis data is not changed when the device is rotated.
+ *
+ * \sa SDL_GetDisplayOrientation
*/
-typedef enum
+typedef enum SDL_SensorType
{
SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */
SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */
@@ -79,53 +124,15 @@ typedef enum
} SDL_SensorType;
/**
- * Accelerometer sensor
+ * A constant to represent standard gravity for accelerometer sensors.
*
- * The accelerometer returns the current acceleration in SI meters per
- * second squared. This measurement includes the force of gravity, so
- * a device at rest will have an value of SDL_STANDARD_GRAVITY away
- * from the center of the earth, which is a positive Y value.
- *
- * values[0]: Acceleration on the x axis
- * values[1]: Acceleration on the y axis
- * values[2]: Acceleration on the z axis
- *
- * For phones held in portrait mode and game controllers held in front of you,
- * the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- *
- * The axis data is not changed when the phone is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
+ * The accelerometer returns the current acceleration in SI meters per second
+ * squared. This measurement includes the force of gravity, so a device at
+ * rest will have an value of SDL_STANDARD_GRAVITY away from the center of the
+ * earth, which is a positive Y value.
*/
#define SDL_STANDARD_GRAVITY 9.80665f
-/**
- * Gyroscope sensor
- *
- * The gyroscope returns the current rate of rotation in radians per second.
- * The rotation is positive in the counter-clockwise direction. That is,
- * an observer looking from a positive location on one of the axes would
- * see positive rotation on that axis when it appeared to be rotating
- * counter-clockwise.
- *
- * values[0]: Angular speed around the x axis (pitch)
- * values[1]: Angular speed around the y axis (yaw)
- * values[2]: Angular speed around the z axis (roll)
- *
- * For phones held in portrait mode and game controllers held in front of you,
- * the axes are defined as follows:
- * -X ... +X : left ... right
- * -Y ... +Y : bottom ... top
- * -Z ... +Z : farther ... closer
- *
- * The axis data is not changed when the phone or controller is rotated.
- *
- * \sa SDL_GetDisplayOrientation()
- */
-
/* Function prototypes */
/**
@@ -155,7 +162,7 @@ extern DECLSPEC int SDLCALL SDL_NumSensors(void);
/**
* Get the implementation dependent name of a sensor.
*
- * \param device_index The sensor to obtain name from
+ * \param device_index The sensor to obtain name from.
* \returns the sensor name, or NULL if `device_index` is out of range.
*
* \since This function is available since SDL 2.0.9.
@@ -165,7 +172,7 @@ extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
/**
* Get the type of a sensor.
*
- * \param device_index The sensor to get the type from
+ * \param device_index The sensor to get the type from.
* \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is
* out of range.
*
@@ -176,7 +183,7 @@ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index)
/**
* Get the platform dependent type of a sensor.
*
- * \param device_index The sensor to check
+ * \param device_index The sensor to check.
* \returns the sensor platform dependent type, or -1 if `device_index` is out
* of range.
*
@@ -187,7 +194,7 @@ extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index)
/**
* Get the instance ID of a sensor.
*
- * \param device_index The sensor to get instance id from
+ * \param device_index The sensor to get instance id from.
* \returns the sensor instance ID, or -1 if `device_index` is out of range.
*
* \since This function is available since SDL 2.0.9.
@@ -197,7 +204,7 @@ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_in
/**
* Open a sensor for use.
*
- * \param device_index The sensor to open
+ * \param device_index The sensor to open.
* \returns an SDL_Sensor sensor object, or NULL if an error occurred.
*
* \since This function is available since SDL 2.0.9.
@@ -207,7 +214,7 @@ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
/**
* Return the SDL_Sensor associated with an instance id.
*
- * \param instance_id The sensor from instance id
+ * \param instance_id The sensor from instance id.
* \returns an SDL_Sensor object.
*
* \since This function is available since SDL 2.0.9.
@@ -217,7 +224,7 @@ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instan
/**
* Get the implementation dependent name of a sensor
*
- * \param sensor The SDL_Sensor object
+ * \param sensor The SDL_Sensor object.
* \returns the sensor name, or NULL if `sensor` is NULL.
*
* \since This function is available since SDL 2.0.9.
@@ -227,7 +234,7 @@ extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
/**
* Get the type of a sensor.
*
- * \param sensor The SDL_Sensor object to inspect
+ * \param sensor The SDL_Sensor object to inspect.
* \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is
* NULL.
*
@@ -238,7 +245,7 @@ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
/**
* Get the platform dependent type of a sensor.
*
- * \param sensor The SDL_Sensor object to inspect
+ * \param sensor The SDL_Sensor object to inspect.
* \returns the sensor platform dependent type, or -1 if `sensor` is NULL.
*
* \since This function is available since SDL 2.0.9.
@@ -248,7 +255,7 @@ extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
/**
* Get the instance ID of a sensor.
*
- * \param sensor The SDL_Sensor object to inspect
+ * \param sensor The SDL_Sensor object to inspect.
* \returns the sensor instance ID, or -1 if `sensor` is NULL.
*
* \since This function is available since SDL 2.0.9.
@@ -260,9 +267,9 @@ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor)
*
* The number of values and interpretation of the data is sensor dependent.
*
- * \param sensor The SDL_Sensor object to query
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
+ * \param sensor The SDL_Sensor object to query.
+ * \param data A pointer filled with the current sensor state.
+ * \param num_values The number of values to write to data.
* \returns 0 or -1 if an error occurred.
*
* \since This function is available since SDL 2.0.9.
@@ -275,11 +282,11 @@ extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, i
*
* The number of values and interpretation of the data is sensor dependent.
*
- * \param sensor The SDL_Sensor object to query
+ * \param sensor The SDL_Sensor object to query.
* \param timestamp A pointer filled with the timestamp in microseconds of the
- * current sensor reading if available, or 0 if not
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
+ * current sensor reading if available, or 0 if not.
+ * \param data A pointer filled with the current sensor state.
+ * \param num_values The number of values to write to data.
* \returns 0 or -1 if an error occurred.
*
* \since This function is available since SDL 2.26.0.
@@ -289,7 +296,7 @@ extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, U
/**
* Close a sensor previously opened with SDL_SensorOpen().
*
- * \param sensor The SDL_Sensor object to close
+ * \param sensor The SDL_Sensor object to close.
*
* \since This function is available since SDL 2.0.9.
*/
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_shape.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_shape.h
index f66babc01..d3560845f 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_shape.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_shape.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -48,18 +48,18 @@ extern "C" {
* and flags.
*
* \param title The title of the window, in UTF-8 encoding.
- * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
- * ::SDL_WINDOWPOS_UNDEFINED.
- * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
- * ::SDL_WINDOWPOS_UNDEFINED.
+ * \param x The x position of the window, SDL_WINDOWPOS_CENTERED, or
+ * SDL_WINDOWPOS_UNDEFINED.
+ * \param y The y position of the window, SDL_WINDOWPOS_CENTERED, or
+ * SDL_WINDOWPOS_UNDEFINED.
* \param w The width of the window.
* \param h The height of the window.
* \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with
- * any of the following: ::SDL_WINDOW_OPENGL,
- * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN,
- * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
- * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set,
- * and ::SDL_WINDOW_FULLSCREEN is always unset.
+ * any of the following: SDL_WINDOW_OPENGL,
+ * SDL_WINDOW_INPUT_GRABBED, SDL_WINDOW_HIDDEN,
+ * SDL_WINDOW_RESIZABLE, SDL_WINDOW_MAXIMIZED,
+ * SDL_WINDOW_MINIMIZED, SDL_WINDOW_BORDERLESS is always set, and
+ * SDL_WINDOW_FULLSCREEN is always unset.
* \return the window created, or NULL if window creation failed.
*
* \since This function is available since SDL 2.0.0.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_stdinc.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_stdinc.h
index 182ed86ee..71fcea5e4 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_stdinc.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_stdinc.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,10 +19,12 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: StdInc */
+
/**
- * \file SDL_stdinc.h
+ * # CategoryStdInc
*
- * This is a general header that includes C language support.
+ * This is a general header that includes C language support.
*/
#ifndef SDL_stdinc_h_
@@ -107,7 +109,7 @@
# elif defined(__MRC__)
void *alloca(unsigned);
# else
-char *alloca();
+void *alloca(size_t);
# endif
#endif
@@ -129,15 +131,19 @@ char *alloca();
#endif
/**
- * The number of elements in an array.
+ * The number of elements in an array.
*/
#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
#define SDL_TABLESIZE(table) SDL_arraysize(table)
/**
- * Macro useful for building other macros with strings in them
+ * Macro useful for building other macros with strings in them
*
- * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
+ * e.g:
+ *
+ * ```c
+ * #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
+ * ```
*/
#define SDL_STRINGIFY_ARG(arg) #arg
@@ -185,54 +191,61 @@ typedef enum
#endif
/**
- * \brief A signed 8-bit integer type.
+ * A signed 8-bit integer type.
*/
+typedef int8_t Sint8;
#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */
#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */
-typedef int8_t Sint8;
-/**
- * \brief An unsigned 8-bit integer type.
- */
-#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
-#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
-typedef uint8_t Uint8;
-/**
- * \brief A signed 16-bit integer type.
- */
-#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
-#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
-typedef int16_t Sint16;
-/**
- * \brief An unsigned 16-bit integer type.
- */
-#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
-#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
-typedef uint16_t Uint16;
-/**
- * \brief A signed 32-bit integer type.
- */
-#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
-#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
-typedef int32_t Sint32;
-/**
- * \brief An unsigned 32-bit integer type.
- */
-#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
-#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
-typedef uint32_t Uint32;
/**
- * \brief A signed 64-bit integer type.
+ * An unsigned 8-bit integer type.
*/
+typedef uint8_t Uint8;
+#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
+#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
+
+/**
+ * A signed 16-bit integer type.
+ */
+typedef int16_t Sint16;
+#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
+#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
+
+/**
+ * An unsigned 16-bit integer type.
+ */
+typedef uint16_t Uint16;
+#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
+#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
+
+/**
+ * A signed 32-bit integer type.
+ */
+typedef int32_t Sint32;
+#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
+#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
+
+/**
+ * An unsigned 32-bit integer type.
+ */
+typedef uint32_t Uint32;
+#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
+#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
+
+/**
+ * A signed 64-bit integer type.
+ */
+typedef int64_t Sint64;
#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
-typedef int64_t Sint64;
+
/**
- * \brief An unsigned 64-bit integer type.
+ * An unsigned 64-bit integer type.
*/
+typedef uint64_t Uint64;
#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */
-typedef uint64_t Uint64;
+
/* @} *//* Basic data types */
@@ -253,44 +266,44 @@ typedef uint64_t Uint64;
* should define these but this is not true all platforms.
* (for example win32) */
#ifndef SDL_PRIs64
-#ifdef PRIs64
-#define SDL_PRIs64 PRIs64
-#elif defined(__WIN32__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
#define SDL_PRIs64 "I64d"
-#elif defined(__LINUX__) && defined(__LP64__)
+#elif defined(PRId64)
+#define SDL_PRIs64 PRId64
+#elif defined(__LP64__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__)
#define SDL_PRIs64 "ld"
#else
#define SDL_PRIs64 "lld"
#endif
#endif
#ifndef SDL_PRIu64
-#ifdef PRIu64
-#define SDL_PRIu64 PRIu64
-#elif defined(__WIN32__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
#define SDL_PRIu64 "I64u"
-#elif defined(__LINUX__) && defined(__LP64__)
+#elif defined(PRIu64)
+#define SDL_PRIu64 PRIu64
+#elif defined(__LP64__) && !defined(__APPLE__)
#define SDL_PRIu64 "lu"
#else
#define SDL_PRIu64 "llu"
#endif
#endif
#ifndef SDL_PRIx64
-#ifdef PRIx64
-#define SDL_PRIx64 PRIx64
-#elif defined(__WIN32__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
#define SDL_PRIx64 "I64x"
-#elif defined(__LINUX__) && defined(__LP64__)
+#elif defined(PRIx64)
+#define SDL_PRIx64 PRIx64
+#elif defined(__LP64__) && !defined(__APPLE__)
#define SDL_PRIx64 "lx"
#else
#define SDL_PRIx64 "llx"
#endif
#endif
#ifndef SDL_PRIX64
-#ifdef PRIX64
-#define SDL_PRIX64 PRIX64
-#elif defined(__WIN32__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
#define SDL_PRIX64 "I64X"
-#elif defined(__LINUX__) && defined(__LP64__)
+#elif defined(PRIX64)
+#define SDL_PRIX64 PRIX64
+#elif defined(__LP64__) && !defined(__APPLE__)
#define SDL_PRIX64 "lX"
#else
#define SDL_PRIX64 "llX"
@@ -336,7 +349,9 @@ typedef uint64_t Uint64;
#define SDL_PRINTF_FORMAT_STRING
#define SDL_SCANF_FORMAT_STRING
#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
+#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )
#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
+#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )
#else
#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
#include
@@ -362,18 +377,25 @@ typedef uint64_t Uint64;
#endif
#if defined(__GNUC__)
#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
+#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __printf__, fmtargnumber, 0 )))
#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
+#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __scanf__, fmtargnumber, 0 )))
#else
#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
+#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )
#define SDL_SCANF_VARARG_FUNC( fmtargnumber )
+#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )
#endif
#endif /* SDL_DISABLE_ANALYZE_MACROS */
#ifndef SDL_COMPILE_TIME_ASSERT
#if defined(__cplusplus)
+/* Keep C++ case alone: Some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode. */
#if (__cplusplus >= 201103L)
#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
#endif
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 202311L)
+#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x)
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x)
#endif
@@ -406,8 +428,8 @@ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
/** \cond */
#ifndef DOXYGEN_SHOULD_IGNORE_THIS
-#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__)
- /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
+#if !defined(__VITA__) && !defined(__3DS__)
+/* TODO: include/SDL_stdinc.h:422: error: size of array 'SDL_dummy_enum' is negative */
typedef enum
{
DUMMY_ENUM_VALUE
@@ -482,8 +504,9 @@ extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
-extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
-extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));
+typedef int (SDLCALL *SDL_CompareCallback)(const void *, const void *);
+extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, SDL_CompareCallback compare);
+extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, SDL_CompareCallback compare);
extern DECLSPEC int SDLCALL SDL_abs(int x);
@@ -512,6 +535,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t le
extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
+/* Some safe(r) macros for zero'ing structures... */
#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))
@@ -603,11 +627,11 @@ extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
-extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
+extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2);
extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
-extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
+extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap);
+extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);
#ifndef HAVE_M_PI
#ifndef M_PI
@@ -688,8 +712,8 @@ extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
size_t * outbytesleft);
/**
- * This function converts a buffer or string between encodings in one pass, returning a
- * string that must be freed with SDL_free() or NULL on error.
+ * This function converts a buffer or string between encodings in one pass,
+ * returning a string that must be freed with SDL_free() or NULL on error.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -697,9 +721,11 @@ extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
const char *fromcode,
const char *inbuf,
size_t inbytesleft);
+
+/* Some helper macros for common cases... */
#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
+#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
+#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))
/* force builds using Clang's static analysis tools to use literal C runtime
@@ -724,6 +750,9 @@ size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);
size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);
#endif
+/* strdup is not ANSI but POSIX, and its prototype might be hidden... */
+char *strdup(const char *str);
+
/* Starting LLVM 16, the analyser errors out if these functions do not have
their prototype defined (clang-diagnostic-implicit-function-declaration) */
#include
@@ -769,8 +798,9 @@ SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_B
}
/**
- * If a * b would overflow, return -1. Otherwise store a * b via ret
- * and return 0.
+ * If a * b would overflow, return -1.
+ *
+ * Otherwise store a * b via ret and return 0.
*
* \since This function is available since SDL 2.24.0.
*/
@@ -799,8 +829,9 @@ SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a,
#endif
/**
- * If a + b would overflow, return -1. Otherwise store a + b via ret
- * and return 0.
+ * If a + b would overflow, return -1.
+ *
+ * Otherwise store a + b via ret and return 0.
*
* \since This function is available since SDL 2.24.0.
*/
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_surface.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_surface.h
index d6ee615c5..42ea5919a 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_surface.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_surface.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_surface.h
+ * # CategorySurface
*
- * Header file for ::SDL_Surface definition and management functions.
+ * Header file for SDL_Surface definition and management functions.
*/
#ifndef SDL_surface_h_
@@ -43,7 +43,7 @@ extern "C" {
/**
* \name Surface flags
*
- * These are the currently supported flags for the ::SDL_Surface.
+ * These are the currently supported flags for the SDL_Surface.
*
* \internal
* Used internally (read-only).
@@ -57,17 +57,17 @@ extern "C" {
/* @} *//* Surface flags */
/**
- * Evaluates to true if the surface needs to be locked before access.
+ * Evaluates to true if the surface needs to be locked before access.
*/
#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */
/**
- * \brief A collection of pixels used in software blitting.
+ * A collection of pixels used in software blitting.
*
- * \note This structure should be treated as read-only, except for \c pixels,
- * which, if not NULL, contains the raw pixel data for the surface.
+ * This structure should be treated as read-only, except for `pixels`, which,
+ * if not NULL, contains the raw pixel data for the surface.
*/
typedef struct SDL_Surface
{
@@ -97,15 +97,15 @@ typedef struct SDL_Surface
} SDL_Surface;
/**
- * \brief The type of function used for surface blitting functions.
+ * The type of function used for surface blitting functions.
*/
typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
struct SDL_Surface * dst, SDL_Rect * dstrect);
/**
- * \brief The formula used for converting between YUV and RGB
+ * The formula used for converting between YUV and RGB
*/
-typedef enum
+typedef enum SDL_YUV_CONVERSION_MODE
{
SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */
SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */
@@ -140,14 +140,14 @@ typedef enum
* You can change this by calling SDL_SetSurfaceBlendMode() and selecting a
* different `blendMode`.
*
- * \param flags the flags are unused and should be set to 0
- * \param width the width of the surface
- * \param height the height of the surface
- * \param depth the depth of the surface in bits
- * \param Rmask the red mask for the pixels
- * \param Gmask the green mask for the pixels
- * \param Bmask the blue mask for the pixels
- * \param Amask the alpha mask for the pixels
+ * \param flags the flags are unused and should be set to 0.
+ * \param width the width of the surface.
+ * \param height the height of the surface.
+ * \param depth the depth of the surface in bits.
+ * \param Rmask the red mask for the pixels.
+ * \param Gmask the green mask for the pixels.
+ * \param Bmask the blue mask for the pixels.
+ * \param Amask the alpha mask for the pixels.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
*
@@ -171,10 +171,10 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
* of providing pixel color masks, you provide it with a predefined format
* from SDL_PixelFormatEnum.
*
- * \param flags the flags are unused and should be set to 0
- * \param width the width of the surface
- * \param height the height of the surface
- * \param depth the depth of the surface in bits
+ * \param flags the flags are unused and should be set to 0.
+ * \param width the width of the surface.
+ * \param height the height of the surface.
+ * \param depth the depth of the surface in bits.
* \param format the SDL_PixelFormatEnum for the new surface's pixel format.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
@@ -198,15 +198,15 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
* No copy is made of the pixel data. Pixel data is not managed automatically;
* you must free the surface before you free the pixel data.
*
- * \param pixels a pointer to existing pixel data
- * \param width the width of the surface
- * \param height the height of the surface
- * \param depth the depth of the surface in bits
- * \param pitch the pitch of the surface in bytes
- * \param Rmask the red mask for the pixels
- * \param Gmask the green mask for the pixels
- * \param Bmask the blue mask for the pixels
- * \param Amask the alpha mask for the pixels
+ * \param pixels a pointer to existing pixel data.
+ * \param width the width of the surface.
+ * \param height the height of the surface.
+ * \param depth the depth of the surface in bits.
+ * \param pitch the pitch of the surface in bytes.
+ * \param Rmask the red mask for the pixels.
+ * \param Gmask the green mask for the pixels.
+ * \param Bmask the blue mask for the pixels.
+ * \param Amask the alpha mask for the pixels.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
*
@@ -214,6 +214,7 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
*
* \sa SDL_CreateRGBSurface
* \sa SDL_CreateRGBSurfaceWithFormat
+ * \sa SDL_CreateRGBSurfaceWithFormatFrom
* \sa SDL_FreeSurface
*/
extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
@@ -239,11 +240,11 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
* No copy is made of the pixel data. Pixel data is not managed automatically;
* you must free the surface before you free the pixel data.
*
- * \param pixels a pointer to existing pixel data
- * \param width the width of the surface
- * \param height the height of the surface
- * \param depth the depth of the surface in bits
- * \param pitch the pitch of the surface in bytes
+ * \param pixels a pointer to existing pixel data.
+ * \param width the width of the surface.
+ * \param height the height of the surface.
+ * \param depth the depth of the surface in bits.
+ * \param pitch the pitch of the surface in bytes.
* \param format the SDL_PixelFormatEnum for the new surface's pixel format.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
@@ -278,8 +279,8 @@ extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
*
* A single palette can be shared with many surfaces.
*
- * \param surface the SDL_Surface structure to update
- * \param palette the SDL_Palette structure to use
+ * \param surface the SDL_Surface structure to update.
+ * \param palette the SDL_Palette structure to use.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -300,7 +301,7 @@ extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
* 0, then you can read and write to the surface at any time, and the pixel
* format of the surface will not change.
*
- * \param surface the SDL_Surface structure to be locked
+ * \param surface the SDL_Surface structure to be locked.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -314,7 +315,7 @@ extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
/**
* Release a surface after directly accessing the pixels.
*
- * \param surface the SDL_Surface structure to be unlocked
+ * \param surface the SDL_Surface structure to be unlocked.
*
* \since This function is available since SDL 2.0.0.
*
@@ -329,11 +330,11 @@ extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
* result in a memory leak.
*
* src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile.
- * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap
+ * Alternatively, you might also use the macro SDL_LoadBMP to load a bitmap
* from a file, convert it to an SDL_Surface and then close the file.
*
- * \param src the data stream for the surface
- * \param freesrc non-zero to close the stream after being read
+ * \param src the data stream for the surface.
+ * \param freesrc non-zero to close the stream after being read.
* \returns a pointer to a new SDL_Surface structure or NULL if there was an
* error; call SDL_GetError() for more information.
*
@@ -363,9 +364,9 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
* surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
* not supported.
*
- * \param surface the SDL_Surface structure containing the image to be saved
- * \param dst a data stream to save to
- * \param freedst non-zero to close the stream after being written
+ * \param surface the SDL_Surface structure containing the image to be saved.
+ * \param dst a data stream to save to.
+ * \param freedst non-zero to close the stream after being written.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -378,9 +379,9 @@ extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
(SDL_Surface * surface, SDL_RWops * dst, int freedst);
/**
- * Save a surface to a file.
+ * Save a surface to a file.
*
- * Convenience macro.
+ * Convenience macro.
*/
#define SDL_SaveBMP(surface, file) \
SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
@@ -391,8 +392,8 @@ extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
* If RLE is enabled, color key and alpha blending blits are much faster, but
* the surface must be locked before directly accessing the pixels.
*
- * \param surface the SDL_Surface structure to optimize
- * \param flag 0 to disable, non-zero to enable RLE acceleration
+ * \param surface the SDL_Surface structure to optimize.
+ * \param flag 0 to disable, non-zero to enable RLE acceleration.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -410,7 +411,7 @@ extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
*
* It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
*
- * \param surface the SDL_Surface structure to query
+ * \param surface the SDL_Surface structure to query.
* \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.14.
@@ -432,9 +433,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface);
* RLE acceleration can substantially speed up blitting of images with large
* horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details.
*
- * \param surface the SDL_Surface structure to update
- * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key
- * \param key the transparent pixel
+ * \param surface the SDL_Surface structure to update.
+ * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key.
+ * \param key the transparent pixel.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -451,7 +452,7 @@ extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
*
* It is safe to pass a NULL `surface` here; it will return SDL_FALSE.
*
- * \param surface the SDL_Surface structure to query
+ * \param surface the SDL_Surface structure to query.
* \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.9.
@@ -469,8 +470,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
*
* If the surface doesn't have color key enabled this function returns -1.
*
- * \param surface the SDL_Surface structure to query
- * \param key a pointer filled in with the transparent pixel
+ * \param surface the SDL_Surface structure to query.
+ * \param key a pointer filled in with the transparent pixel.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -491,10 +492,10 @@ extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
*
* `srcC = srcC * (color / 255)`
*
- * \param surface the SDL_Surface structure to update
- * \param r the red color value multiplied into blit operations
- * \param g the green color value multiplied into blit operations
- * \param b the blue color value multiplied into blit operations
+ * \param surface the SDL_Surface structure to update.
+ * \param r the red color value multiplied into blit operations.
+ * \param g the green color value multiplied into blit operations.
+ * \param b the blue color value multiplied into blit operations.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -510,10 +511,10 @@ extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
/**
* Get the additional color value multiplied into blit operations.
*
- * \param surface the SDL_Surface structure to query
- * \param r a pointer filled in with the current red color value
- * \param g a pointer filled in with the current green color value
- * \param b a pointer filled in with the current blue color value
+ * \param surface the SDL_Surface structure to query.
+ * \param r a pointer filled in with the current red color value.
+ * \param g a pointer filled in with the current green color value.
+ * \param b a pointer filled in with the current blue color value.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -534,8 +535,8 @@ extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
*
* `srcA = srcA * (alpha / 255)`
*
- * \param surface the SDL_Surface structure to update
- * \param alpha the alpha value multiplied into blit operations
+ * \param surface the SDL_Surface structure to update.
+ * \param alpha the alpha value multiplied into blit operations.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -550,8 +551,8 @@ extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
/**
* Get the additional alpha value used in blit operations.
*
- * \param surface the SDL_Surface structure to query
- * \param alpha a pointer filled in with the current alpha value
+ * \param surface the SDL_Surface structure to query.
+ * \param alpha a pointer filled in with the current alpha value.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -570,8 +571,8 @@ extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
* existing data, the blendmode of the SOURCE surface should be set to
* `SDL_BLENDMODE_NONE`.
*
- * \param surface the SDL_Surface structure to update
- * \param blendMode the SDL_BlendMode to use for blit blending
+ * \param surface the SDL_Surface structure to update.
+ * \param blendMode the SDL_BlendMode to use for blit blending.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -585,8 +586,8 @@ extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
/**
* Get the blend mode used for blit operations.
*
- * \param surface the SDL_Surface structure to query
- * \param blendMode a pointer filled in with the current SDL_BlendMode
+ * \param surface the SDL_Surface structure to query.
+ * \param blendMode a pointer filled in with the current SDL_BlendMode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -606,9 +607,9 @@ extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
* Note that blits are automatically clipped to the edges of the source and
* destination surfaces.
*
- * \param surface the SDL_Surface structure to be clipped
+ * \param surface the SDL_Surface structure to be clipped.
* \param rect the SDL_Rect structure representing the clipping rectangle, or
- * NULL to disable clipping
+ * NULL to disable clipping.
* \returns SDL_TRUE if the rectangle intersects the surface, otherwise
* SDL_FALSE and blits will be completely clipped.
*
@@ -627,9 +628,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
* rectangle is drawn into.
*
* \param surface the SDL_Surface structure representing the surface to be
- * clipped
+ * clipped.
* \param rect an SDL_Rect structure filled in with the clipping rectangle for
- * the surface
+ * the surface.
*
* \since This function is available since SDL 2.0.0.
*
@@ -658,11 +659,11 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface)
* surface. The new, optimized surface can then be used as the source for
* future blits, making them faster.
*
- * \param src the existing SDL_Surface structure to convert
+ * \param src the existing SDL_Surface structure to convert.
* \param fmt the SDL_PixelFormat structure that the new surface is optimized
- * for
+ * for.
* \param flags the flags are unused and should be set to 0; this is a
- * leftover from SDL 1.2's API
+ * leftover from SDL 1.2's API.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
*
@@ -683,11 +684,11 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
* it might be easier to call but it doesn't have access to palette
* information for the destination surface, in case that would be important.
*
- * \param src the existing SDL_Surface structure to convert
+ * \param src the existing SDL_Surface structure to convert.
* \param pixel_format the SDL_PixelFormatEnum that the new surface is
- * optimized for
+ * optimized for.
* \param flags the flags are unused and should be set to 0; this is a
- * leftover from SDL 1.2's API
+ * leftover from SDL 1.2's API.
* \returns the new SDL_Surface structure that is created or NULL if it fails;
* call SDL_GetError() for more information.
*
@@ -703,14 +704,14 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
/**
* Copy a block of pixels of one format to another format.
*
- * \param width the width of the block to copy, in pixels
- * \param height the height of the block to copy, in pixels
- * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
- * \param src a pointer to the source pixels
- * \param src_pitch the pitch of the source pixels, in bytes
- * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
- * \param dst a pointer to be filled in with new pixel data
- * \param dst_pitch the pitch of the destination pixels, in bytes
+ * \param width the width of the block to copy, in pixels.
+ * \param height the height of the block to copy, in pixels.
+ * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format.
+ * \param src a pointer to the source pixels.
+ * \param src_pitch the pitch of the source pixels, in bytes.
+ * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format.
+ * \param dst a pointer to be filled in with new pixel data.
+ * \param dst_pitch the pitch of the destination pixels, in bytes.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -729,14 +730,14 @@ extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
*
* This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888.
*
- * \param width the width of the block to convert, in pixels
- * \param height the height of the block to convert, in pixels
- * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format
- * \param src a pointer to the source pixels
- * \param src_pitch the pitch of the source pixels, in bytes
- * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format
- * \param dst a pointer to be filled in with premultiplied pixel data
- * \param dst_pitch the pitch of the destination pixels, in bytes
+ * \param width the width of the block to convert, in pixels.
+ * \param height the height of the block to convert, in pixels.
+ * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format.
+ * \param src a pointer to the source pixels.
+ * \param src_pitch the pitch of the source pixels, in bytes.
+ * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format.
+ * \param dst a pointer to be filled in with premultiplied pixel data.
+ * \param dst_pitch the pitch of the destination pixels, in bytes.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -760,10 +761,10 @@ extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height,
* SDL_SetClipRect()), then this function will fill based on the intersection
* of the clip rectangle and `rect`.
*
- * \param dst the SDL_Surface structure that is the drawing target
+ * \param dst the SDL_Surface structure that is the drawing target.
* \param rect the SDL_Rect structure representing the rectangle to fill, or
- * NULL to fill the entire surface
- * \param color the color to fill with
+ * NULL to fill the entire surface.
+ * \param color the color to fill with.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -786,10 +787,10 @@ extern DECLSPEC int SDLCALL SDL_FillRect
* SDL_SetClipRect()), then this function will fill based on the intersection
* of the clip rectangle and `rect`.
*
- * \param dst the SDL_Surface structure that is the drawing target
- * \param rects an array of SDL_Rects representing the rectangles to fill.
- * \param count the number of rectangles in the array
- * \param color the color to fill with
+ * \param dst the SDL_Surface structure that is the drawing target.
+ * \param rects an array of SDL_Rect representing the rectangles to fill.
+ * \param count the number of rectangles in the array.
+ * \param color the color to fill with.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -801,62 +802,64 @@ extern DECLSPEC int SDLCALL SDL_FillRects
(SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
/* !!! FIXME: merge this documentation with the wiki */
+
/**
- * Performs a fast blit from the source surface to the destination surface.
+ * Performs a fast blit from the source surface to the destination surface.
*
- * This assumes that the source and destination rectangles are
- * the same size. If either \c srcrect or \c dstrect are NULL, the entire
- * surface (\c src or \c dst) is copied. The final blit rectangles are saved
- * in \c srcrect and \c dstrect after all clipping is performed.
+ * This assumes that the source and destination rectangles are the same size.
+ * If either `srcrect` or `dstrect` are NULL, the entire surface (`src` or
+ * `dst`) is copied. The final blit rectangle is saved in `dstrect` after
+ * all clipping is performed.
*
- * \returns 0 if the blit is successful, otherwise it returns -1.
+ * The blit function should not be called on a locked surface.
*
- * The blit function should not be called on a locked surface.
+ * The blit semantics for surfaces with and without blending and colorkey are
+ * defined as follows:
*
- * The blit semantics for surfaces with and without blending and colorkey
- * are defined as follows:
- * \verbatim
- RGBA->RGB:
- Source surface blend mode set to SDL_BLENDMODE_BLEND:
- alpha-blend (using the source alpha-channel and per-surface alpha)
- SDL_SRCCOLORKEY ignored.
- Source surface blend mode set to SDL_BLENDMODE_NONE:
- copy RGB.
- if SDL_SRCCOLORKEY set, only copy the pixels matching the
- RGB values of the source color key, ignoring alpha in the
- comparison.
-
- RGB->RGBA:
- Source surface blend mode set to SDL_BLENDMODE_BLEND:
- alpha-blend (using the source per-surface alpha)
- Source surface blend mode set to SDL_BLENDMODE_NONE:
- copy RGB, set destination alpha to source per-surface alpha value.
- both:
- if SDL_SRCCOLORKEY set, only copy the pixels matching the
- source color key.
-
- RGBA->RGBA:
- Source surface blend mode set to SDL_BLENDMODE_BLEND:
- alpha-blend (using the source alpha-channel and per-surface alpha)
- SDL_SRCCOLORKEY ignored.
- Source surface blend mode set to SDL_BLENDMODE_NONE:
- copy all of RGBA to the destination.
- if SDL_SRCCOLORKEY set, only copy the pixels matching the
- RGB values of the source color key, ignoring alpha in the
- comparison.
-
- RGB->RGB:
- Source surface blend mode set to SDL_BLENDMODE_BLEND:
- alpha-blend (using the source per-surface alpha)
- Source surface blend mode set to SDL_BLENDMODE_NONE:
- copy RGB.
- both:
- if SDL_SRCCOLORKEY set, only copy the pixels matching the
- source color key.
- \endverbatim
+ * ```
+ * RGBA->RGB:
+ * Source surface blend mode set to SDL_BLENDMODE_BLEND:
+ * alpha-blend (using the source alpha-channel and per-surface alpha)
+ * SDL_SRCCOLORKEY ignored.
+ * Source surface blend mode set to SDL_BLENDMODE_NONE:
+ * copy RGB.
+ * if SDL_SRCCOLORKEY set, only copy the pixels matching the
+ * RGB values of the source color key, ignoring alpha in the
+ * comparison.
*
- * You should call SDL_BlitSurface() unless you know exactly how SDL
- * blitting works internally and how to use the other blit functions.
+ * RGB->RGBA:
+ * Source surface blend mode set to SDL_BLENDMODE_BLEND:
+ * alpha-blend (using the source per-surface alpha)
+ * Source surface blend mode set to SDL_BLENDMODE_NONE:
+ * copy RGB, set destination alpha to source per-surface alpha value.
+ * both:
+ * if SDL_SRCCOLORKEY set, only copy the pixels matching the
+ * source color key.
+ *
+ * RGBA->RGBA:
+ * Source surface blend mode set to SDL_BLENDMODE_BLEND:
+ * alpha-blend (using the source alpha-channel and per-surface alpha)
+ * SDL_SRCCOLORKEY ignored.
+ * Source surface blend mode set to SDL_BLENDMODE_NONE:
+ * copy all of RGBA to the destination.
+ * if SDL_SRCCOLORKEY set, only copy the pixels matching the
+ * RGB values of the source color key, ignoring alpha in the
+ * comparison.
+ *
+ * RGB->RGB:
+ * Source surface blend mode set to SDL_BLENDMODE_BLEND:
+ * alpha-blend (using the source per-surface alpha)
+ * Source surface blend mode set to SDL_BLENDMODE_NONE:
+ * copy RGB.
+ * both:
+ * if SDL_SRCCOLORKEY set, only copy the pixels matching the
+ * source color key.
+ * ```
+ *
+ * You should call SDL_BlitSurface() unless you know exactly how SDL blitting
+ * works internally and how to use the other blit functions.
+ *
+ * \returns 0 if the blit is successful, otherwise it returns -1.
*/
#define SDL_BlitSurface SDL_UpperBlit
@@ -883,12 +886,12 @@ extern DECLSPEC int SDLCALL SDL_UpperBlit
* Unless you know what you're doing, you should be using SDL_BlitSurface()
* instead.
*
- * \param src the SDL_Surface structure to be copied from
+ * \param src the SDL_Surface structure to be copied from.
* \param srcrect the SDL_Rect structure representing the rectangle to be
- * copied, or NULL to copy the entire surface
- * \param dst the SDL_Surface structure that is the blit target
+ * copied, or NULL to copy the entire surface.
+ * \param dst the SDL_Surface structure that is the blit target.
* \param dstrect the SDL_Rect structure representing the rectangle that is
- * copied into
+ * copied into.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -925,8 +928,6 @@ extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src,
const SDL_Rect * dstrect);
-#define SDL_BlitScaled SDL_UpperBlitScaled
-
/**
* Perform a scaled surface copy to a destination surface.
*
@@ -941,18 +942,21 @@ extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
(SDL_Surface * src, const SDL_Rect * srcrect,
SDL_Surface * dst, SDL_Rect * dstrect);
+#define SDL_BlitScaled SDL_UpperBlitScaled
+
+
/**
* Perform low-level surface scaled blitting only.
*
* This is a semi-private function and it performs low-level surface blitting,
* assuming the input rectangles have already been clipped.
*
- * \param src the SDL_Surface structure to be copied from
+ * \param src the SDL_Surface structure to be copied from.
* \param srcrect the SDL_Rect structure representing the rectangle to be
- * copied
- * \param dst the SDL_Surface structure that is the blit target
+ * copied.
+ * \param dst the SDL_Surface structure that is the blit target.
* \param dstrect the SDL_Rect structure representing the rectangle that is
- * copied into
+ * copied into.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_system.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_system.h
index 4b7eaddcc..2f7a236f1 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_system.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_system.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_system.h
+ * # CategorySystem
*
- * Include file for platform specific SDL API functions
+ * Include file for platform specific SDL API functions
*/
#ifndef SDL_system_h_
@@ -49,7 +49,7 @@ typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsi
* Set a callback for every Windows message, run before TranslateMessage().
*
* \param callback The SDL_WindowsMessageHook function to call.
- * \param userdata a pointer to pass to every iteration of `callback`
+ * \param userdata a pointer to pass to every iteration of `callback`.
*
* \since This function is available since SDL 2.0.4.
*/
@@ -66,7 +66,7 @@ extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook ca
* controls on which monitor a full screen application will appear.
*
* \param displayIndex the display index for which to get the D3D9 adapter
- * index
+ * index.
* \returns the D3D9 adapter index on success or a negative error code on
* failure; call SDL_GetError() for more information.
*
@@ -82,7 +82,7 @@ typedef struct IDirect3DDevice9 IDirect3DDevice9;
* Once you are done using the device, you should release it to avoid a
* resource leak.
*
- * \param renderer the renderer from which to get the associated D3D device
+ * \param renderer the renderer from which to get the associated D3D device.
* \returns the D3D9 device associated with given renderer or NULL if it is
* not a D3D9 renderer; call SDL_GetError() for more information.
*
@@ -98,7 +98,7 @@ typedef struct ID3D11Device ID3D11Device;
* Once you are done using the device, you should release it to avoid a
* resource leak.
*
- * \param renderer the renderer from which to get the associated D3D11 device
+ * \param renderer the renderer from which to get the associated D3D11 device.
* \returns the D3D11 device associated with given renderer or NULL if it is
* not a D3D11 renderer; call SDL_GetError() for more information.
*
@@ -118,7 +118,7 @@ typedef struct ID3D12Device ID3D12Device;
* Once you are done using the device, you should release it to avoid a
* resource leak.
*
- * \param renderer the renderer from which to get the associated D3D12 device
+ * \param renderer the renderer from which to get the associated D3D12 device.
* \returns the D3D12 device associated with given renderer or NULL if it is
* not a D3D12 renderer; call SDL_GetError() for more information.
*
@@ -140,9 +140,9 @@ extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* ren
* Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it
* returns an SDL_bool.
*
- * \param displayIndex the display index for which to get both indices
- * \param adapterIndex a pointer to be filled in with the adapter index
- * \param outputIndex a pointer to be filled in with the output index
+ * \param displayIndex the display index for which to get both indices.
+ * \param adapterIndex a pointer to be filled in with the adapter index.
+ * \param outputIndex a pointer to be filled in with the output index.
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
* for more information.
*
@@ -176,7 +176,7 @@ extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int prio
* \param threadID The Unix thread ID to change priority of.
* \param sdlPriority The new SDL_ThreadPriority value.
* \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR,
- * SCHED_OTHER, etc...)
+ * SCHED_OTHER, etc...).
* \returns 0 on success, or -1 on error.
*
* \since This function is available since SDL 2.0.18.
@@ -188,7 +188,7 @@ extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID,
/* Platform specific functions for iOS */
#ifdef __IPHONEOS__
-#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
+typedef void (SDLCALL *SDL_iOSAnimationCallback)(void*);
/**
* Use this function to set the animation callback on Apple iOS.
@@ -210,9 +210,9 @@ extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID,
* This functions is also accessible using the macro
* SDL_iOSSetAnimationCallback() since SDL 2.0.4.
*
- * \param window the window for which the animation callback should be set
+ * \param window the window for which the animation callback should be set.
* \param interval the number of frames after which **callback** will be
- * called
+ * called.
* \param callback the function to call for every frame.
* \param callbackParam a pointer that is passed to `callback`.
* \returns 0 on success or a negative error code on failure; call
@@ -222,9 +222,10 @@ extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID,
*
* \sa SDL_iPhoneSetEventPump
*/
-extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam);
+extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, SDL_iOSAnimationCallback callback, void *callbackParam);
+
+#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
-#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
/**
* Use this function to enable or disable the SDL event pump on Apple iOS.
@@ -234,7 +235,7 @@ extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window,
* This functions is also accessible using the macro SDL_iOSSetEventPump()
* since SDL 2.0.4.
*
- * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it
+ * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it.
*
* \since This function is available since SDL 2.0.0.
*
@@ -242,6 +243,9 @@ extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window,
*/
extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
+#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
+
+/* end of iOS-specific functions. */
#endif /* __IPHONEOS__ */
@@ -356,9 +360,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
/**
- See the official Android developer guide for more information:
- http://developer.android.com/guide/topics/data/data-storage.html
-*/
+ * See the official Android developer guide for more information:
+ * http://developer.android.com/guide/topics/data/data-storage.html
+ */
#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01
#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02
@@ -441,11 +445,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permis
*
* https://developer.android.com/reference/android/view/Gravity
*
- * \param message text message to be shown
- * \param duration 0=short, 1=long
+ * \param message text message to be shown.
+ * \param duration 0=short, 1=long.
* \param gravity where the notification should appear on the screen.
- * \param xoffset set this parameter only when gravity >=0
- * \param yoffset set this parameter only when gravity >=0
+ * \param xoffset set this parameter only when gravity >=0.
+ * \param yoffset set this parameter only when gravity >=0.
* \returns 0 if success, -1 if any error occurs.
*
* \since This function is available since SDL 2.0.16.
@@ -457,8 +461,8 @@ extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int durati
*
* Override "boolean onUnhandledMessage(Message msg)" to handle the message.
*
- * \param command user command that must be greater or equal to 0x8000
- * \param param user parameter
+ * \param command user command that must be greater or equal to 0x8000.
+ * \param param user parameter.
*
* \since This function is available since SDL 2.0.22.
*/
@@ -470,9 +474,9 @@ extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param);
#ifdef __WINRT__
/**
- * \brief WinRT / Windows Phone path types
+ * WinRT / Windows Phone path types
*/
-typedef enum
+typedef enum SDL_WinRT_Path
{
/** \brief The installed app's root directory.
Files here are likely to be read-only. */
@@ -494,9 +498,9 @@ typedef enum
/**
- * \brief WinRT Device Family
+ * WinRT Device Family
*/
-typedef enum
+typedef enum SDL_WinRT_DeviceFamily
{
/** \brief Unknown family */
SDL_WINRT_DEVICEFAMILY_UNKNOWN,
@@ -524,7 +528,7 @@ typedef enum
*
* https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
*
- * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
+ * \param pathType the type of path to retrieve, one of SDL_WinRT_Path.
* \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if
* the path is not available for any reason; call SDL_GetError() for
* more information.
@@ -547,7 +551,7 @@ extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path
*
* https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
*
- * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
+ * \param pathType the type of path to retrieve, one of SDL_WinRT_Path.
* \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if
* the path is not available for any reason; call SDL_GetError() for
* more information.
@@ -593,7 +597,8 @@ extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void
/* Functions used only by GDK */
#if defined(__GDK__)
-typedef struct XTaskQueueObject * XTaskQueueHandle;
+typedef struct XTaskQueueObject *XTaskQueueHandle;
+typedef struct XUser *XUserHandle;
/**
* Gets a reference to the global async task queue handle for GDK,
@@ -610,6 +615,20 @@ typedef struct XTaskQueueObject * XTaskQueueHandle;
*/
extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue);
+/**
+ * Gets a reference to the default user handle for GDK.
+ *
+ * This is effectively a synchronous version of XUserAddAsync, which always
+ * prefers the default user and allows a sign-in UI.
+ *
+ * \param outUserHandle a pointer to be filled in with the default user
+ * handle.
+ * \returns 0 if success, -1 if any error occurs.
+ *
+ * \since This function is available since SDL 2.28.0.
+ */
+extern DECLSPEC int SDLCALL SDL_GDKGetDefaultUser(XUserHandle * outUserHandle);
+
#endif
/* Ends C function definitions when using C++ */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_syswm.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_syswm.h
index b35734deb..18f687329 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_syswm.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_syswm.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,10 +19,17 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_syswm.h
+/* WIKI CATEGORY: SYSWM */
+
+/*
+ * # CategorySYSWM
*
- * Include file for SDL custom system window manager hooks.
+ * Include file for SDL custom system window manager hooks.
+ *
+ * Your application has access to a special type of event SDL_SYSWMEVENT,
+ * which contains window-manager specific information and arrives whenever
+ * an unhandled window event occurs. This event is ignored by default, but
+ * you can enable it with SDL_EventState().
*/
#ifndef SDL_syswm_h_
@@ -33,14 +40,6 @@
#include "SDL_video.h"
#include "SDL_version.h"
-/**
- * \brief SDL_syswm.h
- *
- * Your application has access to a special type of event ::SDL_SYSWMEVENT,
- * which contains window-manager specific information and arrives whenever
- * an unhandled window event occurs. This event is ignored by default, but
- * you can enable it with SDL_EventState().
- */
struct SDL_SysWMinfo;
#if !defined(SDL_PROTOTYPES_ONLY)
@@ -129,10 +128,11 @@ extern "C" {
#endif
#if !defined(SDL_PROTOTYPES_ONLY)
+
/**
- * These are the various supported windowing subsystems
+ * These are the various supported windowing subsystems
*/
-typedef enum
+typedef enum SDL_SYSWM_TYPE
{
SDL_SYSWM_UNKNOWN,
SDL_SYSWM_WINDOWS,
@@ -152,7 +152,7 @@ typedef enum
} SDL_SYSWM_TYPE;
/**
- * The custom event structure.
+ * The custom event structure.
*/
struct SDL_SysWMmsg
{
@@ -218,10 +218,10 @@ struct SDL_SysWMmsg
};
/**
- * The custom window manager information structure.
+ * The custom window manager information structure.
*
- * When this structure is returned, it holds information about which
- * low level system it is using, and will be one of SDL_SYSWM_TYPE.
+ * When this structure is returned, it holds information about which low level
+ * system it is using, and will be one of SDL_SYSWM_TYPE.
*/
struct SDL_SysWMinfo
{
@@ -363,8 +363,8 @@ typedef struct SDL_SysWMinfo SDL_SysWMinfo;
* `SDL_VERSION(&info.version)`, and then this function will fill in the rest
* of the structure with information about the given window.
*
- * \param window the window about which information is being requested
- * \param info an SDL_SysWMinfo structure filled in with window information
+ * \param window the window about which information is being requested.
+ * \param info an SDL_SysWMinfo structure filled in with window information.
* \returns SDL_TRUE if the function is implemented and the `version` member
* of the `info` struct is valid, or SDL_FALSE if the information
* could not be retrieved; call SDL_GetError() for more information.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test.h
deleted file mode 100644
index 80daaafbd..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_h_
-#define SDL_test_h_
-
-#include "SDL.h"
-#include "SDL_test_assert.h"
-#include "SDL_test_common.h"
-#include "SDL_test_compare.h"
-#include "SDL_test_crc32.h"
-#include "SDL_test_font.h"
-#include "SDL_test_fuzzer.h"
-#include "SDL_test_harness.h"
-#include "SDL_test_images.h"
-#include "SDL_test_log.h"
-#include "SDL_test_md5.h"
-#include "SDL_test_memory.h"
-#include "SDL_test_random.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Global definitions */
-
-/*
- * Note: Maximum size of SDLTest log message is less than SDL's limit
- * to ensure we can fit additional information such as the timestamp.
- */
-#define SDLTEST_MAX_LOGMESSAGE_LENGTH 3584
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_assert.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_assert.h
deleted file mode 100644
index 341e490fa..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_assert.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_assert.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- * Assert API for test code and test cases
- *
- */
-
-#ifndef SDL_test_assert_h_
-#define SDL_test_assert_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Fails the assert.
- */
-#define ASSERT_FAIL 0
-
-/**
- * \brief Passes the assert.
- */
-#define ASSERT_PASS 1
-
-/**
- * \brief Assert that logs and break execution flow on failures.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.
- *
- * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
- * \param assertDescription Message to log with the assert describing it.
- *
- * \returns the assertCondition so it can be used to externally to break execution flow if desired.
- */
-int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Explicitly pass without checking an assertion condition. Updates assertion counter.
- *
- * \param assertDescription Message to log with the assert describing it.
- */
-void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Resets the assert summary counters to zero.
- */
-void SDLTest_ResetAssertSummary(void);
-
-/**
- * \brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
- */
-void SDLTest_LogAssertSummary(void);
-
-
-/**
- * \brief Converts the current assert summary state to a test result.
- *
- * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
- */
-int SDLTest_AssertSummaryToTestResult(void);
-
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_common.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_common.h
deleted file mode 100644
index 6de63cad6..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_common.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_common.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/* Ported from original test\common.h file. */
-
-#ifndef SDL_test_common_h_
-#define SDL_test_common_h_
-
-#include "SDL.h"
-
-#if defined(__PSP__)
-#define DEFAULT_WINDOW_WIDTH 480
-#define DEFAULT_WINDOW_HEIGHT 272
-#elif defined(__VITA__)
-#define DEFAULT_WINDOW_WIDTH 960
-#define DEFAULT_WINDOW_HEIGHT 544
-#else
-#define DEFAULT_WINDOW_WIDTH 640
-#define DEFAULT_WINDOW_HEIGHT 480
-#endif
-
-#define VERBOSE_VIDEO 0x00000001
-#define VERBOSE_MODES 0x00000002
-#define VERBOSE_RENDER 0x00000004
-#define VERBOSE_EVENT 0x00000008
-#define VERBOSE_AUDIO 0x00000010
-#define VERBOSE_MOTION 0x00000020
-
-typedef struct
-{
- /* SDL init flags */
- char **argv;
- Uint32 flags;
- Uint32 verbose;
-
- /* Video info */
- const char *videodriver;
- int display;
- const char *window_title;
- const char *window_icon;
- Uint32 window_flags;
- SDL_bool flash_on_focus_loss;
- int window_x;
- int window_y;
- int window_w;
- int window_h;
- int window_minW;
- int window_minH;
- int window_maxW;
- int window_maxH;
- int logical_w;
- int logical_h;
- float scale;
- int depth;
- int refresh_rate;
- int num_windows;
- SDL_Window **windows;
-
- /* Renderer info */
- const char *renderdriver;
- Uint32 render_flags;
- SDL_bool skip_renderer;
- SDL_Renderer **renderers;
- SDL_Texture **targets;
-
- /* Audio info */
- const char *audiodriver;
- SDL_AudioSpec audiospec;
-
- /* GL settings */
- int gl_red_size;
- int gl_green_size;
- int gl_blue_size;
- int gl_alpha_size;
- int gl_buffer_size;
- int gl_depth_size;
- int gl_stencil_size;
- int gl_double_buffer;
- int gl_accum_red_size;
- int gl_accum_green_size;
- int gl_accum_blue_size;
- int gl_accum_alpha_size;
- int gl_stereo;
- int gl_multisamplebuffers;
- int gl_multisamplesamples;
- int gl_retained_backing;
- int gl_accelerated;
- int gl_major_version;
- int gl_minor_version;
- int gl_debug;
- int gl_profile_mask;
-
- /* Additional fields added in 2.0.18 */
- SDL_Rect confine;
-
-} SDLTest_CommonState;
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * \brief Parse command line parameters and create common state.
- *
- * \param argv Array of command line parameters
- * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
- *
- * \returns a newly allocated common state object.
- */
-SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
-
-/**
- * \brief Process one common argument.
- *
- * \param state The common state describing the test window to create.
- * \param index The index of the argument to process in argv[].
- *
- * \returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.
- */
-int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
-
-
-/**
- * \brief Logs command line usage info.
- *
- * This logs the appropriate command line options for the subsystems in use
- * plus other common options, and then any application-specific options.
- * This uses the SDL_Log() function and splits up output to be friendly to
- * 80-character-wide terminals.
- *
- * \param state The common state describing the test window for the app.
- * \param argv0 argv[0], as passed to main/SDL_main.
- * \param options an array of strings for application specific options. The last element of the array should be NULL.
- */
-void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);
-
-/**
- * \brief Returns common usage information
- *
- * You should (probably) be using SDLTest_CommonLogUsage() instead, but this
- * function remains for binary compatibility. Strings returned from this
- * function are valid until SDLTest_CommonQuit() is called, in which case
- * those strings' memory is freed and can no longer be used.
- *
- * \param state The common state describing the test window to create.
- * \returns a string with usage information
- */
-const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
-
-/**
- * \brief Open test window.
- *
- * \param state The common state describing the test window to create.
- *
- * \returns SDL_TRUE if initialization succeeded, false otherwise
- */
-SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
-
-/**
- * \brief Easy argument handling when test app doesn't need any custom args.
- *
- * \param state The common state describing the test window to create.
- * \param argc argc, as supplied to SDL_main
- * \param argv argv, as supplied to SDL_main
- *
- * \returns SDL_FALSE if app should quit, true otherwise.
- */
-SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);
-
-/**
- * \brief Common event handler for test windows.
- *
- * \param state The common state used to create test window.
- * \param event The event to handle.
- * \param done Flag indicating we are done.
- *
- */
-void SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);
-
-/**
- * \brief Close test window.
- *
- * \param state The common state used to create test window.
- *
- */
-void SDLTest_CommonQuit(SDLTest_CommonState * state);
-
-/**
- * \brief Draws various window information (position, size, etc.) to the renderer.
- *
- * \param renderer The renderer to draw to.
- * \param window The window whose information should be displayed.
- * \param usedHeight Returns the height used, so the caller can draw more below.
- *
- */
-void SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_common_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_compare.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_compare.h
deleted file mode 100644
index 5fce25ca1..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_compare.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_compare.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines comparison functions (i.e. for surfaces).
-
-*/
-
-#ifndef SDL_test_compare_h_
-#define SDL_test_compare_h_
-
-#include "SDL.h"
-
-#include "SDL_test_images.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Compares a surface and with reference image data for equality
- *
- * \param surface Surface used in comparison
- * \param referenceSurface Test Surface used in comparison
- * \param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy.
- *
- * \returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ.
- */
-int SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_compare_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_crc32.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_crc32.h
deleted file mode 100644
index bf3478210..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_crc32.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_crc32.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Implements CRC32 calculations (default output is Perl String::CRC32 compatible).
-
-*/
-
-#ifndef SDL_test_crc32_h_
-#define SDL_test_crc32_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ------------ Definitions --------- */
-
-/* Definition shared by all CRC routines */
-
-#ifndef CrcUint32
- #define CrcUint32 unsigned int
-#endif
-#ifndef CrcUint8
- #define CrcUint8 unsigned char
-#endif
-
-#ifdef ORIGINAL_METHOD
- #define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */
-#else
- #define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */
-#endif
-
-/**
- * Data structure for CRC32 (checksum) computation
- */
- typedef struct {
- CrcUint32 crc32_table[256]; /* CRC table */
- } SDLTest_Crc32Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief Initialize the CRC context
- *
- * Note: The function initializes the crc table required for all crc calculations.
- *
- * \param crcContext pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
- */
- int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext);
-
-
-/**
- * \brief calculate a crc32 from a data block
- *
- * \param crcContext pointer to context variable
- * \param inBuf input buffer to checksum
- * \param inLen length of input buffer
- * \param crc32 pointer to Uint32 to store the final CRC into
- *
- * \returns 0 for OK, -1 on error
- *
- */
-int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-/* Same routine broken down into three steps */
-int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);
-int SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
-
-
-/**
- * \brief clean up CRC context
- *
- * \param crcContext pointer to context variable
- *
- * \returns 0 for OK, -1 on error
- *
-*/
-
-int SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_crc32_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_font.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_font.h
deleted file mode 100644
index 18a82ffc8..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_font.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_font.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_font_h_
-#define SDL_test_font_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-#define FONT_CHARACTER_SIZE 8
-#define FONT_LINE_HEIGHT (FONT_CHARACTER_SIZE + 2)
-
-/**
- * \brief Draw a string in the currently set font.
- *
- * \param renderer The renderer to draw on.
- * \param x The X coordinate of the upper left corner of the character.
- * \param y The Y coordinate of the upper left corner of the character.
- * \param c The character to draw.
- *
- * \returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c);
-
-/**
- * \brief Draw a UTF-8 string in the currently set font.
- *
- * The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets.
- *
- * \param renderer The renderer to draw on.
- * \param x The X coordinate of the upper left corner of the string.
- * \param y The Y coordinate of the upper left corner of the string.
- * \param s The string to draw.
- *
- * \returns 0 on success, -1 on failure.
- */
-int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);
-
-/**
- * \brief Data used for multi-line text output
- */
-typedef struct SDLTest_TextWindow
-{
- SDL_Rect rect;
- int current;
- int numlines;
- char **lines;
-} SDLTest_TextWindow;
-
-/**
- * \brief Create a multi-line text output window
- *
- * \param x The X coordinate of the upper left corner of the window.
- * \param y The Y coordinate of the upper left corner of the window.
- * \param w The width of the window (currently ignored)
- * \param h The height of the window (currently ignored)
- *
- * \returns the new window, or NULL on failure.
- *
- * \since This function is available since SDL 2.24.0
- */
-SDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h);
-
-/**
- * \brief Display a multi-line text output window
- *
- * This function should be called every frame to display the text
- *
- * \param textwin The text output window
- * \param renderer The renderer to use for display
- *
- * \since This function is available since SDL 2.24.0
- */
-void SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer);
-
-/**
- * \brief Add text to a multi-line text output window
- *
- * Adds UTF-8 text to the end of the current text. The newline character starts a
- * new line of text. The backspace character deletes the last character or, if the
- * line is empty, deletes the line and goes to the end of the previous line.
- *
- * \param textwin The text output window
- * \param fmt A printf() style format string
- * \param ... additional parameters matching % tokens in the `fmt` string, if any
- *
- * \since This function is available since SDL 2.24.0
- */
-void SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);
-
-/**
- * \brief Add text to a multi-line text output window
- *
- * Adds UTF-8 text to the end of the current text. The newline character starts a
- * new line of text. The backspace character deletes the last character or, if the
- * line is empty, deletes the line and goes to the end of the previous line.
- *
- * \param textwin The text output window
- * \param text The text to add to the window
- * \param len The length, in bytes, of the text to add to the window
- *
- * \since This function is available since SDL 2.24.0
- */
-void SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len);
-
-/**
- * \brief Clear the text in a multi-line text output window
- *
- * \param textwin The text output window
- *
- * \since This function is available since SDL 2.24.0
- */
-void SDLTest_TextWindowClear(SDLTest_TextWindow *textwin);
-
-/**
- * \brief Free the storage associated with a multi-line text output window
- *
- * \param textwin The text output window
- *
- * \since This function is available since SDL 2.24.0
- */
-void SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin);
-
-/**
- * \brief Cleanup textures used by font drawing functions.
- */
-void SDLTest_CleanupTextDrawing(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_font_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_fuzzer.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_fuzzer.h
deleted file mode 100644
index cfe6a14f2..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_fuzzer.h
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_fuzzer.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Data generators for fuzzing test data in a reproducible way.
-
-*/
-
-#ifndef SDL_test_fuzzer_h_
-#define SDL_test_fuzzer_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
- Based on GSOC code by Markus Kauppila
-*/
-
-
-/**
- * \file
- * Note: The fuzzer implementation uses a static instance of random context
- * internally which makes it thread-UNsafe.
- */
-
-/**
- * Initializes the fuzzer for a test
- *
- * \param execKey Execution "Key" that initializes the random number generator uniquely for the test.
- *
- */
-void SDLTest_FuzzerInit(Uint64 execKey);
-
-
-/**
- * Returns a random Uint8
- *
- * \returns a generated integer
- */
-Uint8 SDLTest_RandomUint8(void);
-
-/**
- * Returns a random Sint8
- *
- * \returns a generated signed integer
- */
-Sint8 SDLTest_RandomSint8(void);
-
-
-/**
- * Returns a random Uint16
- *
- * \returns a generated integer
- */
-Uint16 SDLTest_RandomUint16(void);
-
-/**
- * Returns a random Sint16
- *
- * \returns a generated signed integer
- */
-Sint16 SDLTest_RandomSint16(void);
-
-
-/**
- * Returns a random integer
- *
- * \returns a generated integer
- */
-Sint32 SDLTest_RandomSint32(void);
-
-
-/**
- * Returns a random positive integer
- *
- * \returns a generated integer
- */
-Uint32 SDLTest_RandomUint32(void);
-
-/**
- * Returns random Uint64.
- *
- * \returns a generated integer
- */
-Uint64 SDLTest_RandomUint64(void);
-
-
-/**
- * Returns random Sint64.
- *
- * \returns a generated signed integer
- */
-Sint64 SDLTest_RandomSint64(void);
-
-/**
- * \returns a random float in range [0.0 - 1.0]
- */
-float SDLTest_RandomUnitFloat(void);
-
-/**
- * \returns a random double in range [0.0 - 1.0]
- */
-double SDLTest_RandomUnitDouble(void);
-
-/**
- * \returns a random float.
- *
- */
-float SDLTest_RandomFloat(void);
-
-/**
- * \returns a random double.
- *
- */
-double SDLTest_RandomDouble(void);
-
-/**
- * Returns a random boundary value for Uint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or 0 with error set
- */
-Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or 0 with error set
- */
-Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or 0 with error set
- */
-Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Uint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
- * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
- * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100
- * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or 0 with error set
- */
-Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint8 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100
- * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or SINT8_MIN with error set
- */
-Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns a random boundary value for Sint16 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100
- * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or SINT16_MIN with error set
- */
-Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint32 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100
- * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or SINT32_MIN with error set
- */
-Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
-
-/**
- * Returns a random boundary value for Sint64 within the given boundaries.
- * Boundaries are inclusive, see the usage examples below. If validDomain
- * is true, the function will only return valid boundaries, otherwise non-valid
- * boundaries are also possible.
- * If boundary1 > boundary2, the values are swapped
- *
- * Usage examples:
- * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
- * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
- * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100
- * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set
- *
- * \param boundary1 Lower boundary limit
- * \param boundary2 Upper boundary limit
- * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
- *
- * \returns a random boundary value for the given range and domain or SINT64_MIN with error set
- */
-Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
-
-
-/**
- * Returns integer in range [min, max] (inclusive).
- * Min and max values can be negative values.
- * If Max in smaller than min, then the values are swapped.
- * Min and max are the same value, that value will be returned.
- *
- * \param min Minimum inclusive value of returned random number
- * \param max Maximum inclusive value of returned random number
- *
- * \returns a generated random integer in range
- */
-Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
-
-
-/**
- * Generates random null-terminated string. The minimum length for
- * the string is 1 character, maximum length for the string is 255
- * characters and it can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \returns a newly allocated random string; or NULL if length was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiString(void);
-
-
-/**
- * Generates random null-terminated string. The maximum length for
- * the string is defined by the maxLength parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param maxLength The maximum length of the generated string.
- *
- * \returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
-
-
-/**
- * Generates random null-terminated string. The length for
- * the string is defined by the size parameter.
- * String can contain ASCII characters from 32 to 126.
- *
- * Note: Returned string needs to be deallocated.
- *
- * \param size The length of the generated string
- *
- * \returns a newly allocated random string; or NULL if size was invalid or string could not be allocated.
- */
-char * SDLTest_RandomAsciiStringOfSize(int size);
-
-/**
- * Get the invocation count for the fuzzer since last ...FuzzerInit.
- *
- * \returns the invocation count.
- */
-int SDLTest_GetFuzzerInvocationCount(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_fuzzer_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_harness.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_harness.h
deleted file mode 100644
index 26231dcd6..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_harness.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_harness.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- Defines types for test case definitions and the test execution harness API.
-
- Based on original GSOC code by Markus Kauppila
-*/
-
-#ifndef SDL_test_h_arness_h
-#define SDL_test_h_arness_h
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ! Definitions for test case structures */
-#define TEST_ENABLED 1
-#define TEST_DISABLED 0
-
-/* ! Definition of all the possible test return values of the test case method */
-#define TEST_ABORTED -1
-#define TEST_STARTED 0
-#define TEST_COMPLETED 1
-#define TEST_SKIPPED 2
-
-/* ! Definition of all the possible test results for the harness */
-#define TEST_RESULT_PASSED 0
-#define TEST_RESULT_FAILED 1
-#define TEST_RESULT_NO_ASSERT 2
-#define TEST_RESULT_SKIPPED 3
-#define TEST_RESULT_SETUP_FAILURE 4
-
-/* !< Function pointer to a test case setup function (run before every test) */
-typedef void (*SDLTest_TestCaseSetUpFp)(void *arg);
-
-/* !< Function pointer to a test case function */
-typedef int (*SDLTest_TestCaseFp)(void *arg);
-
-/* !< Function pointer to a test case teardown function (run after every test) */
-typedef void (*SDLTest_TestCaseTearDownFp)(void *arg);
-
-/**
- * Holds information about a single test case.
- */
-typedef struct SDLTest_TestCaseReference {
- /* !< Func2Stress */
- SDLTest_TestCaseFp testCase;
- /* !< Short name (or function name) "Func2Stress" */
- const char *name;
- /* !< Long name or full description "This test pushes func2() to the limit." */
- const char *description;
- /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */
- int enabled;
-} SDLTest_TestCaseReference;
-
-/**
- * Holds information about a test suite (multiple test cases).
- */
-typedef struct SDLTest_TestSuiteReference {
- /* !< "PlatformSuite" */
- const char *name;
- /* !< The function that is run before each test. NULL skips. */
- SDLTest_TestCaseSetUpFp testSetUp;
- /* !< The test cases that are run as part of the suite. Last item should be NULL. */
- const SDLTest_TestCaseReference **testCases;
- /* !< The function that is run after each test. NULL skips. */
- SDLTest_TestCaseTearDownFp testTearDown;
-} SDLTest_TestSuiteReference;
-
-
-/**
- * \brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).
- *
- * Note: The returned string needs to be deallocated by the caller.
- *
- * \param length The length of the seed string to generate
- *
- * \returns the generated seed string
- */
-char *SDLTest_GenerateRunSeed(const int length);
-
-/**
- * \brief Execute a test suite using the given run seed and execution key.
- *
- * \param testSuites Suites containing the test case.
- * \param userRunSeed Custom run seed provided by user, or NULL to autogenerate one.
- * \param userExecKey Custom execution key provided by user, or 0 to autogenerate one.
- * \param filter Filter specification. NULL disables. Case sensitive.
- * \param testIterations Number of iterations to run each test case.
- *
- * \returns the test run result: 0 when all tests passed, 1 if any tests failed.
- */
-int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_h_arness_h */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_images.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_images.h
deleted file mode 100644
index 121137175..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_images.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_images.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- Defines some images for tests.
-
-*/
-
-#ifndef SDL_test_images_h_
-#define SDL_test_images_h_
-
-#include "SDL.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- *Type for test images.
- */
-typedef struct SDLTest_SurfaceImage_s {
- int width;
- int height;
- unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
- const char *pixel_data;
-} SDLTest_SurfaceImage_t;
-
-/* Test images */
-SDL_Surface *SDLTest_ImageBlit(void);
-SDL_Surface *SDLTest_ImageBlitColor(void);
-SDL_Surface *SDLTest_ImageBlitAlpha(void);
-SDL_Surface *SDLTest_ImageBlitBlendAdd(void);
-SDL_Surface *SDLTest_ImageBlitBlend(void);
-SDL_Surface *SDLTest_ImageBlitBlendMod(void);
-SDL_Surface *SDLTest_ImageBlitBlendNone(void);
-SDL_Surface *SDLTest_ImageBlitBlendAll(void);
-SDL_Surface *SDLTest_ImageFace(void);
-SDL_Surface *SDLTest_ImagePrimitives(void);
-SDL_Surface *SDLTest_ImagePrimitivesBlend(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_images_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_log.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_log.h
deleted file mode 100644
index a27ffc209..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_log.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_log.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- *
- * Wrapper to log in the TEST category
- *
- */
-
-#ifndef SDL_test_log_h_
-#define SDL_test_log_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and INFO priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * \brief Prints given message with a timestamp in the TEST category and the ERROR priority.
- *
- * \param fmt Message to be logged
- */
-void SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_log_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_md5.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_md5.h
deleted file mode 100644
index 538c7ae3e..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_md5.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_md5.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
- ***********************************************************************
- ** Header file for implementation of MD5 **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
- ** Created: 2/17/90 RLR **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
- ** Revised (for MD5): RLR 4/27/91 **
- ** -- G modified to have y&~z instead of y&z **
- ** -- FF, GG, HH modified to add in last register done **
- ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
- ** -- distinct additive constant for each step **
- ** -- round 4 added, working mod 7 **
- ***********************************************************************
-*/
-
-/*
- ***********************************************************************
- ** Message-digest routines: **
- ** To form the message digest for a message M **
- ** (1) Initialize a context buffer mdContext using MD5Init **
- ** (2) Call MD5Update on mdContext and M **
- ** (3) Call MD5Final on mdContext **
- ** The message digest is now in mdContext->digest[0...15] **
- ***********************************************************************
-*/
-
-#ifndef SDL_test_md5_h_
-#define SDL_test_md5_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ------------ Definitions --------- */
-
-/* typedef a 32-bit type */
- typedef unsigned long int MD5UINT4;
-
-/* Data structure for MD5 (Message-Digest) computation */
- typedef struct {
- MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
- MD5UINT4 buf[4]; /* scratch buffer */
- unsigned char in[64]; /* input buffer */
- unsigned char digest[16]; /* actual digest after Md5Final call */
- } SDLTest_Md5Context;
-
-/* ---------- Function Prototypes ------------- */
-
-/**
- * \brief initialize the context
- *
- * \param mdContext pointer to context variable
- *
- * Note: The function initializes the message-digest context
- * mdContext. Call before each new use of the context -
- * all fields are set to zero.
- */
- void SDLTest_Md5Init(SDLTest_Md5Context * mdContext);
-
-
-/**
- * \brief update digest from variable length data
- *
- * \param mdContext pointer to context variable
- * \param inBuf pointer to data array/string
- * \param inLen length of data array/string
- *
- * Note: The function updates the message-digest context to account
- * for the presence of each of the characters inBuf[0..inLen-1]
- * in the message whose digest is being computed.
-*/
-
- void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf,
- unsigned int inLen);
-
-
-/**
- * \brief complete digest computation
- *
- * \param mdContext pointer to context variable
- *
- * Note: The function terminates the message-digest computation and
- * ends with the desired message digest in mdContext.digest[0..15].
- * Always call before using the digest[] variable.
-*/
-
- void SDLTest_Md5Final(SDLTest_Md5Context * mdContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_md5_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_memory.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_memory.h
deleted file mode 100644
index f959177d2..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_memory.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_memory.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-#ifndef SDL_test_memory_h_
-#define SDL_test_memory_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * \brief Start tracking SDL memory allocations
- *
- * \note This should be called before any other SDL functions for complete tracking coverage
- */
-int SDLTest_TrackAllocations(void);
-
-/**
- * \brief Print a log of any outstanding allocations
- *
- * \note This can be called after SDL_Quit()
- */
-void SDLTest_LogAllocations(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_memory_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_random.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_random.h
deleted file mode 100644
index 0035a8030..000000000
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_test_random.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_test_random.h
- *
- * Include file for SDL test framework.
- *
- * This code is a part of the SDL2_test library, not the main SDL library.
- */
-
-/*
-
- A "32-bit Multiply with carry random number generator. Very fast.
- Includes a list of recommended multipliers.
-
- multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
- period: (a*2^31)-1
-
-*/
-
-#ifndef SDL_test_random_h_
-#define SDL_test_random_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --- Definitions */
-
-/*
- * Macros that return a random number in a specific format.
- */
-#define SDLTest_RandomInt(c) ((int)SDLTest_Random(c))
-
-/*
- * Context structure for the random number generator state.
- */
- typedef struct {
- unsigned int a;
- unsigned int x;
- unsigned int c;
- unsigned int ah;
- unsigned int al;
- } SDLTest_RandomContext;
-
-
-/* --- Function prototypes */
-
-/**
- * \brief Initialize random number generator with two integers.
- *
- * Note: The random sequence of numbers returned by ...Random() is the
- * same for the same two integers and has a period of 2^31.
- *
- * \param rndContext pointer to context structure
- * \param xi integer that defines the random sequence
- * \param ci integer that defines the random sequence
- *
- */
- void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
- unsigned int ci);
-
-/**
- * \brief Initialize random number generator based on current system time.
- *
- * \param rndContext pointer to context structure
- *
- */
- void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
-
-
-/**
- * \brief Initialize random number generator based on current system time.
- *
- * Note: ...RandomInit() or ...RandomInitTime() must have been called
- * before using this function.
- *
- * \param rndContext pointer to context structure
- *
- * \returns a random number (32bit unsigned integer)
- *
- */
- unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_test_random_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_thread.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_thread.h
index b829bbad5..ac405d85e 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_thread.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_thread.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -23,9 +23,9 @@
#define SDL_thread_h_
/**
- * \file SDL_thread.h
+ * # CategoryThread
*
- * Header for the SDL thread management routines.
+ * Header for the SDL thread management routines.
*/
#include "SDL_stdinc.h"
@@ -63,16 +63,18 @@ typedef unsigned long SDL_threadID;
typedef unsigned int SDL_TLSID;
/**
- * The SDL thread priority.
+ * The SDL thread priority.
*
- * SDL will make system changes as necessary in order to apply the thread priority.
- * Code which attempts to control thread state related to priority should be aware
- * that calling SDL_SetThreadPriority may alter such state.
- * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior.
+ * SDL will make system changes as necessary in order to apply the thread
+ * priority. Code which attempts to control thread state related to priority
+ * should be aware that calling SDL_SetThreadPriority may alter such state.
+ * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this
+ * behavior.
*
- * \note On many systems you require special privileges to set high or time critical priority.
+ * On many systems you require special privileges to set high or time critical
+ * priority.
*/
-typedef enum {
+typedef enum SDL_ThreadPriority {
SDL_THREAD_PRIORITY_LOW,
SDL_THREAD_PRIORITY_NORMAL,
SDL_THREAD_PRIORITY_HIGH,
@@ -82,7 +84,7 @@ typedef enum {
/**
* The function passed to SDL_CreateThread().
*
- * \param data what was passed as `data` to SDL_CreateThread()
+ * \param data what was passed as `data` to SDL_CreateThread().
* \returns a value that can be reported through SDL_WaitThread().
*/
typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
@@ -192,9 +194,9 @@ SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const siz
* SDL_CreateThreadWithStackSize(fn, name, 0, data);
* ```
*
- * \param fn the SDL_ThreadFunction function to call in the new thread
- * \param name the name of the thread
- * \param data a pointer that is passed to `fn`
+ * \param fn the SDL_ThreadFunction function to call in the new thread.
+ * \param name the name of the thread.
+ * \param data a pointer that is passed to `fn`.
* \returns an opaque pointer to the new thread object on success, NULL if the
* new thread could not be created; call SDL_GetError() for more
* information.
@@ -238,10 +240,10 @@ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
* function, but for backwards compatibility, this is currently a separate
* function.
*
- * \param fn the SDL_ThreadFunction function to call in the new thread
- * \param name the name of the thread
+ * \param fn the SDL_ThreadFunction function to call in the new thread.
+ * \param name the name of the thread.
* \param stacksize the size, in bytes, to allocate for the new thread stack.
- * \param data a pointer that is passed to `fn`
+ * \param data a pointer that is passed to `fn`.
* \returns an opaque pointer to the new thread object on success, NULL if the
* new thread could not be created; call SDL_GetError() for more
* information.
@@ -261,7 +263,7 @@ SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const siz
* This is internal memory, not to be freed by the caller, and remains valid
* until the specified thread is cleaned up by SDL_WaitThread().
*
- * \param thread the thread to query
+ * \param thread the thread to query.
* \returns a pointer to a UTF-8 string that names the specified thread, or
* NULL if it doesn't have a name.
*
@@ -296,7 +298,7 @@ extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
* If SDL is running on a platform that does not support threads the return
* value will always be zero.
*
- * \param thread the thread to query
+ * \param thread the thread to query.
* \returns the ID of the specified thread, or the ID of the current thread if
* `thread` is NULL.
*
@@ -313,7 +315,7 @@ extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
* promote the thread to a higher priority) at all, and some require you to be
* an administrator account. Be prepared for this to fail.
*
- * \param priority the SDL_ThreadPriority to set
+ * \param priority the SDL_ThreadPriority to set.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -344,7 +346,7 @@ extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
* afterward.
*
* \param thread the SDL_Thread pointer that was returned from the
- * SDL_CreateThread() call that started this thread
+ * SDL_CreateThread() call that started this thread.
* \param status pointer to an integer that will receive the value returned
* from the thread function by its 'return', or NULL to not
* receive such value back.
@@ -383,7 +385,7 @@ extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
* It is safe to pass NULL to this function; it is a no-op.
*
* \param thread the SDL_Thread pointer that was returned from the
- * SDL_CreateThread() call that started this thread
+ * SDL_CreateThread() call that started this thread.
*
* \since This function is available since SDL 2.0.2.
*
@@ -410,7 +412,7 @@ extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
/**
* Get the current thread's value associated with a thread local storage ID.
*
- * \param id the thread local storage ID
+ * \param id the thread local storage ID.
* \returns the value associated with the ID for the current thread or NULL if
* no value has been set; call SDL_GetError() for more information.
*
@@ -421,6 +423,8 @@ extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
*/
extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
+typedef void (SDLCALL *SDL_TLSDestructorCallback)(void*);
+
/**
* Set the current thread's value associated with a thread local storage ID.
*
@@ -432,10 +436,10 @@ extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
*
* where its parameter `value` is what was passed as `value` to SDL_TLSSet().
*
- * \param id the thread local storage ID
- * \param value the value to associate with the ID for the current thread
+ * \param id the thread local storage ID.
+ * \param value the value to associate with the ID for the current thread.
* \param destructor a function called when the thread exits, to free the
- * value
+ * value.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -444,7 +448,7 @@ extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
* \sa SDL_TLSCreate
* \sa SDL_TLSGet
*/
-extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));
+extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, SDL_TLSDestructorCallback destructor);
/**
* Cleanup all TLS data for this thread.
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_timer.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_timer.h
index 98f9ad16c..60969690b 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_timer.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_timer.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -23,9 +23,9 @@
#define SDL_timer_h_
/**
- * \file SDL_timer.h
+ * # CategoryTimer
*
- * Header for the SDL time management routines.
+ * Header for the SDL time management routines.
*/
#include "SDL_stdinc.h"
@@ -89,8 +89,8 @@ extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void);
* days, but should _not_ be used with SDL_GetTicks64(), which does not have
* that problem.
*
- * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could
- * do this:
+ * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could do
+ * this:
*
* ```c
* const Uint32 timeout = SDL_GetTicks() + 100;
@@ -99,9 +99,9 @@ extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void);
* }
* ```
*
- * Note that this does not handle tick differences greater
- * than 2^31 so take care when using the above kind of code
- * with large timeout delays (tens of days).
+ * Note that this does not handle tick differences greater than 2^31 so take
+ * care when using the above kind of code with large timeout delays (tens of
+ * days).
*/
#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0)
@@ -140,7 +140,7 @@ extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
* waits at least the specified time, but possibly longer due to OS
* scheduling.
*
- * \param ms the number of milliseconds to delay
+ * \param ms the number of milliseconds to delay.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -149,10 +149,10 @@ extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
/**
* Function prototype for the timer callback function.
*
- * The callback function is passed the current timer interval and returns
- * the next timer interval. If the returned value is the same as the one
- * passed in, the periodic alarm continues, otherwise a new alarm is
- * scheduled. If the callback returns 0, the periodic alarm is cancelled.
+ * The callback function is passed the current timer interval and returns the
+ * next timer interval. If the returned value is the same as the one passed
+ * in, the periodic alarm continues, otherwise a new alarm is scheduled. If
+ * the callback returns 0, the periodic alarm is cancelled.
*/
typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
@@ -182,10 +182,10 @@ typedef int SDL_TimerID;
* time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your
* callback needs to adjust for variances.
*
- * \param interval the timer delay, in milliseconds, passed to `callback`
+ * \param interval the timer delay, in milliseconds, passed to `callback`.
* \param callback the SDL_TimerCallback function to call when the specified
- * `interval` elapses
- * \param param a pointer that is passed to `callback`
+ * `interval` elapses.
+ * \param param a pointer that is passed to `callback`.
* \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more
* information.
*
@@ -200,7 +200,7 @@ extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
/**
* Remove a timer created with SDL_AddTimer().
*
- * \param id the ID of the timer to remove
+ * \param id the ID of the timer to remove.
* \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't
* found.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_touch.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_touch.h
index c12d4a1c8..80a0fef8a 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_touch.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_touch.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_touch.h
+ * # CategoryTouch
*
- * Include file for SDL touch event handling.
+ * Include file for SDL touch event handling.
*/
#ifndef SDL_touch_h_
@@ -85,7 +85,7 @@ extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
/**
* Get the touch ID with the given index.
*
- * \param index the touch device index
+ * \param index the touch device index.
* \returns the touch ID with the given index on success or 0 if the index is
* invalid; call SDL_GetError() for more information.
*
@@ -113,7 +113,7 @@ extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID t
/**
* Get the number of active fingers for a given touch device.
*
- * \param touchID the ID of a touch device
+ * \param touchID the ID of a touch device.
* \returns the number of active fingers for a given touch device on success
* or 0 on failure; call SDL_GetError() for more information.
*
@@ -128,8 +128,8 @@ extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
*
* The returned resource is owned by SDL and should not be deallocated.
*
- * \param touchID the ID of the requested touch device
- * \param index the index of the requested finger
+ * \param touchID the ID of the requested touch device.
+ * \param index the index of the requested finger.
* \returns a pointer to the SDL_Finger object or NULL if no object at the
* given ID and index could be found.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_types.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_types.h
index b5d7192ff..cb3b4a8df 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_types.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_types.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,11 +19,6 @@
3. This notice may not be removed or altered from any source distribution.
*/
-/**
- * \file SDL_types.h
- *
- * \deprecated
- */
-
/* DEPRECATED */
+
#include "SDL_stdinc.h"
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_version.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_version.h
index 7585eece5..daba05eab 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_version.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_version.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_version.h
+ * # CategoryVersion
*
- * This header defines the current SDL version.
+ * This header defines the current SDL version.
*/
#ifndef SDL_version_h_
@@ -40,10 +40,9 @@ extern "C" {
* Information about the version of SDL in use.
*
* Represents the library's version as three levels: major revision
- * (increments with massive changes, additions, and enhancements),
- * minor revision (increments with backwards-compatible changes to the
- * major revision), and patchlevel (increments with fixes to the minor
- * revision).
+ * (increments with massive changes, additions, and enhancements), minor
+ * revision (increments with backwards-compatible changes to the major
+ * revision), and patchlevel (increments with fixes to the minor revision).
*
* \sa SDL_VERSION
* \sa SDL_GetVersion
@@ -58,18 +57,17 @@ typedef struct SDL_version
/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
*/
#define SDL_MAJOR_VERSION 2
-#define SDL_MINOR_VERSION 28
-#define SDL_PATCHLEVEL 5
+#define SDL_MINOR_VERSION 32
+#define SDL_PATCHLEVEL 6
/**
* Macro to determine SDL version program was compiled against.
*
- * This macro fills in a SDL_version structure with the version of the
- * library you compiled against. This is determined by what header the
- * compiler uses. Note that if you dynamically linked the library, you might
- * have a slightly newer or older version at runtime. That version can be
- * determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
- * is not a macro.
+ * This macro fills in a SDL_version structure with the version of the library
+ * you compiled against. This is determined by what header the compiler uses.
+ * Note that if you dynamically linked the library, you might have a slightly
+ * newer or older version at runtime. That version can be determined with
+ * SDL_GetVersion(), which, unlike SDL_VERSION(), is not a macro.
*
* \param x A pointer to a SDL_version struct to initialize.
*
@@ -85,37 +83,40 @@ typedef struct SDL_version
/* TODO: Remove this whole block in SDL 3 */
#if SDL_MAJOR_VERSION < 3
+
/**
- * This macro turns the version numbers into a numeric value:
- * \verbatim
- (1,2,3) -> (1203)
- \endverbatim
+ * This macro turns the version numbers into a numeric value:
*
- * This assumes that there will never be more than 100 patchlevels.
+ * ```
+ * (1,2,3) -> (1203)
+ * ```
*
- * In versions higher than 2.9.0, the minor version overflows into
- * the thousands digit: for example, 2.23.0 is encoded as 4300,
- * and 2.255.99 would be encoded as 25799.
- * This macro will not be available in SDL 3.x.
+ * This assumes that there will never be more than 100 patchlevels.
+ *
+ * In versions higher than 2.9.0, the minor version overflows into the
+ * thousands digit: for example, 2.23.0 is encoded as 4300, and 2.255.99 would
+ * be encoded as 25799.
+ *
+ * This macro will not be available in SDL 3.x.
*/
#define SDL_VERSIONNUM(X, Y, Z) \
((X)*1000 + (Y)*100 + (Z))
/**
- * This is the version number macro for the current SDL version.
+ * This is the version number macro for the current SDL version.
*
- * In versions higher than 2.9.0, the minor version overflows into
- * the thousands digit: for example, 2.23.0 is encoded as 4300.
- * This macro will not be available in SDL 3.x.
+ * In versions higher than 2.9.0, the minor version overflows into the
+ * thousands digit: for example, 2.23.0 is encoded as 4300. This macro will
+ * not be available in SDL 3.x.
*
- * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead.
+ * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead.
*/
#define SDL_COMPILEDVERSION \
SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
#endif /* SDL_MAJOR_VERSION < 3 */
/**
- * This macro will evaluate to true if compiled with SDL at least X.Y.Z.
+ * This macro will evaluate to true if compiled with SDL at least X.Y.Z.
*/
#define SDL_VERSION_ATLEAST(X, Y, Z) \
((SDL_MAJOR_VERSION >= X) && \
@@ -132,7 +133,7 @@ typedef struct SDL_version
*
* This function may be called safely at any time, even before SDL_Init().
*
- * \param ver the SDL_version structure that contains the version information
+ * \param ver the SDL_version structure that contains the version information.
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_video.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_video.h
index c8b2d7a0d..2db5552fa 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_video.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_video.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_video.h
+ * # CategoryVideo
*
- * Header file for SDL video functions.
+ * Header file for SDL video functions.
*/
#ifndef SDL_video_h_
@@ -40,17 +40,17 @@ extern "C" {
#endif
/**
- * \brief The structure that defines a display mode
+ * The structure that defines a display mode
*
- * \sa SDL_GetNumDisplayModes()
- * \sa SDL_GetDisplayMode()
- * \sa SDL_GetDesktopDisplayMode()
- * \sa SDL_GetCurrentDisplayMode()
- * \sa SDL_GetClosestDisplayMode()
- * \sa SDL_SetWindowDisplayMode()
- * \sa SDL_GetWindowDisplayMode()
+ * \sa SDL_GetNumDisplayModes
+ * \sa SDL_GetDisplayMode
+ * \sa SDL_GetDesktopDisplayMode
+ * \sa SDL_GetCurrentDisplayMode
+ * \sa SDL_GetClosestDisplayMode
+ * \sa SDL_SetWindowDisplayMode
+ * \sa SDL_GetWindowDisplayMode
*/
-typedef struct
+typedef struct SDL_DisplayMode
{
Uint32 format; /**< pixel format */
int w; /**< width, in screen coordinates */
@@ -60,46 +60,46 @@ typedef struct
} SDL_DisplayMode;
/**
- * \brief The type used to identify a window
+ * The opaque type used to identify a window.
*
- * \sa SDL_CreateWindow()
- * \sa SDL_CreateWindowFrom()
- * \sa SDL_DestroyWindow()
- * \sa SDL_FlashWindow()
- * \sa SDL_GetWindowData()
- * \sa SDL_GetWindowFlags()
- * \sa SDL_GetWindowGrab()
- * \sa SDL_GetWindowKeyboardGrab()
- * \sa SDL_GetWindowMouseGrab()
- * \sa SDL_GetWindowPosition()
- * \sa SDL_GetWindowSize()
- * \sa SDL_GetWindowTitle()
- * \sa SDL_HideWindow()
- * \sa SDL_MaximizeWindow()
- * \sa SDL_MinimizeWindow()
- * \sa SDL_RaiseWindow()
- * \sa SDL_RestoreWindow()
- * \sa SDL_SetWindowData()
- * \sa SDL_SetWindowFullscreen()
- * \sa SDL_SetWindowGrab()
- * \sa SDL_SetWindowKeyboardGrab()
- * \sa SDL_SetWindowMouseGrab()
- * \sa SDL_SetWindowIcon()
- * \sa SDL_SetWindowPosition()
- * \sa SDL_SetWindowSize()
- * \sa SDL_SetWindowBordered()
- * \sa SDL_SetWindowResizable()
- * \sa SDL_SetWindowTitle()
- * \sa SDL_ShowWindow()
+ * \sa SDL_CreateWindow
+ * \sa SDL_CreateWindowFrom
+ * \sa SDL_DestroyWindow
+ * \sa SDL_FlashWindow
+ * \sa SDL_GetWindowData
+ * \sa SDL_GetWindowFlags
+ * \sa SDL_GetWindowGrab
+ * \sa SDL_GetWindowKeyboardGrab
+ * \sa SDL_GetWindowMouseGrab
+ * \sa SDL_GetWindowPosition
+ * \sa SDL_GetWindowSize
+ * \sa SDL_GetWindowTitle
+ * \sa SDL_HideWindow
+ * \sa SDL_MaximizeWindow
+ * \sa SDL_MinimizeWindow
+ * \sa SDL_RaiseWindow
+ * \sa SDL_RestoreWindow
+ * \sa SDL_SetWindowData
+ * \sa SDL_SetWindowFullscreen
+ * \sa SDL_SetWindowGrab
+ * \sa SDL_SetWindowKeyboardGrab
+ * \sa SDL_SetWindowMouseGrab
+ * \sa SDL_SetWindowIcon
+ * \sa SDL_SetWindowPosition
+ * \sa SDL_SetWindowSize
+ * \sa SDL_SetWindowBordered
+ * \sa SDL_SetWindowResizable
+ * \sa SDL_SetWindowTitle
+ * \sa SDL_ShowWindow
*/
typedef struct SDL_Window SDL_Window;
/**
- * \brief The flags on a window
+ * The flags on a window
*
- * \sa SDL_GetWindowFlags()
+ * \sa SDL_GetWindowFlags
*/
-typedef enum
+typedef enum SDL_WindowFlags
{
SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */
SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */
@@ -131,7 +131,7 @@ typedef enum
} SDL_WindowFlags;
/**
- * \brief Used to indicate that you don't care what the window position is.
+ * Used to indicate that you don't care what the window position is.
*/
#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u
#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
@@ -140,7 +140,7 @@ typedef enum
(((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
/**
- * \brief Used to indicate that the window position should be centered.
+ * Used to indicate that the window position should be centered.
*/
#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u
#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X))
@@ -149,9 +149,9 @@ typedef enum
(((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
/**
- * \brief Event subtype for window events
+ * Event subtype for window events
*/
-typedef enum
+typedef enum SDL_WindowEventID
{
SDL_WINDOWEVENT_NONE, /**< Never used */
SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */
@@ -180,9 +180,9 @@ typedef enum
} SDL_WindowEventID;
/**
- * \brief Event subtype for display events
+ * Event subtype for display events
*/
-typedef enum
+typedef enum SDL_DisplayEventID
{
SDL_DISPLAYEVENT_NONE, /**< Never used */
SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */
@@ -192,9 +192,9 @@ typedef enum
} SDL_DisplayEventID;
/**
- * \brief Display orientation
+ * Display orientation
*/
-typedef enum
+typedef enum SDL_DisplayOrientation
{
SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
@@ -204,9 +204,9 @@ typedef enum
} SDL_DisplayOrientation;
/**
- * \brief Window flash operation
+ * Window flash operation
*/
-typedef enum
+typedef enum SDL_FlashOperation
{
SDL_FLASH_CANCEL, /**< Cancel any window flash state */
SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */
@@ -214,53 +214,85 @@ typedef enum
} SDL_FlashOperation;
/**
- * \brief An opaque handle to an OpenGL context.
+ * An opaque handle to an OpenGL context.
+ *
+ * \sa SDL_GL_CreateContext
*/
typedef void *SDL_GLContext;
/**
- * \brief OpenGL configuration attributes
+ * OpenGL configuration attributes.
+ *
+ * While you can set most OpenGL attributes normally, the attributes listed
+ * above must be known before SDL creates the window that will be used with
+ * the OpenGL context. These attributes are set and read with
+ * SDL_GL_SetAttribute and SDL_GL_GetAttribute.
+ *
+ * In some cases, these attributes are minimum requests; the GL does not
+ * promise to give you exactly what you asked for. It's possible to ask for a
+ * 16-bit depth buffer and get a 24-bit one instead, for example, or to ask
+ * for no stencil buffer and still have one available. Context creation should
+ * fail if the GL can't provide your requested attributes at a minimum, but
+ * you should check to see exactly what you got.
+ *
+ *
+ * [Multisample anti-aliasing](http://en.wikipedia.org/wiki/Multisample_anti-aliasing)
+ * is a type of full screen anti-aliasing. Multipsampling defaults to off but
+ * can be turned on by setting SDL_GL_MULTISAMPLEBUFFERS to 1 and
+ * SDL_GL_MULTISAMPLESAMPLES to a value greater than 0. Typical values are 2
+ * and 4.
+ *
+ * SDL_GL_CONTEXT_PROFILE_MASK determines the type of context created, while
+ * both SDL_GL_CONTEXT_MAJOR_VERSION and SDL_GL_CONTEXT_MINOR_VERSION
+ * determine which version. All three attributes must be set prior to creating
+ * the first window, and in general you can't change the value of
+ * SDL_GL_CONTEXT_PROFILE_MASK without first destroying all windows created
+ * with the previous setting.
+ *
+ * SDL_GL_CONTEXT_RELEASE_BEHAVIOR can be set to
+ * SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE or
+ * SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH.
*/
-typedef enum
+typedef enum SDL_GLattr
{
- SDL_GL_RED_SIZE,
- SDL_GL_GREEN_SIZE,
- SDL_GL_BLUE_SIZE,
- SDL_GL_ALPHA_SIZE,
- SDL_GL_BUFFER_SIZE,
- SDL_GL_DOUBLEBUFFER,
- SDL_GL_DEPTH_SIZE,
- SDL_GL_STENCIL_SIZE,
- SDL_GL_ACCUM_RED_SIZE,
- SDL_GL_ACCUM_GREEN_SIZE,
- SDL_GL_ACCUM_BLUE_SIZE,
- SDL_GL_ACCUM_ALPHA_SIZE,
- SDL_GL_STEREO,
- SDL_GL_MULTISAMPLEBUFFERS,
- SDL_GL_MULTISAMPLESAMPLES,
- SDL_GL_ACCELERATED_VISUAL,
- SDL_GL_RETAINED_BACKING,
- SDL_GL_CONTEXT_MAJOR_VERSION,
- SDL_GL_CONTEXT_MINOR_VERSION,
- SDL_GL_CONTEXT_EGL,
- SDL_GL_CONTEXT_FLAGS,
- SDL_GL_CONTEXT_PROFILE_MASK,
- SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
- SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
- SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
+ SDL_GL_RED_SIZE, /**< the minimum number of bits for the red channel of the color buffer; defaults to 3. */
+ SDL_GL_GREEN_SIZE, /**< the minimum number of bits for the green channel of the color buffer; defaults to 3. */
+ SDL_GL_BLUE_SIZE, /**< the minimum number of bits for the blue channel of the color buffer; defaults to 2. */
+ SDL_GL_ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the color buffer; defaults to 0. */
+ SDL_GL_BUFFER_SIZE, /**< the minimum number of bits for frame buffer size; defaults to 0. */
+ SDL_GL_DOUBLEBUFFER, /**< whether the output is single or double buffered; defaults to double buffering on. */
+ SDL_GL_DEPTH_SIZE, /**< the minimum number of bits in the depth buffer; defaults to 16. */
+ SDL_GL_STENCIL_SIZE, /**< the minimum number of bits in the stencil buffer; defaults to 0. */
+ SDL_GL_ACCUM_RED_SIZE, /**< the minimum number of bits for the red channel of the accumulation buffer; defaults to 0. */
+ SDL_GL_ACCUM_GREEN_SIZE, /**< the minimum number of bits for the green channel of the accumulation buffer; defaults to 0. */
+ SDL_GL_ACCUM_BLUE_SIZE, /**< the minimum number of bits for the blue channel of the accumulation buffer; defaults to 0. */
+ SDL_GL_ACCUM_ALPHA_SIZE, /**< the minimum number of bits for the alpha channel of the accumulation buffer; defaults to 0. */
+ SDL_GL_STEREO, /**< whether the output is stereo 3D; defaults to off. */
+ SDL_GL_MULTISAMPLEBUFFERS, /**< the number of buffers used for multisample anti-aliasing; defaults to 0. */
+ SDL_GL_MULTISAMPLESAMPLES, /**< the number of samples used around the current pixel used for multisample anti-aliasing. */
+ SDL_GL_ACCELERATED_VISUAL, /**< set to 1 to require hardware acceleration, set to 0 to force software rendering; defaults to allow either. */
+ SDL_GL_RETAINED_BACKING, /**< not used (deprecated). */
+ SDL_GL_CONTEXT_MAJOR_VERSION, /**< OpenGL context major version. */
+ SDL_GL_CONTEXT_MINOR_VERSION, /**< OpenGL context minor version. */
+ SDL_GL_CONTEXT_EGL, /**< deprecated: set SDL_GL_CONTEXT_PROFILE_MASK to SDL_GL_CONTEXT_PROFILE_ES to enable instead. */
+ SDL_GL_CONTEXT_FLAGS, /**< some combination of 0 or more of elements of the SDL_GLcontextFlag enumeration; defaults to 0. */
+ SDL_GL_CONTEXT_PROFILE_MASK, /**< type of GL context (Core, Compatibility, ES). See SDL_GLprofile; default value depends on platform. */
+ SDL_GL_SHARE_WITH_CURRENT_CONTEXT, /**< OpenGL context sharing; defaults to 0. */
+ SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, /**< requests sRGB capable visual; defaults to 0. (>= SDL 2.0.1) */
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR, /**< sets context the release behavior; defaults to 1. (>= SDL 2.0.4) */
SDL_GL_CONTEXT_RESET_NOTIFICATION,
SDL_GL_CONTEXT_NO_ERROR,
SDL_GL_FLOATBUFFERS
} SDL_GLattr;
-typedef enum
+typedef enum SDL_GLprofile
{
SDL_GL_CONTEXT_PROFILE_CORE = 0x0001,
SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002,
SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
} SDL_GLprofile;
-typedef enum
+typedef enum SDL_GLcontextFlag
{
SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001,
SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
@@ -268,13 +300,13 @@ typedef enum
SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
} SDL_GLcontextFlag;
-typedef enum
+typedef enum SDL_GLcontextReleaseFlag
{
SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000,
SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
} SDL_GLcontextReleaseFlag;
-typedef enum
+typedef enum SDL_GLContextResetNotification
{
SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
@@ -300,7 +332,7 @@ extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
* The video drivers are presented in the order in which they are normally
* checked during initialization.
*
- * \param index the index of a video driver
+ * \param index the index of a video driver.
* \returns the name of the video driver with the given **index**.
*
* \since This function is available since SDL 2.0.0.
@@ -327,7 +359,7 @@ extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
* specific `driver_name`.
*
* \param driver_name the name of a video driver to initialize, or NULL for
- * the default driver
+ * the default driver.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -380,7 +412,7 @@ extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
* Get the name of a display in UTF-8 encoding.
*
* \param displayIndex the index of display from which the name should be
- * queried
+ * queried.
* \returns the name of a display or NULL for an invalid display index or
* failure; call SDL_GetError() for more information.
*
@@ -395,8 +427,8 @@ extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
*
* The primary display (`displayIndex` zero) is always located at 0,0.
*
- * \param displayIndex the index of the display to query
- * \param rect the SDL_Rect structure filled in with the display bounds
+ * \param displayIndex the index of the display to query.
+ * \param rect the SDL_Rect structure filled in with the display bounds.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -425,8 +457,8 @@ extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * re
* range.
*
* \param displayIndex the index of the display to query the usable bounds
- * from
- * \param rect the SDL_Rect structure filled in with the display bounds
+ * from.
+ * \param rect the SDL_Rect structure filled in with the display bounds.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -456,13 +488,13 @@ extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rec
* more consistent, reliable, and clear.
*
* \param displayIndex the index of the display from which DPI information
- * should be queried
+ * should be queried.
* \param ddpi a pointer filled in with the diagonal DPI of the display; may
- * be NULL
+ * be NULL.
* \param hdpi a pointer filled in with the horizontal DPI of the display; may
- * be NULL
+ * be NULL.
* \param vdpi a pointer filled in with the vertical DPI of the display; may
- * be NULL
+ * be NULL.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -475,7 +507,7 @@ extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, fl
/**
* Get the orientation of a display.
*
- * \param displayIndex the index of the display to query
+ * \param displayIndex the index of the display to query.
* \returns The SDL_DisplayOrientation enum value of the display, or
* `SDL_ORIENTATION_UNKNOWN` if it isn't available.
*
@@ -491,7 +523,7 @@ extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int dis
* The `displayIndex` needs to be in the range from 0 to
* SDL_GetNumVideoDisplays() - 1.
*
- * \param displayIndex the index of the display to query
+ * \param displayIndex the index of the display to query.
* \returns a number >= 1 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -513,10 +545,10 @@ extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
* - packed pixel layout -> largest to smallest
* - refresh rate -> highest to lowest
*
- * \param displayIndex the index of the display to query
- * \param modeIndex the index of the display mode to query
+ * \param displayIndex the index of the display to query.
+ * \param modeIndex the index of the display mode to query.
* \param mode an SDL_DisplayMode structure filled in with the mode at
- * `modeIndex`
+ * `modeIndex`.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -535,9 +567,9 @@ extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
* function will return the previous native display mode, and not the current
* display mode.
*
- * \param displayIndex the index of the display to query
+ * \param displayIndex the index of the display to query.
* \param mode an SDL_DisplayMode structure filled in with the current display
- * mode
+ * mode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -557,9 +589,9 @@ extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_Disp
* function will return the current display mode, and not the previous native
* display mode.
*
- * \param displayIndex the index of the display to query
+ * \param displayIndex the index of the display to query.
* \param mode an SDL_DisplayMode structure filled in with the current display
- * mode
+ * mode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -583,11 +615,11 @@ extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_Disp
* and finally checking the refresh rate. If all the available modes are too
* small, then NULL is returned.
*
- * \param displayIndex the index of the display to query
+ * \param displayIndex the index of the display to query.
* \param mode an SDL_DisplayMode structure containing the desired display
- * mode
+ * mode.
* \param closest an SDL_DisplayMode structure filled in with the closest
- * match of the available display modes
+ * match of the available display modes.
* \returns the passed in value `closest` or NULL if no matching video mode
* was available; call SDL_GetError() for more information.
*
@@ -601,7 +633,7 @@ extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayI
/**
* Get the index of the display containing a point
*
- * \param point the point to query
+ * \param point the point to query.
* \returns the index of the display containing the point or a negative error
* code on failure; call SDL_GetError() for more information.
*
@@ -615,7 +647,7 @@ extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point);
/**
* Get the index of the display primarily containing a rect
*
- * \param rect the rect to query
+ * \param rect the rect to query.
* \returns the index of the display entirely containing the rect or closest
* to the center of the rect on success or a negative error code on
* failure; call SDL_GetError() for more information.
@@ -630,7 +662,7 @@ extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect);
/**
* Get the index of the display associated with a window.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the index of the display containing the center of the window on
* success or a negative error code on failure; call SDL_GetError()
* for more information.
@@ -649,10 +681,10 @@ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
* change the window size when the window is not fullscreen, use
* SDL_SetWindowSize().
*
- * \param window the window to affect
+ * \param window the window to affect.
* \param mode the SDL_DisplayMode structure representing the mode to use, or
* NULL to use the window's dimensions and the desktop's format
- * and refresh rate
+ * and refresh rate.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -667,9 +699,9 @@ extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
/**
* Query the display mode to use when a window is visible at fullscreen.
*
- * \param window the window to query
+ * \param window the window to query.
* \param mode an SDL_DisplayMode structure filled in with the fullscreen
- * display mode
+ * display mode.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -686,8 +718,8 @@ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
*
* Data returned should be freed with SDL_free.
*
- * \param window the window to query
- * \param size the size of the ICC profile
+ * \param window the window to query.
+ * \param size the size of the ICC profile.
* \returns the raw ICC profile data on success or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -698,7 +730,7 @@ extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_
/**
* Get the pixel format associated with the window.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the pixel format of the window on success or
* SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more
* information.
@@ -762,15 +794,15 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
* loader or link to a dynamic library version. This limitation may be removed
* in a future version of SDL.
*
- * \param title the title of the window, in UTF-8 encoding
+ * \param title the title of the window, in UTF-8 encoding.
* \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or
- * `SDL_WINDOWPOS_UNDEFINED`
+ * `SDL_WINDOWPOS_UNDEFINED`.
* \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or
- * `SDL_WINDOWPOS_UNDEFINED`
- * \param w the width of the window, in screen coordinates
- * \param h the height of the window, in screen coordinates
- * \param flags 0, or one or more SDL_WindowFlags OR'd together
- * \returns the window that was created or NULL on failure; call
+ * `SDL_WINDOWPOS_UNDEFINED`.
+ * \param w the width of the window, in screen coordinates.
+ * \param h the height of the window, in screen coordinates.
+ * \param flags 0, or one or more SDL_WindowFlags OR'd together.
+ * \returns the `SDL_Window` that was created or NULL on failure; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 2.0.0.
@@ -790,7 +822,7 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
* before using SDL_CreateWindowFrom().
*
* \param data a pointer to driver-dependent window creation data, typically
- * your native window cast to a void*
+ * your native window cast to a void*.
* \returns the window that was created or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -807,7 +839,7 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
* The numeric ID is what SDL_WindowEvent references, and is necessary to map
* these events to specific SDL_Window objects.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the ID of the window on success or 0 on failure; call
* SDL_GetError() for more information.
*
@@ -823,7 +855,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
* The numeric ID is what SDL_WindowEvent references, and is necessary to map
* these events to specific SDL_Window objects.
*
- * \param id the ID of the window
+ * \param id the ID of the window.
* \returns the window associated with `id` or NULL if it doesn't exist; call
* SDL_GetError() for more information.
*
@@ -836,8 +868,8 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
/**
* Get the window flags.
*
- * \param window the window to query
- * \returns a mask of the SDL_WindowFlags associated with `window`
+ * \param window the window to query.
+ * \returns a mask of the SDL_WindowFlags associated with `window`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -856,8 +888,8 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
*
* This string is expected to be in UTF-8 encoding.
*
- * \param window the window to change
- * \param title the desired window title in UTF-8 format
+ * \param window the window to change.
+ * \param title the desired window title in UTF-8 format.
*
* \since This function is available since SDL 2.0.0.
*
@@ -869,7 +901,7 @@ extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
/**
* Get the title of a window.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the title of the window in UTF-8 format or "" if there is no
* title.
*
@@ -882,8 +914,8 @@ extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
/**
* Set the icon for a window.
*
- * \param window the window to change
- * \param icon an SDL_Surface structure containing the icon for the window
+ * \param window the window to change.
+ * \param icon an SDL_Surface structure containing the icon for the window.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -895,9 +927,9 @@ extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
*
* `name` is case-sensitive.
*
- * \param window the window to associate with the pointer
- * \param name the name of the pointer
- * \param userdata the associated pointer
+ * \param window the window to associate with the pointer.
+ * \param name the name of the pointer.
+ * \param userdata the associated pointer.
* \returns the previous value associated with `name`.
*
* \since This function is available since SDL 2.0.0.
@@ -911,8 +943,8 @@ extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
/**
* Retrieve the data pointer associated with a window.
*
- * \param window the window to query
- * \param name the name of the pointer
+ * \param window the window to query.
+ * \param name the name of the pointer.
* \returns the value associated with `name`.
*
* \since This function is available since SDL 2.0.0.
@@ -927,11 +959,11 @@ extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
*
* The window coordinate origin is the upper left of the display.
*
- * \param window the window to reposition
+ * \param window the window to reposition.
* \param x the x coordinate of the window in screen coordinates, or
- * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
+ * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`.
* \param y the y coordinate of the window in screen coordinates, or
- * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`
+ * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`.
*
* \since This function is available since SDL 2.0.0.
*
@@ -946,11 +978,11 @@ extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
* If you do not need the value for one of the positions a NULL may be passed
* in the `x` or `y` parameter.
*
- * \param window the window to query
+ * \param window the window to query.
* \param x a pointer filled in with the x position of the window, in screen
- * coordinates, may be NULL
+ * coordinates, may be NULL.
* \param y a pointer filled in with the y position of the window, in screen
- * coordinates, may be NULL
+ * coordinates, may be NULL.
*
* \since This function is available since SDL 2.0.0.
*
@@ -970,11 +1002,11 @@ extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
* Fullscreen windows automatically match the size of the display mode, and
* you should use SDL_SetWindowDisplayMode() to change their size.
*
- * \param window the window to change
+ * \param window the window to change.
* \param w the width of the window in pixels, in screen coordinates, must be
- * > 0
+ * > 0.
* \param h the height of the window in pixels, in screen coordinates, must be
- * > 0
+ * > 0.
*
* \since This function is available since SDL 2.0.0.
*
@@ -996,11 +1028,11 @@ extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
* SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the
* real client area size in pixels.
*
- * \param window the window to query the width and height from
+ * \param window the window to query the width and height from.
* \param w a pointer filled in with the width of the window, in screen
- * coordinates, may be NULL
+ * coordinates, may be NULL.
* \param h a pointer filled in with the height of the window, in screen
- * coordinates, may be NULL
+ * coordinates, may be NULL.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1027,15 +1059,15 @@ extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
* This function also returns -1 if getting the information is not supported.
*
* \param window the window to query the size values of the border
- * (decorations) from
+ * (decorations) from.
* \param top pointer to variable for storing the size of the top border; NULL
- * is permitted
+ * is permitted.
* \param left pointer to variable for storing the size of the left border;
- * NULL is permitted
+ * NULL is permitted.
* \param bottom pointer to variable for storing the size of the bottom
- * border; NULL is permitted
+ * border; NULL is permitted.
* \param right pointer to variable for storing the size of the right border;
- * NULL is permitted
+ * NULL is permitted.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1055,10 +1087,11 @@ extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
* platform with high-DPI support (Apple calls this "Retina"), and not
* disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
*
- * \param window the window from which the drawable size should be queried
- * \param w a pointer to variable for storing the width in pixels, may be NULL
+ * \param window the window from which the drawable size should be queried.
+ * \param w a pointer to variable for storing the width in pixels, may be
+ * NULL.
* \param h a pointer to variable for storing the height in pixels, may be
- * NULL
+ * NULL.
*
* \since This function is available since SDL 2.26.0.
*
@@ -1071,9 +1104,9 @@ extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window,
/**
* Set the minimum size of a window's client area.
*
- * \param window the window to change
- * \param min_w the minimum width of the window in pixels
- * \param min_h the minimum height of the window in pixels
+ * \param window the window to change.
+ * \param min_w the minimum width of the window in pixels.
+ * \param min_h the minimum height of the window in pixels.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1086,11 +1119,11 @@ extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
/**
* Get the minimum size of a window's client area.
*
- * \param window the window to query
+ * \param window the window to query.
* \param w a pointer filled in with the minimum width of the window, may be
- * NULL
+ * NULL.
* \param h a pointer filled in with the minimum height of the window, may be
- * NULL
+ * NULL.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1103,9 +1136,9 @@ extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
/**
* Set the maximum size of a window's client area.
*
- * \param window the window to change
- * \param max_w the maximum width of the window in pixels
- * \param max_h the maximum height of the window in pixels
+ * \param window the window to change.
+ * \param max_w the maximum width of the window in pixels.
+ * \param max_h the maximum height of the window in pixels.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1118,11 +1151,11 @@ extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
/**
* Get the maximum size of a window's client area.
*
- * \param window the window to query
+ * \param window the window to query.
* \param w a pointer filled in with the maximum width of the window, may be
- * NULL
+ * NULL.
* \param h a pointer filled in with the maximum height of the window, may be
- * NULL
+ * NULL.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1141,8 +1174,8 @@ extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
*
* You can't change the border state of a fullscreen window.
*
- * \param window the window of which to change the border state
- * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border
+ * \param window the window of which to change the border state.
+ * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1160,8 +1193,8 @@ extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
*
* You can't change the resizable state of a fullscreen window.
*
- * \param window the window of which to change the resizable state
- * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow
+ * \param window the window of which to change the resizable state.
+ * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
*
* \since This function is available since SDL 2.0.5.
*
@@ -1176,9 +1209,9 @@ extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
* This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This
* will bring the window to the front and keep the window above the rest.
*
- * \param window The window of which to change the always on top state
+ * \param window The window of which to change the always on top state.
* \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to
- * disable
+ * disable.
*
* \since This function is available since SDL 2.0.16.
*
@@ -1190,7 +1223,7 @@ extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window,
/**
* Show a window.
*
- * \param window the window to show
+ * \param window the window to show.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1202,7 +1235,7 @@ extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
/**
* Hide a window.
*
- * \param window the window to hide
+ * \param window the window to hide.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1213,7 +1246,7 @@ extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
/**
* Raise a window above other windows and set the input focus.
*
- * \param window the window to raise
+ * \param window the window to raise.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -1222,7 +1255,7 @@ extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
/**
* Make a window as large as possible.
*
- * \param window the window to maximize
+ * \param window the window to maximize.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1234,7 +1267,7 @@ extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
/**
* Minimize a window to an iconic representation.
*
- * \param window the window to minimize
+ * \param window the window to minimize.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1246,7 +1279,7 @@ extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
/**
* Restore the size and position of a minimized or maximized window.
*
- * \param window the window to restore
+ * \param window the window to restore.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1262,8 +1295,12 @@ extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
* videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen
* that takes the size of the desktop; and 0 for windowed mode.
*
- * \param window the window to change
- * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0
+ * Note that for some renderers, this function may trigger an
+ * SDL_RENDER_TARGETS_RESET event. Your application should be prepared to
+ * handle this event by reuploading textures!
+ *
+ * \param window the window to change.
+ * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1278,7 +1315,8 @@ extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
/**
* Return whether the window has a surface associated with it.
*
- * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise.
+ * \returns SDL_TRUE if there is a surface associated with the window, or
+ * SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.28.0.
*
@@ -1296,11 +1334,15 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window);
* This surface will be invalidated if the window is resized. After resizing a
* window this function must be called again to return a valid surface.
*
+ * Note that on some platforms the pixels pointer of the surface may be
+ * modified after each call to SDL_UpdateWindowSurface(), so that the platform
+ * code can implement efficient double or triple buffering.
+ *
* You may not combine this with 3D or the rendering API on this window.
*
* This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns the surface associated with the window, or NULL on failure; call
* SDL_GetError() for more information.
*
@@ -1321,7 +1363,7 @@ extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
*
* This function is equivalent to the SDL 1.2 API SDL_Flip().
*
- * \param window the window to update
+ * \param window the window to update.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1340,10 +1382,15 @@ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
*
* This function is equivalent to the SDL 1.2 API SDL_UpdateRects().
*
- * \param window the window to update
+ * Note that this function will update _at least_ the rectangles specified,
+ * but this is only intended as an optimization; in practice, this might
+ * update more of the screen (or all of the screen!), depending on what method
+ * SDL uses to send pixels to the system.
+ *
+ * \param window the window to update.
* \param rects an array of SDL_Rect structures representing areas of the
- * surface to copy, in pixels
- * \param numrects the number of rectangles
+ * surface to copy, in pixels.
+ * \param numrects the number of rectangles.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1359,7 +1406,7 @@ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
/**
* Destroy the surface associated with the window.
*
- * \param window the window to update
+ * \param window the window to update.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1380,8 +1427,8 @@ extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window);
* If the caller enables a grab while another window is currently grabbed, the
* other window loses its grab in favor of the caller's window.
*
- * \param window the window for which the input grab mode should be set
- * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input
+ * \param window the window for which the input grab mode should be set.
+ * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1442,7 +1489,7 @@ extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window,
/**
* Get a window's input grab mode.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -1454,7 +1501,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
/**
* Get a window's keyboard grab mode.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.16.
@@ -1467,7 +1514,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window);
/**
* Get a window's mouse grab mode.
*
- * \param window the window to query
+ * \param window the window to query.
* \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.16.
@@ -1511,7 +1558,7 @@ extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SD
/**
* Get the mouse confinement rectangle of a window.
*
- * \param window The window to query
+ * \param window The window to query.
* \returns A pointer to the mouse confinement rectangle of a window, or NULL
* if there isn't one.
*
@@ -1536,9 +1583,9 @@ extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * win
* something similar.
*
* \param window the window used to select the display whose brightness will
- * be changed
+ * be changed.
* \param brightness the brightness (gamma multiplier) value to set where 0.0
- * is completely dark and 1.0 is normal brightness
+ * is completely dark and 1.0 is normal brightness.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1558,7 +1605,7 @@ extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float b
* this display can be retrieved using SDL_GetWindowDisplayIndex().)
*
* \param window the window used to select the display whose brightness will
- * be queried
+ * be queried.
* \returns the brightness for the display where 0.0 is completely dark and
* 1.0 is normal brightness.
*
@@ -1576,8 +1623,8 @@ extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
*
* This function also returns -1 if setting the opacity isn't supported.
*
- * \param window the window which will be made transparent or opaque
- * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque)
+ * \param window the window which will be made transparent or opaque.
+ * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque).
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1597,8 +1644,8 @@ extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opac
*
* This function also returns -1 if an invalid window was provided.
*
- * \param window the window to get the current opacity value from
- * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque)
+ * \param window the window to get the current opacity value from.
+ * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque).
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1611,8 +1658,8 @@ extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * ou
/**
* Set the window as a modal for another window.
*
- * \param modal_window the window that should be set modal
- * \param parent_window the parent window for the modal window
+ * \param modal_window the window that should be set modal.
+ * \param parent_window the parent window for the modal window.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1627,7 +1674,7 @@ extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL
* this with caution, as you might give focus to a window that is completely
* obscured by other windows.
*
- * \param window the window that should get the input focus
+ * \param window the window that should get the input focus.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1653,13 +1700,13 @@ extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
* ramp set will not follow the window if it is moved to another display.
*
* \param window the window used to select the display whose gamma ramp will
- * be changed
+ * be changed.
* \param red a 256 element array of 16-bit quantities representing the
- * translation table for the red channel, or NULL
+ * translation table for the red channel, or NULL.
* \param green a 256 element array of 16-bit quantities representing the
- * translation table for the green channel, or NULL
+ * translation table for the green channel, or NULL.
* \param blue a 256 element array of 16-bit quantities representing the
- * translation table for the blue channel, or NULL
+ * translation table for the blue channel, or NULL.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1681,13 +1728,13 @@ extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
* this display can be retrieved using SDL_GetWindowDisplayIndex().)
*
* \param window the window used to select the display whose gamma ramp will
- * be queried
+ * be queried.
* \param red a 256 element array of 16-bit quantities filled in with the
- * translation table for the red channel, or NULL
+ * translation table for the red channel, or NULL.
* \param green a 256 element array of 16-bit quantities filled in with the
- * translation table for the green channel, or NULL
+ * translation table for the green channel, or NULL.
* \param blue a 256 element array of 16-bit quantities filled in with the
- * translation table for the blue channel, or NULL
+ * translation table for the blue channel, or NULL.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1705,7 +1752,7 @@ extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
*
* \sa SDL_HitTest
*/
-typedef enum
+typedef enum SDL_HitTestResult
{
SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */
SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */
@@ -1722,9 +1769,9 @@ typedef enum
/**
* Callback used for hit-testing.
*
- * \param win the SDL_Window where hit-testing was set on
- * \param area an SDL_Point which should be hit-tested
- * \param data what was passed as `callback_data` to SDL_SetWindowHitTest()
+ * \param win the SDL_Window where hit-testing was set on.
+ * \param area an SDL_Point which should be hit-tested.
+ * \param data what was passed as `callback_data` to SDL_SetWindowHitTest().
* \return an SDL_HitTestResult value.
*
* \sa SDL_SetWindowHitTest
@@ -1765,9 +1812,9 @@ typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
* can fire at any time, you should try to keep your callback efficient,
* devoid of allocations, etc.
*
- * \param window the window to set hit-testing on
- * \param callback the function to call when doing a hit-test
- * \param callback_data an app-defined void pointer passed to **callback**
+ * \param window the window to set hit-testing on.
+ * \param callback the function to call when doing a hit-test.
+ * \param callback_data an app-defined void pointer passed to **callback**.
* \returns 0 on success or -1 on error (including unsupported); call
* SDL_GetError() for more information.
*
@@ -1780,8 +1827,8 @@ extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
/**
* Request a window to demand attention from the user.
*
- * \param window the window to be flashed
- * \param operation the flash operation
+ * \param window the window to be flashed.
+ * \param operation the flash operation.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1795,7 +1842,7 @@ extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperat
* If `window` is NULL, this function will return immediately after setting
* the SDL error message to "Invalid window". See SDL_GetError().
*
- * \param window the window to destroy
+ * \param window the window to destroy.
*
* \since This function is available since SDL 2.0.0.
*
@@ -1866,7 +1913,7 @@ extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
* program from the dynamic library using SDL_GL_GetProcAddress().
*
* \param path the platform dependent OpenGL library name, or NULL to open the
- * default OpenGL library
+ * default OpenGL library.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1918,7 +1965,7 @@ extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
* code. This will ensure the proper calling convention is followed on
* platforms where this matters (Win32) thereby avoiding stack corruption.
*
- * \param proc the name of an OpenGL function
+ * \param proc the name of an OpenGL function.
* \returns a pointer to the named OpenGL function. The returned pointer
* should be cast to the appropriate function signature.
*
@@ -1953,7 +2000,7 @@ extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
* context and save that information somewhere instead of calling the function
* every time you need to know.
*
- * \param extension the name of the extension to check
+ * \param extension the name of the extension to check.
* \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise.
*
* \since This function is available since SDL 2.0.0.
@@ -1979,8 +2026,9 @@ extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
* SDL_GL_GetAttribute() to check the values after creating the OpenGL
* context, since the values obtained can differ from the requested ones.
*
- * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set
- * \param value the desired value for the attribute
+ * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to
+ * set.
+ * \param value the desired value for the attribute.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -1994,8 +2042,9 @@ extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
/**
* Get the actual value for an attribute from the current context.
*
- * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get
- * \param value a pointer filled in with the current value of `attr`
+ * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to
+ * get.
+ * \param value a pointer filled in with the current value of `attr`.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -2017,7 +2066,7 @@ extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
*
* SDL_GLContext is an alias for `void *`. It's opaque to the application.
*
- * \param window the window to associate with the context
+ * \param window the window to associate with the context.
* \returns the OpenGL context associated with `window` or NULL on error; call
* SDL_GetError() for more details.
*
@@ -2034,8 +2083,8 @@ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
*
* The context must have been created with a compatible window.
*
- * \param window the window to associate with the context
- * \param context the OpenGL context to associate with the window
+ * \param window the window to associate with the context.
+ * \param context the OpenGL context to associate with the window.
* \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information.
*
@@ -2078,10 +2127,11 @@ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
* platform with high-DPI support (Apple calls this "Retina"), and not
* disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
*
- * \param window the window from which the drawable size should be queried
- * \param w a pointer to variable for storing the width in pixels, may be NULL
+ * \param window the window from which the drawable size should be queried.
+ * \param w a pointer to variable for storing the width in pixels, may be
+ * NULL.
* \param h a pointer to variable for storing the height in pixels, may be
- * NULL
+ * NULL.
*
* \since This function is available since SDL 2.0.1.
*
@@ -2110,7 +2160,7 @@ extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
* https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync
*
* \param interval 0 for immediate updates, 1 for updates synchronized with
- * the vertical retrace, -1 for adaptive vsync
+ * the vertical retrace, -1 for adaptive vsync.
* \returns 0 on success or -1 if setting the swap interval is not supported;
* call SDL_GetError() for more information.
*
@@ -2147,7 +2197,7 @@ extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
* glBindFramebuffer(), this is the default and you won't have to do anything
* extra.
*
- * \param window the window to change
+ * \param window the window to change.
*
* \since This function is available since SDL 2.0.0.
*/
@@ -2156,7 +2206,7 @@ extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
/**
* Delete an OpenGL context.
*
- * \param context the OpenGL context to be deleted
+ * \param context the OpenGL context to be deleted.
*
* \since This function is available since SDL 2.0.0.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_vulkan.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_vulkan.h
index ab86a0b86..e005ed373 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_vulkan.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/SDL_vulkan.h
@@ -20,9 +20,9 @@
*/
/**
- * \file SDL_vulkan.h
+ * # CategoryVulkan
*
- * Header file for functions to creating Vulkan surfaces on SDL windows.
+ * Header file for functions to creating Vulkan surfaces on SDL windows.
*/
#ifndef SDL_vulkan_h_
@@ -52,6 +52,10 @@ extern "C" {
VK_DEFINE_HANDLE(VkInstance)
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
+/* Make sure to undef to avoid issues in case of later vulkan include */
+#undef VK_DEFINE_HANDLE
+#undef VK_DEFINE_NON_DISPATCHABLE_HANDLE
+
#endif /* !NO_SDL_VULKAN_TYPEDEFS */
typedef VkInstance SDL_vulkanInstance;
@@ -97,13 +101,13 @@ typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
* supported. Either do not link to the Vulkan loader or link to a dynamic
* library version.
*
- * \param path The platform dependent Vulkan loader library name or NULL
+ * \param path The platform dependent Vulkan loader library name or NULL.
* \returns 0 on success or -1 if the library couldn't be loaded; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 2.0.6.
*
- * \sa SDL_Vulkan_GetVkInstanceProcAddr
+ * \sa SDL_Vulkan_GetVkGetInstanceProcAddr
* \sa SDL_Vulkan_UnloadLibrary
*/
extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
@@ -146,11 +150,11 @@ extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
* however, this parameter will likely be removed in future releases
*
* \param window A window for which the required Vulkan instance extensions
- * should be retrieved (will be deprecated in a future release)
+ * should be retrieved (will be deprecated in a future release).
* \param pCount A pointer to an unsigned int corresponding to the number of
- * extensions to be returned
+ * extensions to be returned.
* \param pNames NULL or a pointer to an array to be filled with required
- * Vulkan instance extensions
+ * Vulkan instance extensions.
* \returns SDL_TRUE on success, SDL_FALSE on error.
*
* \since This function is available since SDL 2.0.6.
@@ -168,10 +172,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *wi
* `instance` must have been created with extensions returned by
* SDL_Vulkan_GetInstanceExtensions() enabled.
*
- * \param window The window to which to attach the Vulkan surface
- * \param instance The Vulkan instance handle
+ * \param window The window to which to attach the Vulkan surface.
+ * \param instance The Vulkan instance handle.
* \param surface A pointer to a VkSurfaceKHR handle to output the newly
- * created surface
+ * created surface.
* \returns SDL_TRUE on success, SDL_FALSE on error.
*
* \since This function is available since SDL 2.0.6.
@@ -191,9 +195,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window,
* platform with high-DPI support (Apple calls this "Retina"), and not
* disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
*
- * \param window an SDL_Window for which the size is to be queried
- * \param w Pointer to the variable to write the width to or NULL
- * \param h Pointer to the variable to write the height to or NULL
+ * \param window an SDL_Window for which the size is to be queried.
+ * \param w Pointer to the variable to write the width to or NULL.
+ * \param h Pointer to the variable to write the height to or NULL.
*
* \since This function is available since SDL 2.0.6.
*
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/begin_code.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/begin_code.h
index 4142ffeba..2044e5cb0 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/begin_code.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/begin_code.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -19,12 +19,12 @@
3. This notice may not be removed or altered from any source distribution.
*/
+/* WIKI CATEGORY: BeginCode */
+
/**
- * \file begin_code.h
- *
- * This file sets things up for C dynamic library function definitions,
- * static inlined functions, and structures aligned at 4-byte alignment.
- * If you don't like ugly C preprocessor code, don't look at this file. :)
+ * begin_code.h sets things up for C dynamic library function definitions,
+ * static inlined functions, and structures aligned at 4-byte alignment.
+ * If you don't like ugly C preprocessor code, don't look at this file. :)
*/
/* This shouldn't be nested -- included it around code only. */
@@ -36,6 +36,8 @@
#ifndef SDL_DEPRECATED
# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */
# define SDL_DEPRECATED __attribute__((deprecated))
+# elif defined(_MSC_VER)
+# define SDL_DEPRECATED __declspec(deprecated)
# else
# define SDL_DEPRECATED
# endif
@@ -170,7 +172,7 @@
(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L)
#define SDL_FALLTHROUGH [[fallthrough]]
#else
-#if defined(__has_attribute)
+#if defined(__has_attribute) && !defined(__SUNPRO_C) && !defined(__SUNPRO_CC)
#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__)
#else
#define SDL_HAS_FALLTHROUGH 0
diff --git a/libs/SDL2/i686-w64-mingw32/include/SDL2/close_code.h b/libs/SDL2/i686-w64-mingw32/include/SDL2/close_code.h
index b5ff3e204..f991f458d 100644
--- a/libs/SDL2/i686-w64-mingw32/include/SDL2/close_code.h
+++ b/libs/SDL2/i686-w64-mingw32/include/SDL2/close_code.h
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
+ Copyright (C) 1997-2025 Sam Lantinga
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
diff --git a/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config-version.cmake b/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config-version.cmake
deleted file mode 100644
index bbff6121d..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config-version.cmake
+++ /dev/null
@@ -1,12 +0,0 @@
-# sdl2 cmake project-config-version input for ./configure scripts
-
-set(PACKAGE_VERSION "2.28.5")
-
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
-else()
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
- if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
- set(PACKAGE_VERSION_EXACT TRUE)
- endif()
-endif()
diff --git a/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config.cmake b/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config.cmake
deleted file mode 100644
index 492e90b60..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/cmake/SDL2/sdl2-config.cmake
+++ /dev/null
@@ -1,222 +0,0 @@
-# sdl2 cmake project-config input for ./configure script
-
-include(FeatureSummary)
-set_package_properties(SDL2 PROPERTIES
- URL "https://www.libsdl.org/"
- DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware"
-)
-
-# Copied from `configure_package_config_file`
-macro(set_and_check _var _file)
- set(${_var} "${_file}")
- if(NOT EXISTS "${_file}")
- message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
- endif()
-endmacro()
-
-get_filename_component(CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_DIR} REALPATH)
-get_filename_component(prefix "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)
-
-set(exec_prefix "${prefix}")
-set(bindir "${exec_prefix}/bin")
-set(libdir "${exec_prefix}/lib")
-set(includedir "${prefix}/include")
-
-set_and_check(SDL2_PREFIX "${prefix}")
-set_and_check(SDL2_EXEC_PREFIX "${exec_prefix}")
-set_and_check(SDL2_BINDIR "${bindir}")
-set_and_check(SDL2_INCLUDE_DIR "${includedir}/SDL2")
-set_and_check(SDL2_LIBDIR "${libdir}")
-set(SDL2_INCLUDE_DIRS "${includedir};${SDL2_INCLUDE_DIR}")
-
-set(SDL2_LIBRARIES SDL2::SDL2)
-set(SDL2_STATIC_LIBRARIES SDL2::SDL2-static)
-set(SDL2MAIN_LIBRARY)
-set(SDL2TEST_LIBRARY SDL2::SDL2test)
-
-unset(prefix)
-unset(exec_prefix)
-unset(bindir)
-unset(libdir)
-unset(includedir)
-
-set(_sdl2_libraries_in "-lmingw32 -lSDL2main -lSDL2 -mwindows")
-set(_sdl2_static_private_libs_in " -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid")
-
-# Convert _sdl2_libraries to list and keep only libraries + library directories
-string(REGEX MATCHALL "-[lm]([-a-zA-Z0-9._]+)" _sdl2_libraries "${_sdl2_libraries_in}")
-string(REGEX REPLACE "^-l" "" _sdl2_libraries "${_sdl2_libraries}")
-string(REGEX REPLACE ";-l" ";" _sdl2_libraries "${_sdl2_libraries}")
-string(REGEX MATCHALL "-L([-a-zA-Z0-9._/]+)" _sdl2_libdirs "${_sdl2_libraries_in}")
-string(REGEX REPLACE "^-L" "" _sdl2_libdirs "${_sdl2_libdirs}")
-string(REGEX REPLACE ";-L" ";" _sdl2_libdirs "${_sdl2_libdirs}")
-list(APPEND _sdl2_libdirs "${SDL2_LIBDIR}")
-
-# Convert _sdl2_static_private_libs to list and keep only libraries + library directories
-string(REGEX MATCHALL "(-[lm]([-a-zA-Z0-9._]+))|(-Wl,[^ ]*framework[^ ]*)|(-pthread)" _sdl2_static_private_libs "${_sdl2_static_private_libs_in}")
-string(REGEX REPLACE "^-l" "" _sdl2_static_private_libs "${_sdl2_static_private_libs}")
-string(REGEX REPLACE ";-l" ";" _sdl2_static_private_libs "${_sdl2_static_private_libs}")
-string(REGEX MATCHALL "-L([-a-zA-Z0-9._/]+)" _sdl2_static_private_libdirs "${_sdl2_static_private_libs_in}")
-string(REGEX REPLACE "^-L" "" _sdl2_static_private_libdirs "${_sdl2_static_private_libdirs}")
-string(REGEX REPLACE ";-L" ";" _sdl2_static_private_libdirs "${_sdl2_static_private_libdirs}")
-
-# Set SDL2_NO_MWINDOWS to a true-ish value to not add the -mwindows link option
-if(SDL2_NO_MWINDOWS)
- list(REMOVE_ITEM _sdl2_libraries "-mwindows")
-endif()
-
-if(_sdl2_libraries MATCHES ".*SDL2main.*")
- list(INSERT SDL2_LIBRARIES 0 SDL2::SDL2main)
- list(INSERT SDL2_STATIC_LIBRARIES 0 SDL2::SDL2main)
-endif()
-
-set(_sdl2main_library ${SDL2_LIBDIR}/libSDL2main.a)
-if(EXISTS "${_sdl2main_library}")
- set(SDL2MAIN_LIBRARY SDL2::SDL2main)
- if(NOT TARGET SDL2::SDL2main)
- add_library(SDL2::SDL2main STATIC IMPORTED)
- set_target_properties(SDL2::SDL2main
- PROPERTIES
- IMPORTED_LOCATION "${_sdl2main_library}"
- COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
- INTERFACE_SDL_VERSION "SDL2"
- )
- if(WIN32)
- # INTERFACE_LINK_OPTIONS needs CMake 3.13
- cmake_minimum_required(VERSION 3.13)
- # Mark WinMain/WinMain@16 as undefined, such that it will be withheld by the linker.
- if(CMAKE_SIZEOF_VOID_P EQUAL 4)
- set_target_properties(SDL2::SDL2main
- PROPERTIES
- INTERFACE_LINK_OPTIONS "$<$,EXECUTABLE>:-Wl,--undefined=_WinMain@16>"
- )
- else()
- set_target_properties(SDL2::SDL2main
- PROPERTIES
- INTERFACE_LINK_OPTIONS "$<$,EXECUTABLE>:-Wl,--undefined=WinMain>"
- )
- endif()
- endif()
- endif()
- set(SDL2_SDL2main_FOUND TRUE)
-else()
- set(SDL2_SDL2main_FOUND FALSE)
-endif()
-unset(_sdl2main_library)
-
-# Remove SDL2 since this is the "central" library
-# Remove SDL2main since this will be provided by SDL2::SDL2main (if available)
-# Remove mingw32 and cygwin since these are not needed when using `-Wl,--undefined,WinMain`
-set(_sdl2_link_libraries ${_sdl2_libraries})
-list(REMOVE_ITEM _sdl2_link_libraries SDL2 SDL2main mingw32 cygwin)
-
-if(WIN32)
- set(_sdl2_implib "${SDL2_LIBDIR}/libSDL2.dll.a")
- set(_sdl2_dll "${SDL2_BINDIR}/SDL2.dll")
- if(EXISTS "${_sdl2_implib}" AND EXISTS "${_sdl2_dll}")
- if(NOT TARGET SDL2::SDL2)
- add_library(SDL2::SDL2 SHARED IMPORTED)
- set_target_properties(SDL2::SDL2 PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${_sdl2_link_libraries}"
- INTERFACE_LINK_DIRECTORIES "${_sdl2_libdirs}"
- IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_IMPLIB "${_sdl2_implib}"
- IMPORTED_LOCATION "${_sdl2_dll}"
- COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
- INTERFACE_SDL_VERSION "SDL2"
- )
- endif()
- set(SDL2_SDL2_FOUND TRUE)
- else()
- set(SDL2_SDL2_FOUND FALSE)
- endif()
- unset(_sdl2_implib)
- unset(_sdl2_dll)
-else()
- set(_sdl2_shared "${SDL2_LIBDIR}/libSDL2${CMAKE_SHARED_LIBRARY_SUFFIX}")
- if(EXISTS "${_sdl2_shared}")
- if(NOT TARGET SDL2::SDL2)
- add_library(SDL2::SDL2 SHARED IMPORTED)
- set_target_properties(SDL2::SDL2 PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${_sdl2_link_libraries}"
- INTERFACE_LINK_DIRECTORIES "${_sdl2_libdirs}"
- IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- IMPORTED_LOCATION "${_sdl2_shared}"
- COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
- INTERFACE_SDL_VERSION "SDL2"
- )
- endif()
- set(SDL2_SDL2_FOUND TRUE)
- else()
- set(SDL2_SDL2_FOUND FALSE)
- endif()
- unset(_sdl2_shared)
-endif()
-
-set(_sdl2_static "${SDL2_LIBDIR}/libSDL2.a")
-if(EXISTS "${_sdl2_static}")
- if(NOT TARGET SDL2::SDL2-static)
- add_library(SDL2::SDL2-static STATIC IMPORTED)
- set_target_properties(SDL2::SDL2-static
- PROPERTIES
- IMPORTED_LOCATION "${_sdl2_static}"
- INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${_sdl2_link_libraries};${_sdl2_static_private_libs}"
- INTERFACE_LINK_DIRECTORIES "${_sdl2_libdirs};${_sdl2_static_private_libdirs}"
- IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
- INTERFACE_SDL_VERSION "SDL2"
- )
- endif()
- set(SDL2_SDL2-static_FOUND TRUE)
-else()
- set(SDL2_SDL2-static_FOUND FALSE)
-endif()
-unset(_sdl2_static)
-
-unset(_sdl2_link_libraries)
-
-set(_sdl2test_library "${SDL2_LIBDIR}/libSDL2_test.a")
-if(EXISTS "${_sdl2test_library}")
- if(NOT TARGET SDL2::SDL2test)
- add_library(SDL2::SDL2test STATIC IMPORTED)
- set_target_properties(SDL2::SDL2test
- PROPERTIES
- IMPORTED_LOCATION "${_sdl2test_library}"
- INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}"
- IMPORTED_LINK_INTERFACE_LANGUAGES "C"
- COMPATIBLE_INTERFACE_STRING "SDL_VERSION"
- INTERFACE_SDL_VERSION "SDL2"
- )
- endif()
- set(SDL2_SDL2test_FOUND TRUE)
-else()
- set(SDL2_SDL2test_FOUND FALSE)
-endif()
-unset(_sdl2test_library)
-
-# Copied from `configure_package_config_file`
-macro(check_required_components _NAME)
- foreach(comp ${${_NAME}_FIND_COMPONENTS})
- if(NOT ${_NAME}_${comp}_FOUND)
- if(${_NAME}_FIND_REQUIRED_${comp})
- set(${_NAME}_FOUND FALSE)
- endif()
- endif()
- endforeach()
-endmacro()
-
-check_required_components(SDL2)
-
-# Create SDL2::SDL2 alias for static-only builds
-if(TARGET SDL2::SDL2-static AND NOT TARGET SDL2::SDL2)
- if(CMAKE_VERSION VERSION_LESS "3.18")
- # FIXME: Aliasing local targets is not supported on CMake < 3.18, so make it global.
- add_library(SDL2::SDL2 INTERFACE IMPORTED)
- set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES "SDL2::SDL2-static")
- else()
- add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static)
- endif()
-endif()
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.a b/libs/SDL2/i686-w64-mingw32/lib/libSDL2.a
index 57a097cbf..7e47cac1b 100644
Binary files a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.a and b/libs/SDL2/i686-w64-mingw32/lib/libSDL2.a differ
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.dll.a b/libs/SDL2/i686-w64-mingw32/lib/libSDL2.dll.a
index 64f541cd8..68171f000 100755
Binary files a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.dll.a and b/libs/SDL2/i686-w64-mingw32/lib/libSDL2.dll.a differ
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.la b/libs/SDL2/i686-w64-mingw32/lib/libSDL2.la
deleted file mode 100755
index 2d0e137fd..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/libSDL2.la
+++ /dev/null
@@ -1,41 +0,0 @@
-# libSDL2.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4.6
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='../bin/SDL2.dll'
-
-# Names of this library.
-library_names='libSDL2.dll.a'
-
-# The name of the static archive.
-old_library='libSDL2.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=' -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid'
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libSDL2.
-current=2800
-age=2800
-revision=5
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/Users/valve/release/SDL2/SDL2-2.28.5/i686-w64-mingw32/lib'
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.a b/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.a
deleted file mode 100644
index 71c766c1c..000000000
Binary files a/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.a and /dev/null differ
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.la b/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.la
deleted file mode 100755
index c72dc0a60..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/libSDL2_test.la
+++ /dev/null
@@ -1,41 +0,0 @@
-# libSDL2_test.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4.6
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libSDL2_test.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libSDL2_test.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/Users/valve/release/SDL2/SDL2-2.28.5/i686-w64-mingw32/lib'
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.a b/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.a
index 9f64593a6..038436598 100644
Binary files a/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.a and b/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.a differ
diff --git a/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.la b/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.la
deleted file mode 100755
index 9c9820d54..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/libSDL2main.la
+++ /dev/null
@@ -1,41 +0,0 @@
-# libSDL2main.la - a libtool library file
-# Generated by libtool (GNU libtool) 2.4.6
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname=''
-
-# Names of this library.
-library_names=''
-
-# The name of the static archive.
-old_library='libSDL2main.a'
-
-# Linker flags that cannot go in dependency_libs.
-inherited_linker_flags=''
-
-# Libraries that this one depends upon.
-dependency_libs=''
-
-# Names of additional weak libraries provided by this library
-weak_library_names=''
-
-# Version information for libSDL2main.
-current=0
-age=0
-revision=0
-
-# Is this an already installed library?
-installed=yes
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=no
-
-# Files to dlopen/dlpreopen
-dlopen=''
-dlpreopen=''
-
-# Directory that this library needs to be installed in:
-libdir='/Users/valve/release/SDL2/SDL2-2.28.5/i686-w64-mingw32/lib'
diff --git a/libs/SDL2/i686-w64-mingw32/lib/pkgconfig/sdl2.pc b/libs/SDL2/i686-w64-mingw32/lib/pkgconfig/sdl2.pc
deleted file mode 100644
index da51b01a0..000000000
--- a/libs/SDL2/i686-w64-mingw32/lib/pkgconfig/sdl2.pc
+++ /dev/null
@@ -1,15 +0,0 @@
-# sdl pkg-config source file
-
-prefix=/i686-w64-mingw32
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: sdl2
-Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
-Version: 2.28.5
-Requires.private:
-Conflicts:
-Libs: -L${libdir} -lmingw32 -lSDL2main -lSDL2 -mwindows
-Libs.private: -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid
-Cflags: -I${includedir} -I${includedir}/SDL2 -Dmain=SDL_main
diff --git a/libs/SDL2/i686-w64-mingw32/share/aclocal/sdl2.m4 b/libs/SDL2/i686-w64-mingw32/share/aclocal/sdl2.m4
deleted file mode 100644
index 7a2c17c06..000000000
--- a/libs/SDL2/i686-w64-mingw32/share/aclocal/sdl2.m4
+++ /dev/null
@@ -1,214 +0,0 @@
-# Configure paths for SDL
-# Sam Lantinga 9/21/99
-# stolen from Manish Singh
-# stolen back from Frank Belew
-# stolen from Manish Singh
-# Shamelessly stolen from Owen Taylor
-#
-# Changelog:
-# * also look for SDL2.framework under Mac OS X
-# * removed HP/UX 9 support.
-# * updated for newer autoconf.
-
-# serial 2
-
-dnl AM_PATH_SDL2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
-dnl
-AC_DEFUN([AM_PATH_SDL2],
-[dnl
-dnl Get the cflags and libraries from the sdl2-config script
-dnl
-AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)],
- sdl_prefix="$withval", sdl_prefix="")
-AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
- sdl_exec_prefix="$withval", sdl_exec_prefix="")
-AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program],
- , enable_sdltest=yes)
-AC_ARG_ENABLE(sdlframework, [ --disable-sdlframework Do not search for SDL2.framework],
- , search_sdl_framework=yes)
-
-AC_ARG_VAR(SDL2_FRAMEWORK, [Path to SDL2.framework])
-
- min_sdl_version=ifelse([$1], ,2.0.0,$1)
-
- if test "x$sdl_prefix$sdl_exec_prefix" = x ; then
- PKG_CHECK_MODULES([SDL], [sdl2 >= $min_sdl_version],
- [sdl_pc=yes],
- [sdl_pc=no])
- else
- sdl_pc=no
- if test x$sdl_exec_prefix != x ; then
- sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix"
- if test x${SDL2_CONFIG+set} != xset ; then
- SDL2_CONFIG=$sdl_exec_prefix/bin/sdl2-config
- fi
- fi
- if test x$sdl_prefix != x ; then
- sdl_config_args="$sdl_config_args --prefix=$sdl_prefix"
- if test x${SDL2_CONFIG+set} != xset ; then
- SDL2_CONFIG=$sdl_prefix/bin/sdl2-config
- fi
- fi
- fi
-
- if test "x$sdl_pc" = xyes ; then
- no_sdl=""
- SDL2_CONFIG="pkg-config sdl2"
- else
- as_save_PATH="$PATH"
- if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then
- PATH="$prefix/bin:$prefix/usr/bin:$PATH"
- fi
- AC_PATH_PROG(SDL2_CONFIG, sdl2-config, no, [$PATH])
- PATH="$as_save_PATH"
- no_sdl=""
-
- if test "$SDL2_CONFIG" = "no" -a "x$search_sdl_framework" = "xyes"; then
- AC_MSG_CHECKING(for SDL2.framework)
- if test "x$SDL2_FRAMEWORK" != x; then
- sdl_framework=$SDL2_FRAMEWORK
- else
- for d in / ~/ /System/; do
- if test -d "${d}Library/Frameworks/SDL2.framework"; then
- sdl_framework="${d}Library/Frameworks/SDL2.framework"
- fi
- done
- fi
-
- if test x"$sdl_framework" != x && test -d "$sdl_framework"; then
- AC_MSG_RESULT($sdl_framework)
- sdl_framework_dir=`dirname $sdl_framework`
- SDL_CFLAGS="-F$sdl_framework_dir -Wl,-framework,SDL2 -I$sdl_framework/include"
- SDL_LIBS="-F$sdl_framework_dir -Wl,-framework,SDL2"
- else
- no_sdl=yes
- fi
- fi
-
- if test "$SDL2_CONFIG" != "no"; then
- if test "x$sdl_pc" = "xno"; then
- AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
- SDL_CFLAGS=`$SDL2_CONFIG $sdl_config_args --cflags`
- SDL_LIBS=`$SDL2_CONFIG $sdl_config_args --libs`
- fi
-
- sdl_major_version=`$SDL2_CONFIG $sdl_config_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
- sdl_minor_version=`$SDL2_CONFIG $sdl_config_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
- sdl_micro_version=`$SDL2_CONFIG $sdl_config_args --version | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- if test "x$enable_sdltest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_CXXFLAGS="$CXXFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $SDL_CFLAGS"
- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
- LIBS="$LIBS $SDL_LIBS"
-dnl
-dnl Now check if the installed SDL is sufficiently new. (Also sanity
-dnl checks the results of sdl2-config to some extent
-dnl
- rm -f conf.sdltest
- AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include
-#include
-#include "SDL.h"
-
-int main (int argc, char *argv[])
-{
- int major, minor, micro;
- FILE *fp = fopen("conf.sdltest", "w");
-
- if (fp) fclose(fp);
-
- if (sscanf("$min_sdl_version", "%d.%d.%d", &major, &minor, µ) != 3) {
- printf("%s, bad version string\n", "$min_sdl_version");
- exit(1);
- }
-
- if (($sdl_major_version > major) ||
- (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
- (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
- {
- return 0;
- }
- else
- {
- printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
- printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro);
- printf("*** best to upgrade to the required version.\n");
- printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n");
- printf("*** to point to the correct copy of sdl2-config, and remove the file\n");
- printf("*** config.cache before re-running configure\n");
- return 1;
- }
-}
-
-]])], [], [no_sdl=yes], [echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- CXXFLAGS="$ac_save_CXXFLAGS"
- LIBS="$ac_save_LIBS"
-
- fi
- if test "x$sdl_pc" = "xno"; then
- if test "x$no_sdl" = "xyes"; then
- AC_MSG_RESULT(no)
- else
- AC_MSG_RESULT(yes)
- fi
- fi
- fi
- fi
- if test "x$no_sdl" = x ; then
- ifelse([$2], , :, [$2])
- else
- if test "$SDL2_CONFIG" = "no" ; then
- echo "*** The sdl2-config script installed by SDL could not be found"
- echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
- echo "*** your path, or set the SDL2_CONFIG environment variable to the"
- echo "*** full path to sdl2-config."
- else
- if test -f conf.sdltest ; then
- :
- else
- echo "*** Could not run SDL test program, checking why..."
- CFLAGS="$CFLAGS $SDL_CFLAGS"
- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
- LIBS="$LIBS $SDL_LIBS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-#include
-#include "SDL.h"
-
-int main(int argc, char *argv[])
-{ return 0; }
-#undef main
-#define main K_and_R_C_main
-]], [[ return 0; ]])],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding SDL or finding the wrong"
- echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means SDL was incorrectly installed"
- echo "*** or that you have moved SDL since it was installed. In the latter case, you"
- echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" ])
- CFLAGS="$ac_save_CFLAGS"
- CXXFLAGS="$ac_save_CXXFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- SDL_CFLAGS=""
- SDL_LIBS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(SDL_CFLAGS)
- AC_SUBST(SDL_LIBS)
- rm -f conf.sdltest
-])
diff --git a/libs/SDL2/include/SDL.h b/libs/SDL2/include/SDL.h
deleted file mode 100644
index 9ba8f68c6..000000000
--- a/libs/SDL2/include/SDL.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL.h
- *
- * Main include header for the SDL library
- */
-
-
-#ifndef SDL_h_
-#define SDL_h_
-
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-#include "SDL_atomic.h"
-#include "SDL_audio.h"
-#include "SDL_clipboard.h"
-#include "SDL_cpuinfo.h"
-#include "SDL_endian.h"
-#include "SDL_error.h"
-#include "SDL_events.h"
-#include "SDL_filesystem.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_guid.h"
-#include "SDL_haptic.h"
-#include "SDL_hidapi.h"
-#include "SDL_hints.h"
-#include "SDL_joystick.h"
-#include "SDL_loadso.h"
-#include "SDL_log.h"
-#include "SDL_messagebox.h"
-#include "SDL_metal.h"
-#include "SDL_mutex.h"
-#include "SDL_power.h"
-#include "SDL_render.h"
-#include "SDL_rwops.h"
-#include "SDL_sensor.h"
-#include "SDL_shape.h"
-#include "SDL_system.h"
-#include "SDL_thread.h"
-#include "SDL_timer.h"
-#include "SDL_version.h"
-#include "SDL_video.h"
-#include "SDL_locale.h"
-#include "SDL_misc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* As of version 0.5, SDL is loaded dynamically into the application */
-
-/**
- * \name SDL_INIT_*
- *
- * These are the flags which may be passed to SDL_Init(). You should
- * specify the subsystems which you will be using in your application.
- */
-/* @{ */
-#define SDL_INIT_TIMER 0x00000001u
-#define SDL_INIT_AUDIO 0x00000010u
-#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
-#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
-#define SDL_INIT_HAPTIC 0x00001000u
-#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
-#define SDL_INIT_EVENTS 0x00004000u
-#define SDL_INIT_SENSOR 0x00008000u
-#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */
-#define SDL_INIT_EVERYTHING ( \
- SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
- SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
- )
-/* @} */
-
-/**
- * Initialize the SDL library.
- *
- * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the
- * two may be used interchangeably. Though for readability of your code
- * SDL_InitSubSystem() might be preferred.
- *
- * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread)
- * subsystems are initialized by default. Message boxes
- * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the
- * video subsystem, in hopes of being useful in showing an error dialog when
- * SDL_Init fails. You must specifically initialize other subsystems if you
- * use them in your application.
- *
- * Logging (such as SDL_Log) works without initialization, too.
- *
- * `flags` may be any of the following OR'd together:
- *
- * - `SDL_INIT_TIMER`: timer subsystem
- * - `SDL_INIT_AUDIO`: audio subsystem
- * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events
- * subsystem
- * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the
- * events subsystem
- * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem
- * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically
- * initializes the joystick subsystem
- * - `SDL_INIT_EVENTS`: events subsystem
- * - `SDL_INIT_EVERYTHING`: all of the above subsystems
- * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored
- *
- * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem()
- * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or
- * call SDL_Quit() to force shutdown). If a subsystem is already loaded then
- * this call will increase the ref-count and return.
- *
- * \param flags subsystem initialization flags
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_InitSubSystem
- * \sa SDL_Quit
- * \sa SDL_SetMainReady
- * \sa SDL_WasInit
- */
-extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
-
-/**
- * Compatibility function to initialize the SDL library.
- *
- * In SDL2, this function and SDL_Init() are interchangeable.
- *
- * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Init
- * \sa SDL_Quit
- * \sa SDL_QuitSubSystem
- */
-extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);
-
-/**
- * Shut down specific SDL subsystems.
- *
- * If you start a subsystem using a call to that subsystem's init function
- * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
- * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use
- * that subsystem's quit function (SDL_VideoQuit()) directly instead. But
- * generally, you should not be using those functions directly anyhow; use
- * SDL_Init() instead.
- *
- * You still need to call SDL_Quit() even if you close all open subsystems
- * with SDL_QuitSubSystem().
- *
- * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_InitSubSystem
- * \sa SDL_Quit
- */
-extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
-
-/**
- * Get a mask of the specified subsystems which are currently initialized.
- *
- * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
- * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it
- * returns the initialization status of the specified subsystems.
- *
- * The return value does not include SDL_INIT_NOPARACHUTE.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Init
- * \sa SDL_InitSubSystem
- */
-extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);
-
-/**
- * Clean up all initialized subsystems.
- *
- * You should call this function even if you have already shutdown each
- * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this
- * function even in the case of errors in initialization.
- *
- * If you start a subsystem using a call to that subsystem's init function
- * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),
- * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut
- * it down before calling SDL_Quit(). But generally, you should not be using
- * those functions directly anyhow; use SDL_Init() instead.
- *
- * You can use this function with atexit() to ensure that it is run when your
- * application is shutdown, but it is not wise to do this from a library or
- * other dynamically loaded code.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Init
- * \sa SDL_QuitSubSystem
- */
-extern DECLSPEC void SDLCALL SDL_Quit(void);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_assert.h b/libs/SDL2/include/SDL_assert.h
deleted file mode 100644
index 7ce823ec5..000000000
--- a/libs/SDL2/include/SDL_assert.h
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_assert_h_
-#define SDL_assert_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef SDL_ASSERT_LEVEL
-#ifdef SDL_DEFAULT_ASSERT_LEVEL
-#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL
-#elif defined(_DEBUG) || defined(DEBUG) || \
- (defined(__GNUC__) && !defined(__OPTIMIZE__))
-#define SDL_ASSERT_LEVEL 2
-#else
-#define SDL_ASSERT_LEVEL 1
-#endif
-#endif /* SDL_ASSERT_LEVEL */
-
-/*
-These are macros and not first class functions so that the debugger breaks
-on the assertion line and not in some random guts of SDL, and so each
-assert can have unique static variables associated with it.
-*/
-
-#if defined(_MSC_VER)
-/* Don't include intrin.h here because it contains C++ code */
- extern void __cdecl __debugbreak(void);
- #define SDL_TriggerBreakpoint() __debugbreak()
-#elif _SDL_HAS_BUILTIN(__builtin_debugtrap)
- #define SDL_TriggerBreakpoint() __builtin_debugtrap()
-#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )
- #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" )
-#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv)
- #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" )
-#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */
- #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" )
-#elif defined(__APPLE__) && defined(__arm__)
- #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" )
-#elif defined(__386__) && defined(__WATCOMC__)
- #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }
-#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)
- #include
- #define SDL_TriggerBreakpoint() raise(SIGTRAP)
-#else
- /* How do we trigger breakpoints on this platform? */
- #define SDL_TriggerBreakpoint()
-#endif
-
-#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
-# define SDL_FUNCTION __func__
-#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))
-# define SDL_FUNCTION __FUNCTION__
-#else
-# define SDL_FUNCTION "???"
-#endif
-#define SDL_FILE __FILE__
-#define SDL_LINE __LINE__
-
-/*
-sizeof (x) makes the compiler still parse the expression even without
-assertions enabled, so the code is always checked at compile time, but
-doesn't actually generate code for it, so there are no side effects or
-expensive checks at run time, just the constant size of what x WOULD be,
-which presumably gets optimized out as unused.
-This also solves the problem of...
-
- int somevalue = blah();
- SDL_assert(somevalue == 1);
-
-...which would cause compiles to complain that somevalue is unused if we
-disable assertions.
-*/
-
-/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking
- this condition isn't constant. And looks like an owl's face! */
-#ifdef _MSC_VER /* stupid /W4 warnings. */
-#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)
-#else
-#define SDL_NULL_WHILE_LOOP_CONDITION (0)
-#endif
-
-#define SDL_disabled_assert(condition) \
- do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-typedef enum
-{
- SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */
- SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */
- SDL_ASSERTION_ABORT, /**< Terminate the program. */
- SDL_ASSERTION_IGNORE, /**< Ignore the assert. */
- SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */
-} SDL_AssertState;
-
-typedef struct SDL_AssertData
-{
- int always_ignore;
- unsigned int trigger_count;
- const char *condition;
- const char *filename;
- int linenum;
- const char *function;
- const struct SDL_AssertData *next;
-} SDL_AssertData;
-
-/* Never call this directly. Use the SDL_assert* macros. */
-extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,
- const char *,
- const char *, int)
-#if defined(__clang__)
-#if __has_feature(attribute_analyzer_noreturn)
-/* this tells Clang's static analysis that we're a custom assert function,
- and that the analyzer should assume the condition was always true past this
- SDL_assert test. */
- __attribute__((analyzer_noreturn))
-#endif
-#endif
-;
-
-/* the do {} while(0) avoids dangling else problems:
- if (x) SDL_assert(y); else blah();
- ... without the do/while, the "else" could attach to this macro's "if".
- We try to handle just the minimum we need here in a macro...the loop,
- the static vars, and break points. The heavy lifting is handled in
- SDL_ReportAssertion(), in SDL_assert.c.
-*/
-#define SDL_enabled_assert(condition) \
- do { \
- while ( !(condition) ) { \
- static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \
- const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \
- if (sdl_assert_state == SDL_ASSERTION_RETRY) { \
- continue; /* go again. */ \
- } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \
- SDL_TriggerBreakpoint(); \
- } \
- break; /* not retrying. */ \
- } \
- } while (SDL_NULL_WHILE_LOOP_CONDITION)
-
-/* Enable various levels of assertions. */
-#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */
-# define SDL_assert(condition) SDL_disabled_assert(condition)
-# define SDL_assert_release(condition) SDL_disabled_assert(condition)
-# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 1 /* release settings. */
-# define SDL_assert(condition) SDL_disabled_assert(condition)
-# define SDL_assert_release(condition) SDL_enabled_assert(condition)
-# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */
-# define SDL_assert(condition) SDL_enabled_assert(condition)
-# define SDL_assert_release(condition) SDL_enabled_assert(condition)
-# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)
-#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */
-# define SDL_assert(condition) SDL_enabled_assert(condition)
-# define SDL_assert_release(condition) SDL_enabled_assert(condition)
-# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)
-#else
-# error Unknown assertion level.
-#endif
-
-/* this assertion is never disabled at any level. */
-#define SDL_assert_always(condition) SDL_enabled_assert(condition)
-
-
-/**
- * A callback that fires when an SDL assertion fails.
- *
- * \param data a pointer to the SDL_AssertData structure corresponding to the
- * current assertion
- * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler()
- * \returns an SDL_AssertState value indicating how to handle the failure.
- */
-typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(
- const SDL_AssertData* data, void* userdata);
-
-/**
- * Set an application-defined assertion handler.
- *
- * This function allows an application to show its own assertion UI and/or
- * force the response to an assertion failure. If the application doesn't
- * provide this, SDL will try to do the right thing, popping up a
- * system-specific GUI dialog, and probably minimizing any fullscreen windows.
- *
- * This callback may fire from any thread, but it runs wrapped in a mutex, so
- * it will only fire from one thread at a time.
- *
- * This callback is NOT reset to SDL's internal handler upon SDL_Quit()!
- *
- * \param handler the SDL_AssertionHandler function to call when an assertion
- * fails or NULL for the default handler
- * \param userdata a pointer that is passed to `handler`
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAssertionHandler
- */
-extern DECLSPEC void SDLCALL SDL_SetAssertionHandler(
- SDL_AssertionHandler handler,
- void *userdata);
-
-/**
- * Get the default assertion handler.
- *
- * This returns the function pointer that is called by default when an
- * assertion is triggered. This is an internal function provided by SDL, that
- * is used for assertions when SDL_SetAssertionHandler() hasn't been used to
- * provide a different function.
- *
- * \returns the default SDL_AssertionHandler that is called when an assert
- * triggers.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_GetAssertionHandler
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);
-
-/**
- * Get the current assertion handler.
- *
- * This returns the function pointer that is called when an assertion is
- * triggered. This is either the value last passed to
- * SDL_SetAssertionHandler(), or if no application-specified function is set,
- * is equivalent to calling SDL_GetDefaultAssertionHandler().
- *
- * The parameter `puserdata` is a pointer to a void*, which will store the
- * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value
- * will always be NULL for the default handler. If you don't care about this
- * data, it is safe to pass a NULL pointer to this function to ignore it.
- *
- * \param puserdata pointer which is filled with the "userdata" pointer that
- * was passed to SDL_SetAssertionHandler()
- * \returns the SDL_AssertionHandler that is called when an assert triggers.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_SetAssertionHandler
- */
-extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);
-
-/**
- * Get a list of all assertion failures.
- *
- * This function gets all assertions triggered since the last call to
- * SDL_ResetAssertionReport(), or the start of the program.
- *
- * The proper way to examine this data looks something like this:
- *
- * ```c
- * const SDL_AssertData *item = SDL_GetAssertionReport();
- * while (item) {
- * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n",
- * item->condition, item->function, item->filename,
- * item->linenum, item->trigger_count,
- * item->always_ignore ? "yes" : "no");
- * item = item->next;
- * }
- * ```
- *
- * \returns a list of all failed assertions or NULL if the list is empty. This
- * memory should not be modified or freed by the application.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ResetAssertionReport
- */
-extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);
-
-/**
- * Clear the list of all assertion failures.
- *
- * This function will clear the list of all assertions triggered up to that
- * point. Immediately following this call, SDL_GetAssertionReport will return
- * no items. In addition, any previously-triggered assertions will be reset to
- * a trigger_count of zero, and their always_ignore state will be false.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAssertionReport
- */
-extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);
-
-
-/* these had wrong naming conventions until 2.0.4. Please update your app! */
-#define SDL_assert_state SDL_AssertState
-#define SDL_assert_data SDL_AssertData
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_assert_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_atomic.h b/libs/SDL2/include/SDL_atomic.h
deleted file mode 100644
index 1dd816a38..000000000
--- a/libs/SDL2/include/SDL_atomic.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_atomic.h
- *
- * Atomic operations.
- *
- * IMPORTANT:
- * If you are not an expert in concurrent lockless programming, you should
- * only be using the atomic lock and reference counting functions in this
- * file. In all other cases you should be protecting your data structures
- * with full mutexes.
- *
- * The list of "safe" functions to use are:
- * SDL_AtomicLock()
- * SDL_AtomicUnlock()
- * SDL_AtomicIncRef()
- * SDL_AtomicDecRef()
- *
- * Seriously, here be dragons!
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- *
- * You can find out a little more about lockless programming and the
- * subtle issues that can arise here:
- * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx
- *
- * There's also lots of good information here:
- * http://www.1024cores.net/home/lock-free-algorithms
- * http://preshing.com/
- *
- * These operations may or may not actually be implemented using
- * processor specific atomic operations. When possible they are
- * implemented as true processor specific atomic operations. When that
- * is not possible the are implemented using locks that *do* use the
- * available atomic operations.
- *
- * All of the atomic operations that modify memory are full memory barriers.
- */
-
-#ifndef SDL_atomic_h_
-#define SDL_atomic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_platform.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \name SDL AtomicLock
- *
- * The atomic locks are efficient spinlocks using CPU instructions,
- * but are vulnerable to starvation and can spin forever if a thread
- * holding a lock has been terminated. For this reason you should
- * minimize the code executed inside an atomic lock and never do
- * expensive things like API or system calls while holding them.
- *
- * The atomic locks are not safe to lock recursively.
- *
- * Porting Note:
- * The spin lock functions and type are required and can not be
- * emulated because they are used in the atomic emulation code.
- */
-/* @{ */
-
-typedef int SDL_SpinLock;
-
-/**
- * Try to lock a spin lock by setting it to a non-zero value.
- *
- * ***Please note that spinlocks are dangerous if you don't know what you're
- * doing. Please be careful using any sort of spinlock!***
- *
- * \param lock a pointer to a lock variable
- * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already
- * held.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AtomicLock
- * \sa SDL_AtomicUnlock
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);
-
-/**
- * Lock a spin lock by setting it to a non-zero value.
- *
- * ***Please note that spinlocks are dangerous if you don't know what you're
- * doing. Please be careful using any sort of spinlock!***
- *
- * \param lock a pointer to a lock variable
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AtomicTryLock
- * \sa SDL_AtomicUnlock
- */
-extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);
-
-/**
- * Unlock a spin lock by setting it to 0.
- *
- * Always returns immediately.
- *
- * ***Please note that spinlocks are dangerous if you don't know what you're
- * doing. Please be careful using any sort of spinlock!***
- *
- * \param lock a pointer to a lock variable
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AtomicLock
- * \sa SDL_AtomicTryLock
- */
-extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);
-
-/* @} *//* SDL AtomicLock */
-
-
-/**
- * The compiler barrier prevents the compiler from reordering
- * reads and writes to globally visible variables across the call.
- */
-#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
-void _ReadWriteBarrier(void);
-#pragma intrinsic(_ReadWriteBarrier)
-#define SDL_CompilerBarrier() _ReadWriteBarrier()
-#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */
-#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory")
-#elif defined(__WATCOMC__)
-extern __inline void SDL_CompilerBarrier(void);
-#pragma aux SDL_CompilerBarrier = "" parm [] modify exact [];
-#else
-#define SDL_CompilerBarrier() \
-{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }
-#endif
-
-/**
- * Memory barriers are designed to prevent reads and writes from being
- * reordered by the compiler and being seen out of order on multi-core CPUs.
- *
- * A typical pattern would be for thread A to write some data and a flag, and
- * for thread B to read the flag and get the data. In this case you would
- * insert a release barrier between writing the data and the flag,
- * guaranteeing that the data write completes no later than the flag is
- * written, and you would insert an acquire barrier between reading the flag
- * and reading the data, to ensure that all the reads associated with the flag
- * have completed.
- *
- * In this pattern you should always see a release barrier paired with an
- * acquire barrier and you should gate the data reads/writes with a single
- * flag variable.
- *
- * For more information on these semantics, take a look at the blog post:
- * http://preshing.com/20120913/acquire-and-release-semantics
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);
-extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);
-
-#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))
-#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory")
-#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory")
-#elif defined(__GNUC__) && defined(__aarch64__)
-#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__GNUC__) && defined(__arm__)
-#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */
-/* Information from:
- https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19
-
- The Linux kernel provides a helper function which provides the right code for a memory barrier,
- hard-coded at address 0xffff0fa0
-*/
-typedef void (*SDL_KernelMemoryBarrierFunc)();
-#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()
-#elif 0 /* defined(__QNXNTO__) */
-#include
-
-#define SDL_MemoryBarrierRelease() __cpu_membarrier()
-#define SDL_MemoryBarrierAcquire() __cpu_membarrier()
-#else
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
-#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
-#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
-#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
-#ifdef __thumb__
-/* The mcr instruction isn't available in thumb mode, use real functions */
-#define SDL_MEMORY_BARRIER_USES_FUNCTION
-#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction()
-#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction()
-#else
-#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory")
-#endif /* __thumb__ */
-#else
-#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory")
-#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory")
-#endif /* __LINUX__ || __ANDROID__ */
-#endif /* __GNUC__ && __arm__ */
-#else
-#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))
-/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */
-#include
-#define SDL_MemoryBarrierRelease() __machine_rel_barrier()
-#define SDL_MemoryBarrierAcquire() __machine_acq_barrier()
-#else
-/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */
-#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier()
-#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier()
-#endif
-#endif
-
-/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */
-#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))
- #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */
-#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__)
- #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory")
-#elif (defined(__powerpc__) || defined(__powerpc64__))
- #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27");
-#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
- #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */
-#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
- #define SDL_CPUPauseInstruction() __yield()
-#elif defined(__WATCOMC__) && defined(__386__)
- extern __inline void SDL_CPUPauseInstruction(void);
- #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause"
-#else
- #define SDL_CPUPauseInstruction()
-#endif
-
-
-/**
- * \brief A type representing an atomic integer value. It is a struct
- * so people don't accidentally use numeric operations on it.
- */
-typedef struct { int value; } SDL_atomic_t;
-
-/**
- * Set an atomic variable to a new value if it is currently an old value.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param oldval the old value
- * \param newval the new value
- * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AtomicCASPtr
- * \sa SDL_AtomicGet
- * \sa SDL_AtomicSet
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);
-
-/**
- * Set an atomic variable to a value.
- *
- * This function also acts as a full memory barrier.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param v the desired value
- * \returns the previous value of the atomic variable.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_AtomicGet
- */
-extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);
-
-/**
- * Get the value of an atomic variable.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to an SDL_atomic_t variable
- * \returns the current value of an atomic variable.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_AtomicSet
- */
-extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);
-
-/**
- * Add to an atomic variable.
- *
- * This function also acts as a full memory barrier.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to an SDL_atomic_t variable to be modified
- * \param v the desired value to add
- * \returns the previous value of the atomic variable.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_AtomicDecRef
- * \sa SDL_AtomicIncRef
- */
-extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
-
-/**
- * \brief Increment an atomic variable used as a reference count.
- */
-#ifndef SDL_AtomicIncRef
-#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1)
-#endif
-
-/**
- * \brief Decrement an atomic variable used as a reference count.
- *
- * \return SDL_TRUE if the variable reached zero after decrementing,
- * SDL_FALSE otherwise
- */
-#ifndef SDL_AtomicDecRef
-#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1)
-#endif
-
-/**
- * Set a pointer to a new value if it is currently an old value.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to a pointer
- * \param oldval the old pointer value
- * \param newval the new pointer value
- * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AtomicCAS
- * \sa SDL_AtomicGetPtr
- * \sa SDL_AtomicSetPtr
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);
-
-/**
- * Set a pointer to a value atomically.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to a pointer
- * \param v the desired pointer value
- * \returns the previous value of the pointer.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_AtomicCASPtr
- * \sa SDL_AtomicGetPtr
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);
-
-/**
- * Get the value of a pointer atomically.
- *
- * ***Note: If you don't know what this function is for, you shouldn't use
- * it!***
- *
- * \param a a pointer to a pointer
- * \returns the current value of a pointer.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_AtomicCASPtr
- * \sa SDL_AtomicSetPtr
- */
-extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-
-#include "close_code.h"
-
-#endif /* SDL_atomic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_audio.h b/libs/SDL2/include/SDL_audio.h
deleted file mode 100644
index ccd35982d..000000000
--- a/libs/SDL2/include/SDL_audio.h
+++ /dev/null
@@ -1,1500 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* !!! FIXME: several functions in here need Doxygen comments. */
-
-/**
- * \file SDL_audio.h
- *
- * Access to the raw audio mixing buffer for the SDL library.
- */
-
-#ifndef SDL_audio_h_
-#define SDL_audio_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_endian.h"
-#include "SDL_mutex.h"
-#include "SDL_thread.h"
-#include "SDL_rwops.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief Audio format flags.
- *
- * These are what the 16 bits in SDL_AudioFormat currently mean...
- * (Unspecified bits are always zero).
- *
- * \verbatim
- ++-----------------------sample is signed if set
- ||
- || ++-----------sample is bigendian if set
- || ||
- || || ++---sample is float if set
- || || ||
- || || || +---sample bit size---+
- || || || | |
- 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
- \endverbatim
- *
- * There are macros in SDL 2.0 and later to query these bits.
- */
-typedef Uint16 SDL_AudioFormat;
-
-/**
- * \name Audio flags
- */
-/* @{ */
-
-#define SDL_AUDIO_MASK_BITSIZE (0xFF)
-#define SDL_AUDIO_MASK_DATATYPE (1<<8)
-#define SDL_AUDIO_MASK_ENDIAN (1<<12)
-#define SDL_AUDIO_MASK_SIGNED (1<<15)
-#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE)
-#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE)
-#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN)
-#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED)
-#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x))
-#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x))
-#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x))
-
-/**
- * \name Audio format flags
- *
- * Defaults to LSB byte order.
- */
-/* @{ */
-#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */
-#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */
-#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */
-#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */
-#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */
-#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */
-#define AUDIO_U16 AUDIO_U16LSB
-#define AUDIO_S16 AUDIO_S16LSB
-/* @} */
-
-/**
- * \name int32 support
- */
-/* @{ */
-#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */
-#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */
-#define AUDIO_S32 AUDIO_S32LSB
-/* @} */
-
-/**
- * \name float32 support
- */
-/* @{ */
-#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */
-#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */
-#define AUDIO_F32 AUDIO_F32LSB
-/* @} */
-
-/**
- * \name Native audio byte ordering
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define AUDIO_U16SYS AUDIO_U16LSB
-#define AUDIO_S16SYS AUDIO_S16LSB
-#define AUDIO_S32SYS AUDIO_S32LSB
-#define AUDIO_F32SYS AUDIO_F32LSB
-#else
-#define AUDIO_U16SYS AUDIO_U16MSB
-#define AUDIO_S16SYS AUDIO_S16MSB
-#define AUDIO_S32SYS AUDIO_S32MSB
-#define AUDIO_F32SYS AUDIO_F32MSB
-#endif
-/* @} */
-
-/**
- * \name Allow change flags
- *
- * Which audio format changes are allowed when opening a device.
- */
-/* @{ */
-#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001
-#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002
-#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004
-#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008
-#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
-/* @} */
-
-/* @} *//* Audio flags */
-
-/**
- * This function is called when the audio device needs more data.
- *
- * \param userdata An application-specific parameter saved in
- * the SDL_AudioSpec structure
- * \param stream A pointer to the audio data buffer.
- * \param len The length of that buffer in bytes.
- *
- * Once the callback returns, the buffer will no longer be valid.
- * Stereo samples are stored in a LRLRLR ordering.
- *
- * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if
- * you like. Just open your audio device with a NULL callback.
- */
-typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
- int len);
-
-/**
- * The calculated values in this structure are calculated by SDL_OpenAudio().
- *
- * For multi-channel audio, the default SDL channel mapping is:
- * 2: FL FR (stereo)
- * 3: FL FR LFE (2.1 surround)
- * 4: FL FR BL BR (quad)
- * 5: FL FR LFE BL BR (4.1 surround)
- * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR)
- * 7: FL FR FC LFE BC SL SR (6.1 surround)
- * 8: FL FR FC LFE BL BR SL SR (7.1 surround)
- */
-typedef struct SDL_AudioSpec
-{
- int freq; /**< DSP frequency -- samples per second */
- SDL_AudioFormat format; /**< Audio data format */
- Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */
- Uint8 silence; /**< Audio buffer silence value (calculated) */
- Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */
- Uint16 padding; /**< Necessary for some compile environments */
- Uint32 size; /**< Audio buffer size in bytes (calculated) */
- SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */
- void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */
-} SDL_AudioSpec;
-
-
-struct SDL_AudioCVT;
-typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
- SDL_AudioFormat format);
-
-/**
- * \brief Upper limit of filters in SDL_AudioCVT
- *
- * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is
- * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,
- * one of which is the terminating NULL pointer.
- */
-#define SDL_AUDIOCVT_MAX_FILTERS 9
-
-/**
- * \struct SDL_AudioCVT
- * \brief A structure to hold a set of audio conversion filters and buffers.
- *
- * Note that various parts of the conversion pipeline can take advantage
- * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require
- * you to pass it aligned data, but can possibly run much faster if you
- * set both its (buf) field to a pointer that is aligned to 16 bytes, and its
- * (len) field to something that's a multiple of 16, if possible.
- */
-#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__)
-/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't
- pad it out to 88 bytes to guarantee ABI compatibility between compilers.
- This is not a concern on CHERI architectures, where pointers must be stored
- at aligned locations otherwise they will become invalid, and thus structs
- containing pointers cannot be packed without giving a warning or error.
- vvv
- The next time we rev the ABI, make sure to size the ints and add padding.
-*/
-#define SDL_AUDIOCVT_PACKED __attribute__((packed))
-#else
-#define SDL_AUDIOCVT_PACKED
-#endif
-/* */
-typedef struct SDL_AudioCVT
-{
- int needed; /**< Set to 1 if conversion possible */
- SDL_AudioFormat src_format; /**< Source audio format */
- SDL_AudioFormat dst_format; /**< Target audio format */
- double rate_incr; /**< Rate conversion increment */
- Uint8 *buf; /**< Buffer to hold entire audio data */
- int len; /**< Length of original audio buffer */
- int len_cvt; /**< Length of converted audio buffer */
- int len_mult; /**< buffer must be len*len_mult big */
- double len_ratio; /**< Given len, final size is len*len_ratio */
- SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */
- int filter_index; /**< Current audio conversion function */
-} SDL_AUDIOCVT_PACKED SDL_AudioCVT;
-
-
-/* Function prototypes */
-
-/**
- * \name Driver discovery functions
- *
- * These functions return the list of built in audio drivers, in the
- * order that they are normally initialized by default.
- */
-/* @{ */
-
-/**
- * Use this function to get the number of built-in audio drivers.
- *
- * This function returns a hardcoded number. This never returns a negative
- * value; if there are no drivers compiled into this build of SDL, this
- * function returns zero. The presence of a driver in this list does not mean
- * it will function, it just means SDL is capable of interacting with that
- * interface. For example, a build of SDL might have esound support, but if
- * there's no esound server available, SDL's esound driver would fail if used.
- *
- * By default, SDL tries all drivers, in its preferred order, until one is
- * found to be usable.
- *
- * \returns the number of built-in audio drivers.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAudioDriver
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);
-
-/**
- * Use this function to get the name of a built in audio driver.
- *
- * The list of audio drivers is given in the order that they are normally
- * initialized by default; the drivers that seem more reasonable to choose
- * first (as far as the SDL developers believe) are earlier in the list.
- *
- * The names of drivers are all simple, low-ASCII identifiers, like "alsa",
- * "coreaudio" or "xaudio2". These never have Unicode characters, and are not
- * meant to be proper names.
- *
- * \param index the index of the audio driver; the value ranges from 0 to
- * SDL_GetNumAudioDrivers() - 1
- * \returns the name of the audio driver at the requested index, or NULL if an
- * invalid index was specified.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetNumAudioDrivers
- */
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
-/* @} */
-
-/**
- * \name Initialization and cleanup
- *
- * \internal These functions are used internally, and should not be used unless
- * you have a specific need to specify the audio driver you want to
- * use. You should normally use SDL_Init() or SDL_InitSubSystem().
- */
-/* @{ */
-
-/**
- * Use this function to initialize a particular audio driver.
- *
- * This function is used internally, and should not be used unless you have a
- * specific need to designate the audio driver you want to use. You should
- * normally use SDL_Init() or SDL_InitSubSystem().
- *
- * \param driver_name the name of the desired audio driver
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AudioQuit
- */
-extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);
-
-/**
- * Use this function to shut down audio if you initialized it with
- * SDL_AudioInit().
- *
- * This function is used internally, and should not be used unless you have a
- * specific need to specify the audio driver you want to use. You should
- * normally use SDL_Quit() or SDL_QuitSubSystem().
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AudioInit
- */
-extern DECLSPEC void SDLCALL SDL_AudioQuit(void);
-/* @} */
-
-/**
- * Get the name of the current audio driver.
- *
- * The returned string points to internal static memory and thus never becomes
- * invalid, even if you quit the audio subsystem and initialize a new driver
- * (although such a case would return a different static string from another
- * call to this function, of course). As such, you should not modify or free
- * the returned string.
- *
- * \returns the name of the current audio driver or NULL if no driver has been
- * initialized.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AudioInit
- */
-extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
-
-/**
- * This function is a legacy means of opening the audio device.
- *
- * This function remains for compatibility with SDL 1.2, but also because it's
- * slightly easier to use than the new functions in SDL 2.0. The new, more
- * powerful, and preferred way to do this is SDL_OpenAudioDevice().
- *
- * This function is roughly equivalent to:
- *
- * ```c
- * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
- * ```
- *
- * With two notable exceptions:
- *
- * - If `obtained` is NULL, we use `desired` (and allow no changes), which
- * means desired will be modified to have the correct values for silence,
- * etc, and SDL will convert any differences between your app's specific
- * request and the hardware behind the scenes.
- * - The return value is always success or failure, and not a device ID, which
- * means you can only have one device open at a time with this function.
- *
- * \param desired an SDL_AudioSpec structure representing the desired output
- * format. Please refer to the SDL_OpenAudioDevice
- * documentation for details on how to prepare this structure.
- * \param obtained an SDL_AudioSpec structure filled in with the actual
- * parameters, or NULL.
- * \returns 0 if successful, placing the actual hardware parameters in the
- * structure pointed to by `obtained`.
- *
- * If `obtained` is NULL, the audio data passed to the callback
- * function will be guaranteed to be in the requested format, and
- * will be automatically converted to the actual hardware audio
- * format if necessary. If `obtained` is NULL, `desired` will have
- * fields modified.
- *
- * This function returns a negative error code on failure to open the
- * audio device or failure to set up the audio thread; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_CloseAudio
- * \sa SDL_LockAudio
- * \sa SDL_PauseAudio
- * \sa SDL_UnlockAudio
- */
-extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
- SDL_AudioSpec * obtained);
-
-/**
- * SDL Audio Device IDs.
- *
- * A successful call to SDL_OpenAudio() is always device id 1, and legacy
- * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
- * always returns devices >= 2 on success. The legacy calls are good both
- * for backwards compatibility and when you don't care about multiple,
- * specific, or capture devices.
- */
-typedef Uint32 SDL_AudioDeviceID;
-
-/**
- * Get the number of built-in audio devices.
- *
- * This function is only valid after successfully initializing the audio
- * subsystem.
- *
- * Note that audio capture support is not implemented as of SDL 2.0.4, so the
- * `iscapture` parameter is for future expansion and should always be zero for
- * now.
- *
- * This function will return -1 if an explicit list of devices can't be
- * determined. Returning -1 is not an error. For example, if SDL is set up to
- * talk to a remote audio server, it can't list every one available on the
- * Internet, but it will still allow a specific host to be specified in
- * SDL_OpenAudioDevice().
- *
- * In many common cases, when this function returns a value <= 0, it can still
- * successfully open the default device (NULL for first argument of
- * SDL_OpenAudioDevice()).
- *
- * This function may trigger a complete redetect of available hardware. It
- * should not be called for each iteration of a loop, but rather once at the
- * start of a loop:
- *
- * ```c
- * // Don't do this:
- * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++)
- *
- * // do this instead:
- * const int count = SDL_GetNumAudioDevices(0);
- * for (int i = 0; i < count; ++i) { do_something_here(); }
- * ```
- *
- * \param iscapture zero to request playback devices, non-zero to request
- * recording devices
- * \returns the number of available devices exposed by the current driver or
- * -1 if an explicit list of devices can't be determined. A return
- * value of -1 does not necessarily mean an error condition.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAudioDeviceName
- * \sa SDL_OpenAudioDevice
- */
-extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);
-
-/**
- * Get the human-readable name of a specific audio device.
- *
- * This function is only valid after successfully initializing the audio
- * subsystem. The values returned by this function reflect the latest call to
- * SDL_GetNumAudioDevices(); re-call that function to redetect available
- * hardware.
- *
- * The string returned by this function is UTF-8 encoded, read-only, and
- * managed internally. You are not to free it. If you need to keep the string
- * for any length of time, you should make your own copy of it, as it will be
- * invalid next time any of several other SDL functions are called.
- *
- * \param index the index of the audio device; valid values range from 0 to
- * SDL_GetNumAudioDevices() - 1
- * \param iscapture non-zero to query the list of recording devices, zero to
- * query the list of output devices.
- * \returns the name of the audio device at the requested index, or NULL on
- * error.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetNumAudioDevices
- * \sa SDL_GetDefaultAudioInfo
- */
-extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,
- int iscapture);
-
-/**
- * Get the preferred audio format of a specific audio device.
- *
- * This function is only valid after a successfully initializing the audio
- * subsystem. The values returned by this function reflect the latest call to
- * SDL_GetNumAudioDevices(); re-call that function to redetect available
- * hardware.
- *
- * `spec` will be filled with the sample rate, sample format, and channel
- * count.
- *
- * \param index the index of the audio device; valid values range from 0 to
- * SDL_GetNumAudioDevices() - 1
- * \param iscapture non-zero to query the list of recording devices, zero to
- * query the list of output devices.
- * \param spec The SDL_AudioSpec to be initialized by this function.
- * \returns 0 on success, nonzero on error
- *
- * \since This function is available since SDL 2.0.16.
- *
- * \sa SDL_GetNumAudioDevices
- * \sa SDL_GetDefaultAudioInfo
- */
-extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
- int iscapture,
- SDL_AudioSpec *spec);
-
-
-/**
- * Get the name and preferred format of the default audio device.
- *
- * Some (but not all!) platforms have an isolated mechanism to get information
- * about the "default" device. This can actually be a completely different
- * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can
- * even be a network address! (This is discussed in SDL_OpenAudioDevice().)
- *
- * As a result, this call is not guaranteed to be performant, as it can query
- * the sound server directly every time, unlike the other query functions. You
- * should call this function sparingly!
- *
- * `spec` will be filled with the sample rate, sample format, and channel
- * count, if a default device exists on the system. If `name` is provided,
- * will be filled with either a dynamically-allocated UTF-8 string or NULL.
- *
- * \param name A pointer to be filled with the name of the default device (can
- * be NULL). Please call SDL_free() when you are done with this
- * pointer!
- * \param spec The SDL_AudioSpec to be initialized by this function.
- * \param iscapture non-zero to query the default recording device, zero to
- * query the default output device.
- * \returns 0 on success, nonzero on error
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GetAudioDeviceName
- * \sa SDL_GetAudioDeviceSpec
- * \sa SDL_OpenAudioDevice
- */
-extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
- SDL_AudioSpec *spec,
- int iscapture);
-
-
-/**
- * Open a specific audio device.
- *
- * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such,
- * this function will never return a 1 so as not to conflict with the legacy
- * function.
- *
- * Please note that SDL 2.0 before 2.0.5 did not support recording; as such,
- * this function would fail if `iscapture` was not zero. Starting with SDL
- * 2.0.5, recording is implemented and this value can be non-zero.
- *
- * Passing in a `device` name of NULL requests the most reasonable default
- * (and is equivalent to what SDL_OpenAudio() does to choose a device). The
- * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
- * some drivers allow arbitrary and driver-specific strings, such as a
- * hostname/IP address for a remote audio server, or a filename in the
- * diskaudio driver.
- *
- * An opened audio device starts out paused, and should be enabled for playing
- * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio
- * callback function to be called. Since the audio driver may modify the
- * requested size of the audio buffer, you should allocate any local mixing
- * buffers after you open the audio device.
- *
- * The audio callback runs in a separate thread in most cases; you can prevent
- * race conditions between your callback and other threads without fully
- * pausing playback with SDL_LockAudioDevice(). For more information about the
- * callback, see SDL_AudioSpec.
- *
- * Managing the audio spec via 'desired' and 'obtained':
- *
- * When filling in the desired audio spec structure:
- *
- * - `desired->freq` should be the frequency in sample-frames-per-second (Hz).
- * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc).
- * - `desired->samples` is the desired size of the audio buffer, in _sample
- * frames_ (with stereo output, two samples--left and right--would make a
- * single sample frame). This number should be a power of two, and may be
- * adjusted by the audio driver to a value more suitable for the hardware.
- * Good values seem to range between 512 and 8096 inclusive, depending on
- * the application and CPU speed. Smaller values reduce latency, but can
- * lead to underflow if the application is doing heavy processing and cannot
- * fill the audio buffer in time. Note that the number of sample frames is
- * directly related to time by the following formula: `ms =
- * (sampleframes*1000)/freq`
- * - `desired->size` is the size in _bytes_ of the audio buffer, and is
- * calculated by SDL_OpenAudioDevice(). You don't initialize this.
- * - `desired->silence` is the value used to set the buffer to silence, and is
- * calculated by SDL_OpenAudioDevice(). You don't initialize this.
- * - `desired->callback` should be set to a function that will be called when
- * the audio device is ready for more data. It is passed a pointer to the
- * audio buffer, and the length in bytes of the audio buffer. This function
- * usually runs in a separate thread, and so you should protect data
- * structures that it accesses by calling SDL_LockAudioDevice() and
- * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL
- * pointer here, and call SDL_QueueAudio() with some frequency, to queue
- * more audio samples to be played (or for capture devices, call
- * SDL_DequeueAudio() with some frequency, to obtain audio samples).
- * - `desired->userdata` is passed as the first parameter to your callback
- * function. If you passed a NULL callback, this value is ignored.
- *
- * `allowed_changes` can have the following flags OR'd together:
- *
- * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE`
- * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE`
- * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE`
- * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE`
- * - `SDL_AUDIO_ALLOW_ANY_CHANGE`
- *
- * These flags specify how SDL should behave when a device cannot offer a
- * specific feature. If the application requests a feature that the hardware
- * doesn't offer, SDL will always try to get the closest equivalent.
- *
- * For example, if you ask for float32 audio format, but the sound card only
- * supports int16, SDL will set the hardware to int16. If you had set
- * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained`
- * structure. If that flag was *not* set, SDL will prepare to convert your
- * callback's float32 audio to int16 before feeding it to the hardware and
- * will keep the originally requested format in the `obtained` structure.
- *
- * The resulting audio specs, varying depending on hardware and on what
- * changes were allowed, will then be written back to `obtained`.
- *
- * If your application can only handle one specific data format, pass a zero
- * for `allowed_changes` and let SDL transparently handle any differences.
- *
- * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a
- * driver-specific name as appropriate. NULL requests the most
- * reasonable default device.
- * \param iscapture non-zero to specify a device should be opened for
- * recording, not playback
- * \param desired an SDL_AudioSpec structure representing the desired output
- * format; see SDL_OpenAudio() for more information
- * \param obtained an SDL_AudioSpec structure filled in with the actual output
- * format; see SDL_OpenAudio() for more information
- * \param allowed_changes 0, or one or more flags OR'd together
- * \returns a valid device ID that is > 0 on success or 0 on failure; call
- * SDL_GetError() for more information.
- *
- * For compatibility with SDL 1.2, this will never return 1, since
- * SDL reserves that ID for the legacy SDL_OpenAudio() function.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_CloseAudioDevice
- * \sa SDL_GetAudioDeviceName
- * \sa SDL_LockAudioDevice
- * \sa SDL_OpenAudio
- * \sa SDL_PauseAudioDevice
- * \sa SDL_UnlockAudioDevice
- */
-extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(
- const char *device,
- int iscapture,
- const SDL_AudioSpec *desired,
- SDL_AudioSpec *obtained,
- int allowed_changes);
-
-
-
-/**
- * \name Audio state
- *
- * Get the current audio state.
- */
-/* @{ */
-typedef enum
-{
- SDL_AUDIO_STOPPED = 0,
- SDL_AUDIO_PLAYING,
- SDL_AUDIO_PAUSED
-} SDL_AudioStatus;
-
-/**
- * This function is a legacy means of querying the audio device.
- *
- * New programs might want to use SDL_GetAudioDeviceStatus() instead. This
- * function is equivalent to calling...
- *
- * ```c
- * SDL_GetAudioDeviceStatus(1);
- * ```
- *
- * ...and is only useful if you used the legacy SDL_OpenAudio() function.
- *
- * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio().
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAudioDeviceStatus
- */
-extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
-
-/**
- * Use this function to get the current audio state of an audio device.
- *
- * \param dev the ID of an audio device previously opened with
- * SDL_OpenAudioDevice()
- * \returns the SDL_AudioStatus of the specified audio device.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PauseAudioDevice
- */
-extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
-/* @} *//* Audio State */
-
-/**
- * \name Pause audio functions
- *
- * These functions pause and unpause the audio callback processing.
- * They should be called with a parameter of 0 after opening the audio
- * device to start playing sound. This is so you can safely initialize
- * data for your callback function after opening the audio device.
- * Silence will be written to the audio device during the pause.
- */
-/* @{ */
-
-/**
- * This function is a legacy means of pausing the audio device.
- *
- * New programs might want to use SDL_PauseAudioDevice() instead. This
- * function is equivalent to calling...
- *
- * ```c
- * SDL_PauseAudioDevice(1, pause_on);
- * ```
- *
- * ...and is only useful if you used the legacy SDL_OpenAudio() function.
- *
- * \param pause_on non-zero to pause, 0 to unpause
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetAudioStatus
- * \sa SDL_PauseAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
-
-/**
- * Use this function to pause and unpause audio playback on a specified
- * device.
- *
- * This function pauses and unpauses the audio callback processing for a given
- * device. Newly-opened audio devices start in the paused state, so you must
- * call this function with **pause_on**=0 after opening the specified audio
- * device to start playing sound. This allows you to safely initialize data
- * for your callback function after opening the audio device. Silence will be
- * written to the audio device while paused, and the audio callback is
- * guaranteed to not be called. Pausing one device does not prevent other
- * unpaused devices from running their callbacks.
- *
- * Pausing state does not stack; even if you pause a device several times, a
- * single unpause will start the device playing again, and vice versa. This is
- * different from how SDL_LockAudioDevice() works.
- *
- * If you just need to protect a few variables from race conditions vs your
- * callback, you shouldn't pause the audio device, as it will lead to dropouts
- * in the audio playback. Instead, you should use SDL_LockAudioDevice().
- *
- * \param dev a device opened by SDL_OpenAudioDevice()
- * \param pause_on non-zero to pause, 0 to unpause
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LockAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
- int pause_on);
-/* @} *//* Pause audio functions */
-
-/**
- * Load the audio data of a WAVE file into memory.
- *
- * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to
- * be valid pointers. The entire data portion of the file is then loaded into
- * memory and decoded if necessary.
- *
- * If `freesrc` is non-zero, the data source gets automatically closed and
- * freed before the function returns.
- *
- * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and
- * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and
- * A-law and mu-law (8 bits). Other formats are currently unsupported and
- * cause an error.
- *
- * If this function succeeds, the pointer returned by it is equal to `spec`
- * and the pointer to the audio data allocated by the function is written to
- * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec
- * members `freq`, `channels`, and `format` are set to the values of the audio
- * data in the buffer. The `samples` member is set to a sane default and all
- * others are set to zero.
- *
- * It's necessary to use SDL_FreeWAV() to free the audio data returned in
- * `audio_buf` when it is no longer used.
- *
- * Because of the underspecification of the .WAV format, there are many
- * problematic files in the wild that cause issues with strict decoders. To
- * provide compatibility with these files, this decoder is lenient in regards
- * to the truncation of the file, the fact chunk, and the size of the RIFF
- * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`,
- * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to
- * tune the behavior of the loading process.
- *
- * Any file that is invalid (due to truncation, corruption, or wrong values in
- * the headers), too big, or unsupported causes an error. Additionally, any
- * critical I/O error from the data source will terminate the loading process
- * with an error. The function returns NULL on error and in all cases (with
- * the exception of `src` being NULL), an appropriate error message will be
- * set.
- *
- * It is required that the data source supports seeking.
- *
- * Example:
- *
- * ```c
- * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
- * ```
- *
- * Note that the SDL_LoadWAV macro does this same thing for you, but in a less
- * messy way:
- *
- * ```c
- * SDL_LoadWAV("sample.wav", &spec, &buf, &len);
- * ```
- *
- * \param src The data source for the WAVE data
- * \param freesrc If non-zero, SDL will _always_ free the data source
- * \param spec An SDL_AudioSpec that will be filled in with the wave file's
- * format details
- * \param audio_buf A pointer filled with the audio data, allocated by the
- * function.
- * \param audio_len A pointer filled with the length of the audio data buffer
- * in bytes
- * \returns This function, if successfully called, returns `spec`, which will
- * be filled with the audio data format of the wave source data.
- * `audio_buf` will be filled with a pointer to an allocated buffer
- * containing the audio data, and `audio_len` is filled with the
- * length of that audio buffer in bytes.
- *
- * This function returns NULL if the .WAV file cannot be opened, uses
- * an unknown data format, or is corrupt; call SDL_GetError() for
- * more information.
- *
- * When the application is done with the data returned in
- * `audio_buf`, it should call SDL_FreeWAV() to dispose of it.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_FreeWAV
- * \sa SDL_LoadWAV
- */
-extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,
- int freesrc,
- SDL_AudioSpec * spec,
- Uint8 ** audio_buf,
- Uint32 * audio_len);
-
-/**
- * Loads a WAV from a file.
- * Compatibility convenience function.
- */
-#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \
- SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
-
-/**
- * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW().
- *
- * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW()
- * its data can eventually be freed with SDL_FreeWAV(). It is safe to call
- * this function with a NULL pointer.
- *
- * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or
- * SDL_LoadWAV_RW()
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LoadWAV
- * \sa SDL_LoadWAV_RW
- */
-extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
-
-/**
- * Initialize an SDL_AudioCVT structure for conversion.
- *
- * Before an SDL_AudioCVT structure can be used to convert audio data it must
- * be initialized with source and destination information.
- *
- * This function will zero out every field of the SDL_AudioCVT, so it must be
- * called before the application fills in the final buffer information.
- *
- * Once this function has returned successfully, and reported that a
- * conversion is necessary, the application fills in the rest of the fields in
- * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate,
- * and then can call SDL_ConvertAudio() to complete the conversion.
- *
- * \param cvt an SDL_AudioCVT structure filled in with audio conversion
- * information
- * \param src_format the source format of the audio data; for more info see
- * SDL_AudioFormat
- * \param src_channels the number of channels in the source
- * \param src_rate the frequency (sample-frames-per-second) of the source
- * \param dst_format the destination format of the audio data; for more info
- * see SDL_AudioFormat
- * \param dst_channels the number of channels in the destination
- * \param dst_rate the frequency (sample-frames-per-second) of the destination
- * \returns 1 if the audio filter is prepared, 0 if no conversion is needed,
- * or a negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ConvertAudio
- */
-extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
- SDL_AudioFormat src_format,
- Uint8 src_channels,
- int src_rate,
- SDL_AudioFormat dst_format,
- Uint8 dst_channels,
- int dst_rate);
-
-/**
- * Convert audio data to a desired audio format.
- *
- * This function does the actual audio data conversion, after the application
- * has called SDL_BuildAudioCVT() to prepare the conversion information and
- * then filled in the buffer details.
- *
- * Once the application has initialized the `cvt` structure using
- * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio
- * data in the source format, this function will convert the buffer, in-place,
- * to the desired format.
- *
- * The data conversion may go through several passes; any given pass may
- * possibly temporarily increase the size of the data. For example, SDL might
- * expand 16-bit data to 32 bits before resampling to a lower frequency,
- * shrinking the data size after having grown it briefly. Since the supplied
- * buffer will be both the source and destination, converting as necessary
- * in-place, the application must allocate a buffer that will fully contain
- * the data during its largest conversion pass. After SDL_BuildAudioCVT()
- * returns, the application should set the `cvt->len` field to the size, in
- * bytes, of the source data, and allocate a buffer that is `cvt->len *
- * cvt->len_mult` bytes long for the `buf` field.
- *
- * The source data should be copied into this buffer before the call to
- * SDL_ConvertAudio(). Upon successful return, this buffer will contain the
- * converted audio, and `cvt->len_cvt` will be the size of the converted data,
- * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once
- * this function returns.
- *
- * \param cvt an SDL_AudioCVT structure that was previously set up by
- * SDL_BuildAudioCVT().
- * \returns 0 if the conversion was completed successfully or a negative error
- * code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_BuildAudioCVT
- */
-extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);
-
-/* SDL_AudioStream is a new audio conversion interface.
- The benefits vs SDL_AudioCVT:
- - it can handle resampling data in chunks without generating
- artifacts, when it doesn't have the complete buffer available.
- - it can handle incoming data in any variable size.
- - You push data as you have it, and pull it when you need it
- */
-/* this is opaque to the outside world. */
-struct _SDL_AudioStream;
-typedef struct _SDL_AudioStream SDL_AudioStream;
-
-/**
- * Create a new audio stream.
- *
- * \param src_format The format of the source audio
- * \param src_channels The number of channels of the source audio
- * \param src_rate The sampling rate of the source audio
- * \param dst_format The format of the desired audio output
- * \param dst_channels The number of channels of the desired audio output
- * \param dst_rate The sampling rate of the desired audio output
- * \returns 0 on success, or -1 on error.
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamFlush
- * \sa SDL_AudioStreamClear
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,
- const Uint8 src_channels,
- const int src_rate,
- const SDL_AudioFormat dst_format,
- const Uint8 dst_channels,
- const int dst_rate);
-
-/**
- * Add data to be converted/resampled to the stream.
- *
- * \param stream The stream the audio data is being added to
- * \param buf A pointer to the audio data to add
- * \param len The number of bytes to write to the stream
- * \returns 0 on success, or -1 on error.
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamFlush
- * \sa SDL_AudioStreamClear
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);
-
-/**
- * Get converted/resampled data from the stream
- *
- * \param stream The stream the audio is being requested from
- * \param buf A buffer to fill with audio data
- * \param len The maximum number of bytes to fill
- * \returns the number of bytes read from the stream, or -1 on error
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamFlush
- * \sa SDL_AudioStreamClear
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);
-
-/**
- * Get the number of converted/resampled bytes available.
- *
- * The stream may be buffering data behind the scenes until it has enough to
- * resample correctly, so this number might be lower than what you expect, or
- * even be zero. Add more data or flush the stream if you need the data now.
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamFlush
- * \sa SDL_AudioStreamClear
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
-
-/**
- * Tell the stream that you're done sending data, and anything being buffered
- * should be converted/resampled and made available immediately.
- *
- * It is legal to add more data to a stream after flushing, but there will be
- * audio gaps in the output. Generally this is intended to signal the end of
- * input, so the complete output becomes available.
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamClear
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);
-
-/**
- * Clear any pending data in the stream without converting it
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamFlush
- * \sa SDL_FreeAudioStream
- */
-extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);
-
-/**
- * Free an audio stream
- *
- * \since This function is available since SDL 2.0.7.
- *
- * \sa SDL_NewAudioStream
- * \sa SDL_AudioStreamPut
- * \sa SDL_AudioStreamGet
- * \sa SDL_AudioStreamAvailable
- * \sa SDL_AudioStreamFlush
- * \sa SDL_AudioStreamClear
- */
-extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);
-
-#define SDL_MIX_MAXVOLUME 128
-
-/**
- * This function is a legacy means of mixing audio.
- *
- * This function is equivalent to calling...
- *
- * ```c
- * SDL_MixAudioFormat(dst, src, format, len, volume);
- * ```
- *
- * ...where `format` is the obtained format of the audio device from the
- * legacy SDL_OpenAudio() function.
- *
- * \param dst the destination for the mixed audio
- * \param src the source audio buffer to be mixed
- * \param len the length of the audio buffer in bytes
- * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
- * for full audio volume
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_MixAudioFormat
- */
-extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
- Uint32 len, int volume);
-
-/**
- * Mix audio data in a specified format.
- *
- * This takes an audio buffer `src` of `len` bytes of `format` data and mixes
- * it into `dst`, performing addition, volume adjustment, and overflow
- * clipping. The buffer pointed to by `dst` must also be `len` bytes of
- * `format` data.
- *
- * This is provided for convenience -- you can mix your own audio data.
- *
- * Do not use this function for mixing together more than two streams of
- * sample data. The output from repeated application of this function may be
- * distorted by clipping, because there is no accumulator with greater range
- * than the input (not to mention this being an inefficient way of doing it).
- *
- * It is a common misconception that this function is required to write audio
- * data to an output stream in an audio callback. While you can do that,
- * SDL_MixAudioFormat() is really only needed when you're mixing a single
- * audio stream with a volume adjustment.
- *
- * \param dst the destination for the mixed audio
- * \param src the source audio buffer to be mixed
- * \param format the SDL_AudioFormat structure representing the desired audio
- * format
- * \param len the length of the audio buffer in bytes
- * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
- * for full audio volume
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
- const Uint8 * src,
- SDL_AudioFormat format,
- Uint32 len, int volume);
-
-/**
- * Queue more audio on non-callback devices.
- *
- * If you are looking to retrieve queued audio from a non-callback capture
- * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return
- * -1 to signify an error if you use it with capture devices.
- *
- * SDL offers two ways to feed audio to the device: you can either supply a
- * callback that SDL triggers with some frequency to obtain more audio (pull
- * method), or you can supply no callback, and then SDL will expect you to
- * supply data at regular intervals (push method) with this function.
- *
- * There are no limits on the amount of data you can queue, short of
- * exhaustion of address space. Queued data will drain to the device as
- * necessary without further intervention from you. If the device needs audio
- * but there is not enough queued, it will play silence to make up the
- * difference. This means you will have skips in your audio playback if you
- * aren't routinely queueing sufficient data.
- *
- * This function copies the supplied data, so you are safe to free it when the
- * function returns. This function is thread-safe, but queueing to the same
- * device from two threads at once does not promise which buffer will be
- * queued first.
- *
- * You may not queue audio on a device that is using an application-supplied
- * callback; doing so returns an error. You have to use the audio callback or
- * queue audio with this function, but not both.
- *
- * You should not call SDL_LockAudio() on the device before queueing; SDL
- * handles locking internally for this function.
- *
- * Note that SDL2 does not support planar audio. You will need to resample
- * from planar audio formats into a non-planar one (see SDL_AudioFormat)
- * before queuing audio.
- *
- * \param dev the device ID to which we will queue audio
- * \param data the data to queue to the device for later playback
- * \param len the number of bytes (not samples!) to which `data` points
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.4.
- *
- * \sa SDL_ClearQueuedAudio
- * \sa SDL_GetQueuedAudioSize
- */
-extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);
-
-/**
- * Dequeue more audio on non-callback devices.
- *
- * If you are looking to queue audio for output on a non-callback playback
- * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always
- * return 0 if you use it with playback devices.
- *
- * SDL offers two ways to retrieve audio from a capture device: you can either
- * supply a callback that SDL triggers with some frequency as the device
- * records more audio data, (push method), or you can supply no callback, and
- * then SDL will expect you to retrieve data at regular intervals (pull
- * method) with this function.
- *
- * There are no limits on the amount of data you can queue, short of
- * exhaustion of address space. Data from the device will keep queuing as
- * necessary without further intervention from you. This means you will
- * eventually run out of memory if you aren't routinely dequeueing data.
- *
- * Capture devices will not queue data when paused; if you are expecting to
- * not need captured audio for some length of time, use SDL_PauseAudioDevice()
- * to stop the capture device from queueing more data. This can be useful
- * during, say, level loading times. When unpaused, capture devices will start
- * queueing data from that point, having flushed any capturable data available
- * while paused.
- *
- * This function is thread-safe, but dequeueing from the same device from two
- * threads at once does not promise which thread will dequeue data first.
- *
- * You may not dequeue audio from a device that is using an
- * application-supplied callback; doing so returns an error. You have to use
- * the audio callback, or dequeue audio with this function, but not both.
- *
- * You should not call SDL_LockAudio() on the device before dequeueing; SDL
- * handles locking internally for this function.
- *
- * \param dev the device ID from which we will dequeue audio
- * \param data a pointer into where audio data should be copied
- * \param len the number of bytes (not samples!) to which (data) points
- * \returns the number of bytes dequeued, which could be less than requested;
- * call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.5.
- *
- * \sa SDL_ClearQueuedAudio
- * \sa SDL_GetQueuedAudioSize
- */
-extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
-
-/**
- * Get the number of bytes of still-queued audio.
- *
- * For playback devices: this is the number of bytes that have been queued for
- * playback with SDL_QueueAudio(), but have not yet been sent to the hardware.
- *
- * Once we've sent it to the hardware, this function can not decide the exact
- * byte boundary of what has been played. It's possible that we just gave the
- * hardware several kilobytes right before you called this function, but it
- * hasn't played any of it yet, or maybe half of it, etc.
- *
- * For capture devices, this is the number of bytes that have been captured by
- * the device and are waiting for you to dequeue. This number may grow at any
- * time, so this only informs of the lower-bound of available data.
- *
- * You may not queue or dequeue audio on a device that is using an
- * application-supplied callback; calling this function on such a device
- * always returns 0. You have to use the audio callback or queue audio, but
- * not both.
- *
- * You should not call SDL_LockAudio() on the device before querying; SDL
- * handles locking internally for this function.
- *
- * \param dev the device ID of which we will query queued audio size
- * \returns the number of bytes (not samples!) of queued audio.
- *
- * \since This function is available since SDL 2.0.4.
- *
- * \sa SDL_ClearQueuedAudio
- * \sa SDL_QueueAudio
- * \sa SDL_DequeueAudio
- */
-extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);
-
-/**
- * Drop any queued audio data waiting to be sent to the hardware.
- *
- * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For
- * output devices, the hardware will start playing silence if more audio isn't
- * queued. For capture devices, the hardware will start filling the empty
- * queue with new data if the capture device isn't paused.
- *
- * This will not prevent playback of queued audio that's already been sent to
- * the hardware, as we can not undo that, so expect there to be some fraction
- * of a second of audio that might still be heard. This can be useful if you
- * want to, say, drop any pending music or any unprocessed microphone input
- * during a level change in your game.
- *
- * You may not queue or dequeue audio on a device that is using an
- * application-supplied callback; calling this function on such a device
- * always returns 0. You have to use the audio callback or queue audio, but
- * not both.
- *
- * You should not call SDL_LockAudio() on the device before clearing the
- * queue; SDL handles locking internally for this function.
- *
- * This function always succeeds and thus returns void.
- *
- * \param dev the device ID of which to clear the audio queue
- *
- * \since This function is available since SDL 2.0.4.
- *
- * \sa SDL_GetQueuedAudioSize
- * \sa SDL_QueueAudio
- * \sa SDL_DequeueAudio
- */
-extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
-
-
-/**
- * \name Audio lock functions
- *
- * The lock manipulated by these functions protects the callback function.
- * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that
- * the callback function is not running. Do not call these from the callback
- * function or you will cause deadlock.
- */
-/* @{ */
-
-/**
- * This function is a legacy means of locking the audio device.
- *
- * New programs might want to use SDL_LockAudioDevice() instead. This function
- * is equivalent to calling...
- *
- * ```c
- * SDL_LockAudioDevice(1);
- * ```
- *
- * ...and is only useful if you used the legacy SDL_OpenAudio() function.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LockAudioDevice
- * \sa SDL_UnlockAudio
- * \sa SDL_UnlockAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_LockAudio(void);
-
-/**
- * Use this function to lock out the audio callback function for a specified
- * device.
- *
- * The lock manipulated by these functions protects the audio callback
- * function specified in SDL_OpenAudioDevice(). During a
- * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed
- * that the callback function for that device is not running, even if the
- * device is not paused. While a device is locked, any other unpaused,
- * unlocked devices may still run their callbacks.
- *
- * Calling this function from inside your audio callback is unnecessary. SDL
- * obtains this lock before calling your function, and releases it when the
- * function returns.
- *
- * You should not hold the lock longer than absolutely necessary. If you hold
- * it too long, you'll experience dropouts in your audio playback. Ideally,
- * your application locks the device, sets a few variables and unlocks again.
- * Do not do heavy work while holding the lock for a device.
- *
- * It is safe to lock the audio device multiple times, as long as you unlock
- * it an equivalent number of times. The callback will not run until the
- * device has been unlocked completely in this way. If your application fails
- * to unlock the device appropriately, your callback will never run, you might
- * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably
- * deadlock.
- *
- * Internally, the audio device lock is a mutex; if you lock from two threads
- * at once, not only will you block the audio callback, you'll block the other
- * thread.
- *
- * \param dev the ID of the device to be locked
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_UnlockAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
-
-/**
- * This function is a legacy means of unlocking the audio device.
- *
- * New programs might want to use SDL_UnlockAudioDevice() instead. This
- * function is equivalent to calling...
- *
- * ```c
- * SDL_UnlockAudioDevice(1);
- * ```
- *
- * ...and is only useful if you used the legacy SDL_OpenAudio() function.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LockAudio
- * \sa SDL_UnlockAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
-
-/**
- * Use this function to unlock the audio callback function for a specified
- * device.
- *
- * This function should be paired with a previous SDL_LockAudioDevice() call.
- *
- * \param dev the ID of the device to be unlocked
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LockAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
-/* @} *//* Audio lock functions */
-
-/**
- * This function is a legacy means of closing the audio device.
- *
- * This function is equivalent to calling...
- *
- * ```c
- * SDL_CloseAudioDevice(1);
- * ```
- *
- * ...and is only useful if you used the legacy SDL_OpenAudio() function.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_OpenAudio
- */
-extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
-
-/**
- * Use this function to shut down audio processing and close the audio device.
- *
- * The application should close open audio devices once they are no longer
- * needed. Calling this function will wait until the device's audio callback
- * is not running, release the audio hardware and then clean up internal
- * state. No further audio will play from this device once this function
- * returns.
- *
- * This function may block briefly while pending audio data is played by the
- * hardware, so that applications don't drop the last buffer of data they
- * supplied.
- *
- * The device ID is invalid as soon as the device is closed, and is eligible
- * for reuse in a new SDL_OpenAudioDevice() call immediately.
- *
- * \param dev an audio device previously opened with SDL_OpenAudioDevice()
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_OpenAudioDevice
- */
-extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_audio_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_bits.h b/libs/SDL2/include/SDL_bits.h
deleted file mode 100644
index 81161ae5f..000000000
--- a/libs/SDL2/include/SDL_bits.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_bits.h
- *
- * Functions for fiddling with bits and bitmasks.
- */
-
-#ifndef SDL_bits_h_
-#define SDL_bits_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file SDL_bits.h
- */
-
-/**
- * Get the index of the most significant bit. Result is undefined when called
- * with 0. This operation can also be stated as "count leading zeroes" and
- * "log base 2".
- *
- * \return the index of the most significant bit, or -1 if the value is 0.
- */
-#if defined(__WATCOMC__) && defined(__386__)
-extern __inline int _SDL_bsr_watcom(Uint32);
-#pragma aux _SDL_bsr_watcom = \
- "bsr eax, eax" \
- parm [eax] nomemory \
- value [eax] \
- modify exact [eax] nomemory;
-#endif
-
-SDL_FORCE_INLINE int
-SDL_MostSignificantBitIndex32(Uint32 x)
-{
-#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
- /* Count Leading Zeroes builtin in GCC.
- * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
- */
- if (x == 0) {
- return -1;
- }
- return 31 - __builtin_clz(x);
-#elif defined(__WATCOMC__) && defined(__386__)
- if (x == 0) {
- return -1;
- }
- return _SDL_bsr_watcom(x);
-#elif defined(_MSC_VER)
- unsigned long index;
- if (_BitScanReverse(&index, x)) {
- return index;
- }
- return -1;
-#else
- /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
- * , released in the public domain.
- * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
- */
- const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
- const int S[] = {1, 2, 4, 8, 16};
-
- int msbIndex = 0;
- int i;
-
- if (x == 0) {
- return -1;
- }
-
- for (i = 4; i >= 0; i--)
- {
- if (x & b[i])
- {
- x >>= S[i];
- msbIndex |= S[i];
- }
- }
-
- return msbIndex;
-#endif
-}
-
-SDL_FORCE_INLINE SDL_bool
-SDL_HasExactlyOneBitSet32(Uint32 x)
-{
- if (x && !(x & (x - 1))) {
- return SDL_TRUE;
- }
- return SDL_FALSE;
-}
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_bits_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_blendmode.h b/libs/SDL2/include/SDL_blendmode.h
deleted file mode 100644
index 4ecbe5078..000000000
--- a/libs/SDL2/include/SDL_blendmode.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_blendmode.h
- *
- * Header file declaring the SDL_BlendMode enumeration
- */
-
-#ifndef SDL_blendmode_h_
-#define SDL_blendmode_h_
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief The blend mode used in SDL_RenderCopy() and drawing operations.
- */
-typedef enum
-{
- SDL_BLENDMODE_NONE = 0x00000000, /**< no blending
- dstRGBA = srcRGBA */
- SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending
- dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
- dstA = srcA + (dstA * (1-srcA)) */
- SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending
- dstRGB = (srcRGB * srcA) + dstRGB
- dstA = dstA */
- SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate
- dstRGB = srcRGB * dstRGB
- dstA = dstA */
- SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply
- dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA))
- dstA = dstA */
- SDL_BLENDMODE_INVALID = 0x7FFFFFFF
-
- /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */
-
-} SDL_BlendMode;
-
-/**
- * \brief The blend operation used when combining source and destination pixel components
- */
-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_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
- SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
-} SDL_BlendOperation;
-
-/**
- * \brief The normalized factor used to multiply pixel components
- */
-typedef enum
-{
- SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */
- SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */
- SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */
- SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */
- SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */
- SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */
- SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */
- SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */
- SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */
- SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */
-} SDL_BlendFactor;
-
-/**
- * Compose a custom blend mode for renderers.
- *
- * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept
- * the SDL_BlendMode returned by this function if the renderer supports it.
- *
- * A blend mode controls how the pixels from a drawing operation (source) get
- * combined with the pixels from the render target (destination). First, the
- * components of the source and destination pixels get multiplied with their
- * blend factors. Then, the blend operation takes the two products and
- * calculates the result that will get stored in the render target.
- *
- * Expressed in pseudocode, it would look like this:
- *
- * ```c
- * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);
- * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
- * ```
- *
- * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,
- * dst)` can return one of the following:
- *
- * - `src + dst`
- * - `src - dst`
- * - `dst - src`
- * - `min(src, dst)`
- * - `max(src, dst)`
- *
- * The red, green, and blue components are always multiplied with the first,
- * second, and third components of the SDL_BlendFactor, respectively. The
- * fourth component is not used.
- *
- * The alpha component is always multiplied with the fourth component of the
- * SDL_BlendFactor. The other components are not used in the alpha
- * calculation.
- *
- * Support for these blend modes varies for each renderer. To check if a
- * specific SDL_BlendMode is supported, create a renderer and pass it to
- * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will
- * return with an error if the blend mode is not supported.
- *
- * This list describes the support of custom blend modes for each renderer in
- * SDL 2.0.6. All renderers support the four blend modes listed in the
- * SDL_BlendMode enumeration.
- *
- * - **direct3d**: Supports all operations with all factors. However, some
- * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and
- * `SDL_BLENDOPERATION_MAXIMUM`.
- * - **direct3d11**: Same as Direct3D 9.
- * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
- * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL
- * 2.0.6.
- * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
- * factors. Color and alpha factors need to be the same. OpenGL ES 1
- * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT`
- * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha
- * operations being different from each other. May support color and alpha
- * factors being different from each other.
- * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,
- * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`
- * operations with all factors.
- * - **psp**: No custom blend mode support.
- * - **software**: No custom blend mode support.
- *
- * Some renderers do not provide an alpha component for the default render
- * target. The `SDL_BLENDFACTOR_DST_ALPHA` and
- * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this
- * case.
- *
- * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and
- * blue components of the source pixels
- * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and
- * blue components of the destination pixels
- * \param colorOperation the SDL_BlendOperation used to combine the red,
- * green, and blue components of the source and
- * destination pixels
- * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of
- * the source pixels
- * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of
- * the destination pixels
- * \param alphaOperation the SDL_BlendOperation used to combine the alpha
- * component of the source and destination pixels
- * \returns an SDL_BlendMode that represents the chosen factors and
- * operations.
- *
- * \since This function is available since SDL 2.0.6.
- *
- * \sa SDL_SetRenderDrawBlendMode
- * \sa SDL_GetRenderDrawBlendMode
- * \sa SDL_SetTextureBlendMode
- * \sa SDL_GetTextureBlendMode
- */
-extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,
- SDL_BlendFactor dstColorFactor,
- SDL_BlendOperation colorOperation,
- SDL_BlendFactor srcAlphaFactor,
- SDL_BlendFactor dstAlphaFactor,
- SDL_BlendOperation alphaOperation);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_blendmode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_clipboard.h b/libs/SDL2/include/SDL_clipboard.h
deleted file mode 100644
index 7c351fbb9..000000000
--- a/libs/SDL2/include/SDL_clipboard.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_clipboard.h
- *
- * Include file for SDL clipboard handling
- */
-
-#ifndef SDL_clipboard_h_
-#define SDL_clipboard_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function prototypes */
-
-/**
- * Put UTF-8 text into the clipboard.
- *
- * \param text the text to store in the clipboard
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetClipboardText
- * \sa SDL_HasClipboardText
- */
-extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);
-
-/**
- * Get UTF-8 text from the clipboard, which must be freed with SDL_free().
- *
- * This functions returns empty string if there was not enough memory left for
- * a copy of the clipboard's content.
- *
- * \returns the clipboard text on success or an empty string on failure; call
- * SDL_GetError() for more information. Caller must call SDL_free()
- * on the returned pointer when done with it (even if there was an
- * error).
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HasClipboardText
- * \sa SDL_SetClipboardText
- */
-extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
-
-/**
- * Query whether the clipboard exists and contains a non-empty text string.
- *
- * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetClipboardText
- * \sa SDL_SetClipboardText
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);
-
-/**
- * Put UTF-8 text into the primary selection.
- *
- * \param text the text to store in the primary selection
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.26.0.
- *
- * \sa SDL_GetPrimarySelectionText
- * \sa SDL_HasPrimarySelectionText
- */
-extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text);
-
-/**
- * Get UTF-8 text from the primary selection, which must be freed with
- * SDL_free().
- *
- * This functions returns empty string if there was not enough memory left for
- * a copy of the primary selection's content.
- *
- * \returns the primary selection text on success or an empty string on
- * failure; call SDL_GetError() for more information. Caller must
- * call SDL_free() on the returned pointer when done with it (even if
- * there was an error).
- *
- * \since This function is available since SDL 2.26.0.
- *
- * \sa SDL_HasPrimarySelectionText
- * \sa SDL_SetPrimarySelectionText
- */
-extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void);
-
-/**
- * Query whether the primary selection exists and contains a non-empty text
- * string.
- *
- * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it
- * does not.
- *
- * \since This function is available since SDL 2.26.0.
- *
- * \sa SDL_GetPrimarySelectionText
- * \sa SDL_SetPrimarySelectionText
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_clipboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_cpuinfo.h b/libs/SDL2/include/SDL_cpuinfo.h
deleted file mode 100644
index ed5e97915..000000000
--- a/libs/SDL2/include/SDL_cpuinfo.h
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_cpuinfo.h
- *
- * CPU feature detection for SDL.
- */
-
-#ifndef SDL_cpuinfo_h_
-#define SDL_cpuinfo_h_
-
-#include "SDL_stdinc.h"
-
-/* Need to do this here because intrin.h has C++ code in it */
-/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))
-#ifdef __clang__
-/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,
- so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */
-
-#ifndef __PRFCHWINTRIN_H
-#define __PRFCHWINTRIN_H
-
-static __inline__ void __attribute__((__always_inline__, __nodebug__))
-_m_prefetch(void *__P)
-{
- __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);
-}
-
-#endif /* __PRFCHWINTRIN_H */
-#endif /* __clang__ */
-#include
-#ifndef _WIN64
-#ifndef __MMX__
-#define __MMX__
-#endif
-#ifndef __3dNOW__
-#define __3dNOW__
-#endif
-#endif
-#ifndef __SSE__
-#define __SSE__
-#endif
-#ifndef __SSE2__
-#define __SSE2__
-#endif
-#ifndef __SSE3__
-#define __SSE3__
-#endif
-#elif defined(__MINGW64_VERSION_MAJOR)
-#include
-#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON)
-# include
-#endif
-#else
-/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */
-#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)
-#include
-#endif
-#if !defined(SDL_DISABLE_ARM_NEON_H)
-# if defined(__ARM_NEON)
-# include
-# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__)
-/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
-# if defined(_M_ARM)
-# include
-# include
-# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-# endif
-# if defined (_M_ARM64)
-# include
-# include
-# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */
-# define __ARM_ARCH 8
-# endif
-# endif
-#endif
-#endif /* compiler version */
-
-#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)
-#include
-#endif
-#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H)
-#include
-#define __LSX__
-#endif
-#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H)
-#include
-#define __LASX__
-#endif
-#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)
-#include
-#else
-#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)
-#include
-#endif
-#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)
-#include
-#endif
-#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)
-#include
-#endif
-#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)
-#include
-#endif
-#endif /* HAVE_IMMINTRIN_H */
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is a guess for the cacheline size used for padding.
- * Most x86 processors have a 64 byte cache line.
- * The 64-bit PowerPC processors have a 128 byte cache line.
- * We'll use the larger value to be generally safe.
- */
-#define SDL_CACHELINE_SIZE 128
-
-/**
- * Get the number of CPU cores available.
- *
- * \returns the total number of logical CPU cores. On CPUs that include
- * technologies such as hyperthreading, the number of logical cores
- * may be more than the number of physical cores.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCount(void);
-
-/**
- * Determine the L1 cache line size of the CPU.
- *
- * This is useful for determining multi-threaded structure padding or SIMD
- * prefetch sizes.
- *
- * \returns the L1 cache line size of the CPU, in bytes.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);
-
-/**
- * Determine whether the CPU has the RDTSC instruction.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
-
-/**
- * Determine whether the CPU has AltiVec features.
- *
- * This always returns false on CPUs that aren't using PowerPC instruction
- * sets.
- *
- * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);
-
-/**
- * Determine whether the CPU has MMX features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);
-
-/**
- * Determine whether the CPU has 3DNow! features.
- *
- * This always returns false on CPUs that aren't using AMD instruction sets.
- *
- * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);
-
-/**
- * Determine whether the CPU has SSE features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);
-
-/**
- * Determine whether the CPU has SSE2 features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);
-
-/**
- * Determine whether the CPU has SSE3 features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);
-
-/**
- * Determine whether the CPU has SSE4.1 features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);
-
-/**
- * Determine whether the CPU has SSE4.2 features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);
-
-/**
- * Determine whether the CPU has AVX features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX2
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);
-
-/**
- * Determine whether the CPU has AVX2 features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.4.
- *
- * \sa SDL_Has3DNow
- * \sa SDL_HasAltiVec
- * \sa SDL_HasAVX
- * \sa SDL_HasMMX
- * \sa SDL_HasRDTSC
- * \sa SDL_HasSSE
- * \sa SDL_HasSSE2
- * \sa SDL_HasSSE3
- * \sa SDL_HasSSE41
- * \sa SDL_HasSSE42
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);
-
-/**
- * Determine whether the CPU has AVX-512F (foundation) features.
- *
- * This always returns false on CPUs that aren't using Intel instruction sets.
- *
- * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.9.
- *
- * \sa SDL_HasAVX
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);
-
-/**
- * Determine whether the CPU has ARM SIMD (ARMv6) features.
- *
- * This is different from ARM NEON, which is a different instruction set.
- *
- * This always returns false on CPUs that aren't using ARM instruction sets.
- *
- * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.12.
- *
- * \sa SDL_HasNEON
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void);
-
-/**
- * Determine whether the CPU has NEON (ARM SIMD) features.
- *
- * This always returns false on CPUs that aren't using ARM instruction sets.
- *
- * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);
-
-/**
- * Determine whether the CPU has LSX (LOONGARCH SIMD) features.
- *
- * This always returns false on CPUs that aren't using LOONGARCH instruction
- * sets.
- *
- * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if
- * not.
- *
- * \since This function is available since SDL 2.24.0.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void);
-
-/**
- * Determine whether the CPU has LASX (LOONGARCH SIMD) features.
- *
- * This always returns false on CPUs that aren't using LOONGARCH instruction
- * sets.
- *
- * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if
- * not.
- *
- * \since This function is available since SDL 2.24.0.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void);
-
-/**
- * Get the amount of RAM configured in the system.
- *
- * \returns the amount of RAM configured in the system in MiB.
- *
- * \since This function is available since SDL 2.0.1.
- */
-extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
-
-/**
- * Report the alignment this system needs for SIMD allocations.
- *
- * This will return the minimum number of bytes to which a pointer must be
- * aligned to be compatible with SIMD instructions on the current machine. For
- * example, if the machine supports SSE only, it will return 16, but if it
- * supports AVX-512F, it'll return 64 (etc). This only reports values for
- * instruction sets SDL knows about, so if your SDL build doesn't have
- * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and
- * not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
- * Plan accordingly.
- *
- * \returns the alignment in bytes needed for available, known SIMD
- * instructions.
- *
- * \since This function is available since SDL 2.0.10.
- */
-extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
-
-/**
- * Allocate memory in a SIMD-friendly way.
- *
- * This will allocate a block of memory that is suitable for use with SIMD
- * instructions. Specifically, it will be properly aligned and padded for the
- * system's supported vector instructions.
- *
- * The memory returned will be padded such that it is safe to read or write an
- * incomplete vector at the end of the memory block. This can be useful so you
- * don't have to drop back to a scalar fallback at the end of your SIMD
- * processing loop to deal with the final elements without overflowing the
- * allocated buffer.
- *
- * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or
- * delete[], etc.
- *
- * Note that SDL will only deal with SIMD instruction sets it is aware of; for
- * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and
- * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants
- * 64. To be clear: if you can't decide to use an instruction set with an
- * SDL_Has*() function, don't use that instruction set with memory allocated
- * through here.
- *
- * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't
- * out of memory, but you are not allowed to dereference it (because you only
- * own zero bytes of that buffer).
- *
- * \param len The length, in bytes, of the block to allocate. The actual
- * allocated block might be larger due to padding, etc.
- * \returns a pointer to the newly-allocated block, NULL if out of memory.
- *
- * \since This function is available since SDL 2.0.10.
- *
- * \sa SDL_SIMDGetAlignment
- * \sa SDL_SIMDRealloc
- * \sa SDL_SIMDFree
- */
-extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
-
-/**
- * Reallocate memory obtained from SDL_SIMDAlloc
- *
- * It is not valid to use this function on a pointer from anything but
- * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,
- * SDL_malloc, memalign, new[], etc.
- *
- * \param mem The pointer obtained from SDL_SIMDAlloc. This function also
- * accepts NULL, at which point this function is the same as
- * calling SDL_SIMDAlloc with a NULL pointer.
- * \param len The length, in bytes, of the block to allocated. The actual
- * allocated block might be larger due to padding, etc. Passing 0
- * will return a non-NULL pointer, assuming the system isn't out of
- * memory.
- * \returns a pointer to the newly-reallocated block, NULL if out of memory.
- *
- * \since This function is available since SDL 2.0.14.
- *
- * \sa SDL_SIMDGetAlignment
- * \sa SDL_SIMDAlloc
- * \sa SDL_SIMDFree
- */
-extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);
-
-/**
- * Deallocate memory obtained from SDL_SIMDAlloc
- *
- * It is not valid to use this function on a pointer from anything but
- * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from
- * malloc, realloc, SDL_malloc, memalign, new[], etc.
- *
- * However, SDL_SIMDFree(NULL) is a legal no-op.
- *
- * The memory pointed to by `ptr` is no longer valid for access upon return,
- * and may be returned to the system or reused by a future allocation. The
- * pointer passed to this function is no longer safe to dereference once this
- * function returns, and should be discarded.
- *
- * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to
- * deallocate. NULL is a legal no-op.
- *
- * \since This function is available since SDL 2.0.10.
- *
- * \sa SDL_SIMDAlloc
- * \sa SDL_SIMDRealloc
- */
-extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_cpuinfo_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_egl.h b/libs/SDL2/include/SDL_egl.h
deleted file mode 100644
index 6f51c0831..000000000
--- a/libs/SDL2/include/SDL_egl.h
+++ /dev/null
@@ -1,2352 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_egl.h
- *
- * This is a simple file to encapsulate the EGL API headers.
- */
-#if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)
-
-#if defined(__vita__) || defined(__psp2__)
-#include
-#endif
-
-#include
-#include
-
-#else /* _MSC_VER */
-
-/* EGL headers for Visual Studio */
-
-#ifndef __khrplatform_h_
-#define __khrplatform_h_
-
-/*
-** Copyright (c) 2008-2018 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Khronos platform-specific types and definitions.
- *
- * The master copy of khrplatform.h is maintained in the Khronos EGL
- * Registry repository at https://github.com/KhronosGroup/EGL-Registry
- * The last semantic modification to khrplatform.h was at commit ID:
- * 67a3e0864c2d75ea5287b9f3d2eb74a745936692
- *
- * Adopters may modify this file to suit their platform. Adopters are
- * encouraged to submit platform specific modifications to the Khronos
- * group so that they can be included in future versions of this file.
- * Please submit changes by filing pull requests or issues on
- * the EGL Registry repository linked above.
- *
- *
- * See the Implementer's Guidelines for information about where this file
- * should be located on your system and for more details of its use:
- * http://www.khronos.org/registry/implementers_guide.pdf
- *
- * This file should be included as
- * #include
- * by Khronos client API header files that use its types and defines.
- *
- * The types in khrplatform.h should only be used to define API-specific types.
- *
- * Types defined in khrplatform.h:
- * khronos_int8_t signed 8 bit
- * khronos_uint8_t unsigned 8 bit
- * khronos_int16_t signed 16 bit
- * khronos_uint16_t unsigned 16 bit
- * khronos_int32_t signed 32 bit
- * khronos_uint32_t unsigned 32 bit
- * khronos_int64_t signed 64 bit
- * khronos_uint64_t unsigned 64 bit
- * khronos_intptr_t signed same number of bits as a pointer
- * khronos_uintptr_t unsigned same number of bits as a pointer
- * khronos_ssize_t signed size
- * khronos_usize_t unsigned size
- * khronos_float_t signed 32 bit floating point
- * khronos_time_ns_t unsigned 64 bit time in nanoseconds
- * khronos_utime_nanoseconds_t unsigned time interval or absolute time in
- * nanoseconds
- * khronos_stime_nanoseconds_t signed time interval in nanoseconds
- * khronos_boolean_enum_t enumerated boolean type. This should
- * only be used as a base type when a client API's boolean type is
- * an enum. Client APIs which use an integer or other type for
- * booleans cannot use this as the base type for their boolean.
- *
- * Tokens defined in khrplatform.h:
- *
- * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
- *
- * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
- * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
- *
- * Calling convention macros defined in this file:
- * KHRONOS_APICALL
- * KHRONOS_APIENTRY
- * KHRONOS_APIATTRIBUTES
- *
- * These may be used in function prototypes as:
- *
- * KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
- * int arg1,
- * int arg2) KHRONOS_APIATTRIBUTES;
- */
-
-#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
-# define KHRONOS_STATIC 1
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APICALL
- *-------------------------------------------------------------------------
- * This precedes the return type of the function in the function prototype.
- */
-#if defined(KHRONOS_STATIC)
- /* If the preprocessor constant KHRONOS_STATIC is defined, make the
- * header compatible with static linking. */
-# define KHRONOS_APICALL
-#elif defined(_WIN32)
-# define KHRONOS_APICALL __declspec(dllimport)
-#elif defined (__SYMBIAN32__)
-# define KHRONOS_APICALL IMPORT_C
-#elif defined(__ANDROID__)
-# define KHRONOS_APICALL __attribute__((visibility("default")))
-#else
-# define KHRONOS_APICALL
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIENTRY
- *-------------------------------------------------------------------------
- * This follows the return type of the function and precedes the function
- * name in the function prototype.
- */
-#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
- /* Win32 but not WinCE */
-# define KHRONOS_APIENTRY __stdcall
-#else
-# define KHRONOS_APIENTRY
-#endif
-
-/*-------------------------------------------------------------------------
- * Definition of KHRONOS_APIATTRIBUTES
- *-------------------------------------------------------------------------
- * This follows the closing parenthesis of the function prototype arguments.
- */
-#if defined (__ARMCC_2__)
-#define KHRONOS_APIATTRIBUTES __softfp
-#else
-#define KHRONOS_APIATTRIBUTES
-#endif
-
-/*-------------------------------------------------------------------------
- * basic type definitions
- *-----------------------------------------------------------------------*/
-#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
-
-
-/*
- * Using
- */
-#include
-typedef int32_t khronos_int32_t;
-typedef uint32_t khronos_uint32_t;
-typedef int64_t khronos_int64_t;
-typedef uint64_t khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64 1
-#define KHRONOS_SUPPORT_FLOAT 1
-/*
- * To support platform where unsigned long cannot be used interchangeably with
- * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
- * Ideally, we could just use (u)intptr_t everywhere, but this could result in
- * ABI breakage if khronos_uintptr_t is changed from unsigned long to
- * unsigned long long or similar (this results in different C++ name mangling).
- * To avoid changes for existing platforms, we restrict usage of intptr_t to
- * platforms where the size of a pointer is larger than the size of long.
- */
-#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
-#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
-#define KHRONOS_USE_INTPTR_T
-#endif
-#endif
-
-#elif defined(__VMS ) || defined(__sgi)
-
-/*
- * Using
- */
-#include
-typedef int32_t khronos_int32_t;
-typedef uint32_t khronos_uint32_t;
-typedef int64_t khronos_int64_t;
-typedef uint64_t khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64 1
-#define KHRONOS_SUPPORT_FLOAT 1
-
-#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
-
-/*
- * Win32
- */
-typedef __int32 khronos_int32_t;
-typedef unsigned __int32 khronos_uint32_t;
-typedef __int64 khronos_int64_t;
-typedef unsigned __int64 khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64 1
-#define KHRONOS_SUPPORT_FLOAT 1
-
-#elif defined(__sun__) || defined(__digital__)
-
-/*
- * Sun or Digital
- */
-typedef int khronos_int32_t;
-typedef unsigned int khronos_uint32_t;
-#if defined(__arch64__) || defined(_LP64)
-typedef long int khronos_int64_t;
-typedef unsigned long int khronos_uint64_t;
-#else
-typedef long long int khronos_int64_t;
-typedef unsigned long long int khronos_uint64_t;
-#endif /* __arch64__ */
-#define KHRONOS_SUPPORT_INT64 1
-#define KHRONOS_SUPPORT_FLOAT 1
-
-#elif 0
-
-/*
- * Hypothetical platform with no float or int64 support
- */
-typedef int khronos_int32_t;
-typedef unsigned int khronos_uint32_t;
-#define KHRONOS_SUPPORT_INT64 0
-#define KHRONOS_SUPPORT_FLOAT 0
-
-#else
-
-/*
- * Generic fallback
- */
-#include
-typedef int32_t khronos_int32_t;
-typedef uint32_t khronos_uint32_t;
-typedef int64_t khronos_int64_t;
-typedef uint64_t khronos_uint64_t;
-#define KHRONOS_SUPPORT_INT64 1
-#define KHRONOS_SUPPORT_FLOAT 1
-
-#endif
-
-
-/*
- * Types that are (so far) the same on all platforms
- */
-typedef signed char khronos_int8_t;
-typedef unsigned char khronos_uint8_t;
-typedef signed short int khronos_int16_t;
-typedef unsigned short int khronos_uint16_t;
-
-/*
- * Types that differ between LLP64 and LP64 architectures - in LLP64,
- * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
- * to be the only LLP64 architecture in current use.
- */
-#ifdef KHRONOS_USE_INTPTR_T
-typedef intptr_t khronos_intptr_t;
-typedef uintptr_t khronos_uintptr_t;
-#elif defined(_WIN64)
-typedef signed long long int khronos_intptr_t;
-typedef unsigned long long int khronos_uintptr_t;
-#else
-typedef signed long int khronos_intptr_t;
-typedef unsigned long int khronos_uintptr_t;
-#endif
-
-#if defined(_WIN64)
-typedef signed long long int khronos_ssize_t;
-typedef unsigned long long int khronos_usize_t;
-#else
-typedef signed long int khronos_ssize_t;
-typedef unsigned long int khronos_usize_t;
-#endif
-
-#if KHRONOS_SUPPORT_FLOAT
-/*
- * Float type
- */
-typedef float khronos_float_t;
-#endif
-
-#if KHRONOS_SUPPORT_INT64
-/* Time types
- *
- * These types can be used to represent a time interval in nanoseconds or
- * an absolute Unadjusted System Time. Unadjusted System Time is the number
- * of nanoseconds since some arbitrary system event (e.g. since the last
- * time the system booted). The Unadjusted System Time is an unsigned
- * 64 bit value that wraps back to 0 every 584 years. Time intervals
- * may be either signed or unsigned.
- */
-typedef khronos_uint64_t khronos_utime_nanoseconds_t;
-typedef khronos_int64_t khronos_stime_nanoseconds_t;
-#endif
-
-/*
- * Dummy value used to pad enum types to 32 bits.
- */
-#ifndef KHRONOS_MAX_ENUM
-#define KHRONOS_MAX_ENUM 0x7FFFFFFF
-#endif
-
-/*
- * Enumerated boolean type
- *
- * Values other than zero should be considered to be true. Therefore
- * comparisons should not be made against KHRONOS_TRUE.
- */
-typedef enum {
- KHRONOS_FALSE = 0,
- KHRONOS_TRUE = 1,
- KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
-} khronos_boolean_enum_t;
-
-#endif /* __khrplatform_h_ */
-
-
-#ifndef __eglplatform_h_
-#define __eglplatform_h_
-
-/*
-** Copyright 2007-2020 The Khronos Group Inc.
-** SPDX-License-Identifier: Apache-2.0
-*/
-
-/* Platform-specific types and definitions for egl.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file. Please submit changes
- * by filing an issue or pull request on the public Khronos EGL Registry, at
- * https://www.github.com/KhronosGroup/EGL-Registry/
- */
-
-/*#include */
-
-/* Macros used in EGL function prototype declarations.
- *
- * EGL functions should be prototyped as:
- *
- * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
- * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
- *
- * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
- */
-
-#ifndef EGLAPI
-#define EGLAPI KHRONOS_APICALL
-#endif
-
-#ifndef EGLAPIENTRY
-#define EGLAPIENTRY KHRONOS_APIENTRY
-#endif
-#define EGLAPIENTRYP EGLAPIENTRY*
-
-/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
- * are aliases of window-system-dependent types, such as X Display * or
- * Windows Device Context. They must be defined in platform-specific
- * code below. The EGL-prefixed versions of Native*Type are the same
- * types, renamed in EGL 1.3 so all types in the API start with "EGL".
- *
- * Khronos STRONGLY RECOMMENDS that you use the default definitions
- * provided below, since these changes affect both binary and source
- * portability of applications using EGL running on different EGL
- * implementations.
- */
-
-#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)
-
-typedef void *EGLNativeDisplayType;
-typedef void *EGLNativePixmapType;
-typedef void *EGLNativeWindowType;
-
-#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include
-
-typedef HDC EGLNativeDisplayType;
-typedef HBITMAP EGLNativePixmapType;
-typedef HWND EGLNativeWindowType;
-
-#elif defined(__EMSCRIPTEN__)
-
-typedef int EGLNativeDisplayType;
-typedef int EGLNativePixmapType;
-typedef int EGLNativeWindowType;
-
-#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */
-
-typedef int EGLNativeDisplayType;
-typedef void *EGLNativePixmapType;
-typedef void *EGLNativeWindowType;
-
-#elif defined(WL_EGL_PLATFORM)
-
-typedef struct wl_display *EGLNativeDisplayType;
-typedef struct wl_egl_pixmap *EGLNativePixmapType;
-typedef struct wl_egl_window *EGLNativeWindowType;
-
-#elif defined(__GBM__)
-
-typedef struct gbm_device *EGLNativeDisplayType;
-typedef struct gbm_bo *EGLNativePixmapType;
-typedef void *EGLNativeWindowType;
-
-#elif defined(__ANDROID__) || defined(ANDROID)
-
-struct ANativeWindow;
-struct egl_native_pixmap_t;
-
-typedef void* EGLNativeDisplayType;
-typedef struct egl_native_pixmap_t* EGLNativePixmapType;
-typedef struct ANativeWindow* EGLNativeWindowType;
-
-#elif defined(USE_OZONE)
-
-typedef intptr_t EGLNativeDisplayType;
-typedef intptr_t EGLNativePixmapType;
-typedef intptr_t EGLNativeWindowType;
-
-#elif defined(USE_X11)
-
-/* X11 (tentative) */
-#include
-#include
-
-typedef Display *EGLNativeDisplayType;
-typedef Pixmap EGLNativePixmapType;
-typedef Window EGLNativeWindowType;
-
-#elif defined(__unix__)
-
-typedef void *EGLNativeDisplayType;
-typedef khronos_uintptr_t EGLNativePixmapType;
-typedef khronos_uintptr_t EGLNativeWindowType;
-
-#elif defined(__APPLE__)
-
-typedef int EGLNativeDisplayType;
-typedef void *EGLNativePixmapType;
-typedef void *EGLNativeWindowType;
-
-#elif defined(__HAIKU__)
-
-#include
-
-typedef void *EGLNativeDisplayType;
-typedef khronos_uintptr_t EGLNativePixmapType;
-typedef khronos_uintptr_t EGLNativeWindowType;
-
-#elif defined(__Fuchsia__)
-
-typedef void *EGLNativeDisplayType;
-typedef khronos_uintptr_t EGLNativePixmapType;
-typedef khronos_uintptr_t EGLNativeWindowType;
-
-#else
-#error "Platform not recognized"
-#endif
-
-/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
-typedef EGLNativeDisplayType NativeDisplayType;
-typedef EGLNativePixmapType NativePixmapType;
-typedef EGLNativeWindowType NativeWindowType;
-
-
-/* Define EGLint. This must be a signed integral type large enough to contain
- * all legal attribute names and values passed into and out of EGL, whether
- * their type is boolean, bitmask, enumerant (symbolic constant), integer,
- * handle, or other. While in general a 32-bit integer will suffice, if
- * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
- * integer type.
- */
-typedef khronos_int32_t EGLint;
-
-
-/* C++ / C typecast macros for special EGL handle values */
-#if defined(__cplusplus)
-#define EGL_CAST(type, value) (static_cast(value))
-#else
-#define EGL_CAST(type, value) ((type) (value))
-#endif
-
-#endif /* __eglplatform_h */
-
-
-#ifndef __egl_h_
-#define __egl_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright 2013-2020 The Khronos Group Inc.
-** SPDX-License-Identifier: Apache-2.0
-**
-** This header is generated from the Khronos EGL XML API Registry.
-** The current version of the Registry, generator scripts
-** 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 $
-*/
-
-/*#include */
-
-#ifndef EGL_EGL_PROTOTYPES
-#define EGL_EGL_PROTOTYPES 1
-#endif
-
-/* Generated on date 20220525 */
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: .*
- * Default extensions included: None
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_VERSION_1_0
-#define EGL_VERSION_1_0 1
-typedef unsigned int EGLBoolean;
-typedef void *EGLDisplay;
-/*#include */
-/*#include */
-typedef void *EGLConfig;
-typedef void *EGLSurface;
-typedef void *EGLContext;
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-#define EGL_ALPHA_SIZE 0x3021
-#define EGL_BAD_ACCESS 0x3002
-#define EGL_BAD_ALLOC 0x3003
-#define EGL_BAD_ATTRIBUTE 0x3004
-#define EGL_BAD_CONFIG 0x3005
-#define EGL_BAD_CONTEXT 0x3006
-#define EGL_BAD_CURRENT_SURFACE 0x3007
-#define EGL_BAD_DISPLAY 0x3008
-#define EGL_BAD_MATCH 0x3009
-#define EGL_BAD_NATIVE_PIXMAP 0x300A
-#define EGL_BAD_NATIVE_WINDOW 0x300B
-#define EGL_BAD_PARAMETER 0x300C
-#define EGL_BAD_SURFACE 0x300D
-#define EGL_BLUE_SIZE 0x3022
-#define EGL_BUFFER_SIZE 0x3020
-#define EGL_CONFIG_CAVEAT 0x3027
-#define EGL_CONFIG_ID 0x3028
-#define EGL_CORE_NATIVE_ENGINE 0x305B
-#define EGL_DEPTH_SIZE 0x3025
-#define EGL_DONT_CARE EGL_CAST(EGLint,-1)
-#define EGL_DRAW 0x3059
-#define EGL_EXTENSIONS 0x3055
-#define EGL_FALSE 0
-#define EGL_GREEN_SIZE 0x3023
-#define EGL_HEIGHT 0x3056
-#define EGL_LARGEST_PBUFFER 0x3058
-#define EGL_LEVEL 0x3029
-#define EGL_MAX_PBUFFER_HEIGHT 0x302A
-#define EGL_MAX_PBUFFER_PIXELS 0x302B
-#define EGL_MAX_PBUFFER_WIDTH 0x302C
-#define EGL_NATIVE_RENDERABLE 0x302D
-#define EGL_NATIVE_VISUAL_ID 0x302E
-#define EGL_NATIVE_VISUAL_TYPE 0x302F
-#define EGL_NONE 0x3038
-#define EGL_NON_CONFORMANT_CONFIG 0x3051
-#define EGL_NOT_INITIALIZED 0x3001
-#define EGL_NO_CONTEXT EGL_CAST(EGLContext,0)
-#define EGL_NO_DISPLAY EGL_CAST(EGLDisplay,0)
-#define EGL_NO_SURFACE EGL_CAST(EGLSurface,0)
-#define EGL_PBUFFER_BIT 0x0001
-#define EGL_PIXMAP_BIT 0x0002
-#define EGL_READ 0x305A
-#define EGL_RED_SIZE 0x3024
-#define EGL_SAMPLES 0x3031
-#define EGL_SAMPLE_BUFFERS 0x3032
-#define EGL_SLOW_CONFIG 0x3050
-#define EGL_STENCIL_SIZE 0x3026
-#define EGL_SUCCESS 0x3000
-#define EGL_SURFACE_TYPE 0x3033
-#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
-#define EGL_TRANSPARENT_RED_VALUE 0x3037
-#define EGL_TRANSPARENT_RGB 0x3052
-#define EGL_TRANSPARENT_TYPE 0x3034
-#define EGL_TRUE 1
-#define EGL_VENDOR 0x3053
-#define EGL_VERSION 0x3054
-#define EGL_WIDTH 0x3057
-#define EGL_WINDOW_BIT 0x0004
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-typedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);
-typedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);
-typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);
-#if EGL_EGL_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);
-EGLAPI EGLint EGLAPIENTRY eglGetError (void);
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);
-EGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);
-#endif
-#endif /* EGL_VERSION_1_0 */
-
-#ifndef EGL_VERSION_1_1
-#define EGL_VERSION_1_1 1
-#define EGL_BACK_BUFFER 0x3084
-#define EGL_BIND_TO_TEXTURE_RGB 0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
-#define EGL_CONTEXT_LOST 0x300E
-#define EGL_MIN_SWAP_INTERVAL 0x303B
-#define EGL_MAX_SWAP_INTERVAL 0x303C
-#define EGL_MIPMAP_TEXTURE 0x3082
-#define EGL_MIPMAP_LEVEL 0x3083
-#define EGL_NO_TEXTURE 0x305C
-#define EGL_TEXTURE_2D 0x305F
-#define EGL_TEXTURE_FORMAT 0x3080
-#define EGL_TEXTURE_RGB 0x305D
-#define EGL_TEXTURE_RGBA 0x305E
-#define EGL_TEXTURE_TARGET 0x3081
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);
-#if EGL_EGL_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);
-#endif
-#endif /* EGL_VERSION_1_1 */
-
-#ifndef EGL_VERSION_1_2
-#define EGL_VERSION_1_2 1
-typedef unsigned int EGLenum;
-typedef void *EGLClientBuffer;
-#define EGL_ALPHA_FORMAT 0x3088
-#define EGL_ALPHA_FORMAT_NONPRE 0x308B
-#define EGL_ALPHA_FORMAT_PRE 0x308C
-#define EGL_ALPHA_MASK_SIZE 0x303E
-#define EGL_BUFFER_PRESERVED 0x3094
-#define EGL_BUFFER_DESTROYED 0x3095
-#define EGL_CLIENT_APIS 0x308D
-#define EGL_COLORSPACE 0x3087
-#define EGL_COLORSPACE_sRGB 0x3089
-#define EGL_COLORSPACE_LINEAR 0x308A
-#define EGL_COLOR_BUFFER_TYPE 0x303F
-#define EGL_CONTEXT_CLIENT_TYPE 0x3097
-#define EGL_DISPLAY_SCALING 10000
-#define EGL_HORIZONTAL_RESOLUTION 0x3090
-#define EGL_LUMINANCE_BUFFER 0x308F
-#define EGL_LUMINANCE_SIZE 0x303D
-#define EGL_OPENGL_ES_BIT 0x0001
-#define EGL_OPENVG_BIT 0x0002
-#define EGL_OPENGL_ES_API 0x30A0
-#define EGL_OPENVG_API 0x30A1
-#define EGL_OPENVG_IMAGE 0x3096
-#define EGL_PIXEL_ASPECT_RATIO 0x3092
-#define EGL_RENDERABLE_TYPE 0x3040
-#define EGL_RENDER_BUFFER 0x3086
-#define EGL_RGB_BUFFER 0x308E
-#define EGL_SINGLE_BUFFER 0x3085
-#define EGL_SWAP_BEHAVIOR 0x3093
-#define EGL_UNKNOWN EGL_CAST(EGLint,-1)
-#define EGL_VERTICAL_RESOLUTION 0x3091
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);
-typedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);
-#if EGL_EGL_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);
-#endif
-#endif /* EGL_VERSION_1_2 */
-
-#ifndef EGL_VERSION_1_3
-#define EGL_VERSION_1_3 1
-#define EGL_CONFORMANT 0x3042
-#define EGL_CONTEXT_CLIENT_VERSION 0x3098
-#define EGL_MATCH_NATIVE_PIXMAP 0x3041
-#define EGL_OPENGL_ES2_BIT 0x0004
-#define EGL_VG_ALPHA_FORMAT 0x3088
-#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B
-#define EGL_VG_ALPHA_FORMAT_PRE 0x308C
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040
-#define EGL_VG_COLORSPACE 0x3087
-#define EGL_VG_COLORSPACE_sRGB 0x3089
-#define EGL_VG_COLORSPACE_LINEAR 0x308A
-#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020
-#endif /* EGL_VERSION_1_3 */
-
-#ifndef EGL_VERSION_1_4
-#define EGL_VERSION_1_4 1
-#define EGL_DEFAULT_DISPLAY EGL_CAST(EGLNativeDisplayType,0)
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200
-#define EGL_MULTISAMPLE_RESOLVE 0x3099
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A
-#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B
-#define EGL_OPENGL_API 0x30A2
-#define EGL_OPENGL_BIT 0x0008
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400
-typedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);
-#if EGL_EGL_PROTOTYPES
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);
-#endif
-#endif /* EGL_VERSION_1_4 */
-
-#ifndef EGL_VERSION_1_5
-#define EGL_VERSION_1_5 1
-typedef void *EGLSync;
-typedef intptr_t EGLAttrib;
-typedef khronos_utime_nanoseconds_t EGLTime;
-typedef void *EGLImage;
-#define EGL_CONTEXT_MAJOR_VERSION 0x3098
-#define EGL_CONTEXT_MINOR_VERSION 0x30FB
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK 0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD
-#define EGL_NO_RESET_NOTIFICATION 0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET 0x31BF
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002
-#define EGL_CONTEXT_OPENGL_DEBUG 0x31B0
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS 0x31B2
-#define EGL_OPENGL_ES3_BIT 0x00000040
-#define EGL_CL_EVENT_HANDLE 0x309C
-#define EGL_SYNC_CL_EVENT 0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE 0x30FF
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE 0x30F0
-#define EGL_SYNC_TYPE 0x30F7
-#define EGL_SYNC_STATUS 0x30F1
-#define EGL_SYNC_CONDITION 0x30F8
-#define EGL_SIGNALED 0x30F2
-#define EGL_UNSIGNALED 0x30F3
-#define EGL_SYNC_FLUSH_COMMANDS_BIT 0x0001
-#define EGL_FOREVER 0xFFFFFFFFFFFFFFFFull
-#define EGL_TIMEOUT_EXPIRED 0x30F5
-#define EGL_CONDITION_SATISFIED 0x30F6
-#define EGL_NO_SYNC EGL_CAST(EGLSync,0)
-#define EGL_SYNC_FENCE 0x30F9
-#define EGL_GL_COLORSPACE 0x309D
-#define EGL_GL_COLORSPACE_SRGB 0x3089
-#define EGL_GL_COLORSPACE_LINEAR 0x308A
-#define EGL_GL_RENDERBUFFER 0x30B9
-#define EGL_GL_TEXTURE_2D 0x30B1
-#define EGL_GL_TEXTURE_LEVEL 0x30BC
-#define EGL_GL_TEXTURE_3D 0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET 0x30BD
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8
-#define EGL_IMAGE_PRESERVED 0x30D2
-#define EGL_NO_IMAGE EGL_CAST(EGLImage,0)
-typedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
-typedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);
-#if EGL_EGL_PROTOTYPES
-EGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);
-EGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);
-#endif
-#endif /* EGL_VERSION_1_5 */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __egl_h_ */
-
-
-#ifndef __eglext_h_
-#define __eglext_h_ 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright 2013-2020 The Khronos Group Inc.
-** SPDX-License-Identifier: Apache-2.0
-**
-** This header is generated from the Khronos EGL XML API Registry.
-** The current version of the Registry, generator scripts
-** 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 $
-*/
-
-/*#include */
-
-#define EGL_EGLEXT_VERSION 20220525
-
-/* Generated C header for:
- * API: egl
- * Versions considered: .*
- * Versions emitted: _nomatch_^
- * Default extensions included: egl
- * Additional extensions included: _nomatch_^
- * Extensions removed: _nomatch_^
- */
-
-#ifndef EGL_KHR_cl_event
-#define EGL_KHR_cl_event 1
-#define EGL_CL_EVENT_HANDLE_KHR 0x309C
-#define EGL_SYNC_CL_EVENT_KHR 0x30FE
-#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
-#endif /* EGL_KHR_cl_event */
-
-#ifndef EGL_KHR_cl_event2
-#define EGL_KHR_cl_event2 1
-typedef void *EGLSyncKHR;
-typedef intptr_t EGLAttribKHR;
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
-#endif
-#endif /* EGL_KHR_cl_event2 */
-
-#ifndef EGL_KHR_client_get_all_proc_addresses
-#define EGL_KHR_client_get_all_proc_addresses 1
-#endif /* EGL_KHR_client_get_all_proc_addresses */
-
-#ifndef EGL_KHR_config_attribs
-#define EGL_KHR_config_attribs 1
-#define EGL_CONFORMANT_KHR 0x3042
-#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
-#endif /* EGL_KHR_config_attribs */
-
-#ifndef EGL_KHR_context_flush_control
-#define EGL_KHR_context_flush_control 1
-#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
-#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
-#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
-#endif /* EGL_KHR_context_flush_control */
-
-#ifndef EGL_KHR_create_context
-#define EGL_KHR_create_context 1
-#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
-#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
-#define EGL_CONTEXT_FLAGS_KHR 0x30FC
-#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
-#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
-#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
-#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
-#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
-#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
-#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
-#endif /* EGL_KHR_create_context */
-
-#ifndef EGL_KHR_create_context_no_error
-#define EGL_KHR_create_context_no_error 1
-#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
-#endif /* EGL_KHR_create_context_no_error */
-
-#ifndef EGL_KHR_debug
-#define EGL_KHR_debug 1
-typedef void *EGLLabelKHR;
-typedef void *EGLObjectKHR;
-typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);
-#define EGL_OBJECT_THREAD_KHR 0x33B0
-#define EGL_OBJECT_DISPLAY_KHR 0x33B1
-#define EGL_OBJECT_CONTEXT_KHR 0x33B2
-#define EGL_OBJECT_SURFACE_KHR 0x33B3
-#define EGL_OBJECT_IMAGE_KHR 0x33B4
-#define EGL_OBJECT_SYNC_KHR 0x33B5
-#define EGL_OBJECT_STREAM_KHR 0x33B6
-#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
-#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
-#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
-#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
-#define EGL_DEBUG_CALLBACK_KHR 0x33B8
-typedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);
-typedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);
-EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);
-#endif
-#endif /* EGL_KHR_debug */
-
-#ifndef EGL_KHR_display_reference
-#define EGL_KHR_display_reference 1
-#define EGL_TRACK_REFERENCES_KHR 0x3352
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);
-#endif
-#endif /* EGL_KHR_display_reference */
-
-#ifndef EGL_KHR_fence_sync
-#define EGL_KHR_fence_sync 1
-typedef khronos_utime_nanoseconds_t EGLTimeKHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
-#define EGL_SYNC_CONDITION_KHR 0x30F8
-#define EGL_SYNC_FENCE_KHR 0x30F9
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_fence_sync */
-
-#ifndef EGL_KHR_get_all_proc_addresses
-#define EGL_KHR_get_all_proc_addresses 1
-#endif /* EGL_KHR_get_all_proc_addresses */
-
-#ifndef EGL_KHR_gl_colorspace
-#define EGL_KHR_gl_colorspace 1
-#define EGL_GL_COLORSPACE_KHR 0x309D
-#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
-#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
-#endif /* EGL_KHR_gl_colorspace */
-
-#ifndef EGL_KHR_gl_renderbuffer_image
-#define EGL_KHR_gl_renderbuffer_image 1
-#define EGL_GL_RENDERBUFFER_KHR 0x30B9
-#endif /* EGL_KHR_gl_renderbuffer_image */
-
-#ifndef EGL_KHR_gl_texture_2D_image
-#define EGL_KHR_gl_texture_2D_image 1
-#define EGL_GL_TEXTURE_2D_KHR 0x30B1
-#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
-#endif /* EGL_KHR_gl_texture_2D_image */
-
-#ifndef EGL_KHR_gl_texture_3D_image
-#define EGL_KHR_gl_texture_3D_image 1
-#define EGL_GL_TEXTURE_3D_KHR 0x30B2
-#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
-#endif /* EGL_KHR_gl_texture_3D_image */
-
-#ifndef EGL_KHR_gl_texture_cubemap_image
-#define EGL_KHR_gl_texture_cubemap_image 1
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
-#endif /* EGL_KHR_gl_texture_cubemap_image */
-
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-typedef void *EGLImageKHR;
-#define EGL_NATIVE_PIXMAP_KHR 0x30B0
-#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0)
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif
-#endif /* EGL_KHR_image */
-
-#ifndef EGL_KHR_image_base
-#define EGL_KHR_image_base 1
-#define EGL_IMAGE_PRESERVED_KHR 0x30D2
-#endif /* EGL_KHR_image_base */
-
-#ifndef EGL_KHR_image_pixmap
-#define EGL_KHR_image_pixmap 1
-#endif /* EGL_KHR_image_pixmap */
-
-#ifndef EGL_KHR_lock_surface
-#define EGL_KHR_lock_surface 1
-#define EGL_READ_SURFACE_BIT_KHR 0x0001
-#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
-#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
-#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
-#define EGL_MATCH_FORMAT_KHR 0x3043
-#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
-#define EGL_FORMAT_RGB_565_KHR 0x30C1
-#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
-#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
-#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
-#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
-#define EGL_BITMAP_POINTER_KHR 0x30C6
-#define EGL_BITMAP_PITCH_KHR 0x30C7
-#define EGL_BITMAP_ORIGIN_KHR 0x30C8
-#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
-#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
-#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
-#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
-#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
-#define EGL_LOWER_LEFT_KHR 0x30CE
-#define EGL_UPPER_LEFT_KHR 0x30CF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);
-#endif
-#endif /* EGL_KHR_lock_surface */
-
-#ifndef EGL_KHR_lock_surface2
-#define EGL_KHR_lock_surface2 1
-#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
-#endif /* EGL_KHR_lock_surface2 */
-
-#ifndef EGL_KHR_lock_surface3
-#define EGL_KHR_lock_surface3 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);
-#endif
-#endif /* EGL_KHR_lock_surface3 */
-
-#ifndef EGL_KHR_mutable_render_buffer
-#define EGL_KHR_mutable_render_buffer 1
-#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
-#endif /* EGL_KHR_mutable_render_buffer */
-
-#ifndef EGL_KHR_no_config_context
-#define EGL_KHR_no_config_context 1
-#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig,0)
-#endif /* EGL_KHR_no_config_context */
-
-#ifndef EGL_KHR_partial_update
-#define EGL_KHR_partial_update 1
-#define EGL_BUFFER_AGE_KHR 0x313D
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_partial_update */
-
-#ifndef EGL_KHR_platform_android
-#define EGL_KHR_platform_android 1
-#define EGL_PLATFORM_ANDROID_KHR 0x3141
-#endif /* EGL_KHR_platform_android */
-
-#ifndef EGL_KHR_platform_gbm
-#define EGL_KHR_platform_gbm 1
-#define EGL_PLATFORM_GBM_KHR 0x31D7
-#endif /* EGL_KHR_platform_gbm */
-
-#ifndef EGL_KHR_platform_wayland
-#define EGL_KHR_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
-#endif /* EGL_KHR_platform_wayland */
-
-#ifndef EGL_KHR_platform_x11
-#define EGL_KHR_platform_x11 1
-#define EGL_PLATFORM_X11_KHR 0x31D5
-#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
-#endif /* EGL_KHR_platform_x11 */
-
-#ifndef EGL_KHR_reusable_sync
-#define EGL_KHR_reusable_sync 1
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_STATUS_KHR 0x30F1
-#define EGL_SIGNALED_KHR 0x30F2
-#define EGL_UNSIGNALED_KHR 0x30F3
-#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
-#define EGL_CONDITION_SATISFIED_KHR 0x30F6
-#define EGL_SYNC_TYPE_KHR 0x30F7
-#define EGL_SYNC_REUSABLE_KHR 0x30FA
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
-#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
-#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR,0)
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_reusable_sync */
-
-#ifndef EGL_KHR_stream
-#define EGL_KHR_stream 1
-typedef void *EGLStreamKHR;
-typedef khronos_uint64_t EGLuint64KHR;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR,0)
-#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
-#define EGL_PRODUCER_FRAME_KHR 0x3212
-#define EGL_CONSUMER_FRAME_KHR 0x3213
-#define EGL_STREAM_STATE_KHR 0x3214
-#define EGL_STREAM_STATE_CREATED_KHR 0x3215
-#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
-#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
-#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
-#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
-#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
-#define EGL_BAD_STREAM_KHR 0x321B
-#define EGL_BAD_STATE_KHR 0x321C
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_stream */
-
-#ifndef EGL_KHR_stream_attrib
-#define EGL_KHR_stream_attrib 1
-#ifdef KHRONOS_SUPPORT_INT64
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_KHR_stream_attrib */
-
-#ifndef EGL_KHR_stream_consumer_gltexture
-#define EGL_KHR_stream_consumer_gltexture 1
-#ifdef EGL_KHR_stream
-#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_consumer_gltexture */
-
-#ifndef EGL_KHR_stream_cross_process_fd
-#define EGL_KHR_stream_cross_process_fd 1
-typedef int EGLNativeFileDescriptorKHR;
-#ifdef EGL_KHR_stream
-#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR,-1)
-typedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-typedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);
-EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_cross_process_fd */
-
-#ifndef EGL_KHR_stream_fifo
-#define EGL_KHR_stream_fifo 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
-#define EGL_STREAM_TIME_NOW_KHR 0x31FD
-#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
-#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_fifo */
-
-#ifndef EGL_KHR_stream_producer_aldatalocator
-#define EGL_KHR_stream_producer_aldatalocator 1
-#ifdef EGL_KHR_stream
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_aldatalocator */
-
-#ifndef EGL_KHR_stream_producer_eglsurface
-#define EGL_KHR_stream_producer_eglsurface 1
-#ifdef EGL_KHR_stream
-#define EGL_STREAM_BIT_KHR 0x0800
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
-#endif
-#endif /* EGL_KHR_stream */
-#endif /* EGL_KHR_stream_producer_eglsurface */
-
-#ifndef EGL_KHR_surfaceless_context
-#define EGL_KHR_surfaceless_context 1
-#endif /* EGL_KHR_surfaceless_context */
-
-#ifndef EGL_KHR_swap_buffers_with_damage
-#define EGL_KHR_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_KHR_swap_buffers_with_damage */
-
-#ifndef EGL_KHR_vg_parent_image
-#define EGL_KHR_vg_parent_image 1
-#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
-#endif /* EGL_KHR_vg_parent_image */
-
-#ifndef EGL_KHR_wait_sync
-#define EGL_KHR_wait_sync 1
-typedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
-#endif
-#endif /* EGL_KHR_wait_sync */
-
-#ifndef EGL_ANDROID_GLES_layers
-#define EGL_ANDROID_GLES_layers 1
-#endif /* EGL_ANDROID_GLES_layers */
-
-#ifndef EGL_ANDROID_blob_cache
-#define EGL_ANDROID_blob_cache 1
-typedef khronos_ssize_t EGLsizeiANDROID;
-typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
-typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
-typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
-#endif
-#endif /* EGL_ANDROID_blob_cache */
-
-#ifndef EGL_ANDROID_create_native_client_buffer
-#define EGL_ANDROID_create_native_client_buffer 1
-#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
-#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
-#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
-#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
-typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);
-#endif
-#endif /* EGL_ANDROID_create_native_client_buffer */
-
-#ifndef EGL_ANDROID_framebuffer_target
-#define EGL_ANDROID_framebuffer_target 1
-#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
-#endif /* EGL_ANDROID_framebuffer_target */
-
-#ifndef EGL_ANDROID_front_buffer_auto_refresh
-#define EGL_ANDROID_front_buffer_auto_refresh 1
-#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
-#endif /* EGL_ANDROID_front_buffer_auto_refresh */
-
-#ifndef EGL_ANDROID_get_frame_timestamps
-#define EGL_ANDROID_get_frame_timestamps 1
-typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
-#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID,-2)
-#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID,-1)
-#define EGL_TIMESTAMPS_ANDROID 0x3430
-#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
-#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
-#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
-#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
-#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
-#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
-#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
-#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
-#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
-#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
-#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
-#define EGL_READS_DONE_TIME_ANDROID 0x343C
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const EGLint *names, EGLnsecsANDROID *values);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const EGLint *timestamps, EGLnsecsANDROID *values);
-#endif
-#endif /* EGL_ANDROID_get_frame_timestamps */
-
-#ifndef EGL_ANDROID_get_native_client_buffer
-#define EGL_ANDROID_get_native_client_buffer 1
-struct AHardwareBuffer;
-typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);
-#endif
-#endif /* EGL_ANDROID_get_native_client_buffer */
-
-#ifndef EGL_ANDROID_image_native_buffer
-#define EGL_ANDROID_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_ANDROID 0x3140
-#endif /* EGL_ANDROID_image_native_buffer */
-
-#ifndef EGL_ANDROID_native_fence_sync
-#define EGL_ANDROID_native_fence_sync 1
-#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
-#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
-#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
-#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
-typedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);
-#endif
-#endif /* EGL_ANDROID_native_fence_sync */
-
-#ifndef EGL_ANDROID_presentation_time
-#define EGL_ANDROID_presentation_time 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);
-#endif
-#endif /* EGL_ANDROID_presentation_time */
-
-#ifndef EGL_ANDROID_recordable
-#define EGL_ANDROID_recordable 1
-#define EGL_RECORDABLE_ANDROID 0x3142
-#endif /* EGL_ANDROID_recordable */
-
-#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
-#define EGL_ANGLE_d3d_share_handle_client_buffer 1
-#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
-#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */
-
-#ifndef EGL_ANGLE_device_d3d
-#define EGL_ANGLE_device_d3d 1
-#define EGL_D3D9_DEVICE_ANGLE 0x33A0
-#define EGL_D3D11_DEVICE_ANGLE 0x33A1
-#endif /* EGL_ANGLE_device_d3d */
-
-#ifndef EGL_ANGLE_query_surface_pointer
-#define EGL_ANGLE_query_surface_pointer 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
-#endif
-#endif /* EGL_ANGLE_query_surface_pointer */
-
-#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
-#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
-#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */
-
-#ifndef EGL_ANGLE_sync_control_rate
-#define EGL_ANGLE_sync_control_rate 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);
-#endif
-#endif /* EGL_ANGLE_sync_control_rate */
-
-#ifndef EGL_ANGLE_window_fixed_size
-#define EGL_ANGLE_window_fixed_size 1
-#define EGL_FIXED_SIZE_ANGLE 0x3201
-#endif /* EGL_ANGLE_window_fixed_size */
-
-#ifndef EGL_ARM_image_format
-#define EGL_ARM_image_format 1
-#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
-#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
-#endif /* EGL_ARM_image_format */
-
-#ifndef EGL_ARM_implicit_external_sync
-#define EGL_ARM_implicit_external_sync 1
-#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
-#endif /* EGL_ARM_implicit_external_sync */
-
-#ifndef EGL_ARM_pixmap_multisample_discard
-#define EGL_ARM_pixmap_multisample_discard 1
-#define EGL_DISCARD_SAMPLES_ARM 0x3286
-#endif /* EGL_ARM_pixmap_multisample_discard */
-
-#ifndef EGL_EXT_bind_to_front
-#define EGL_EXT_bind_to_front 1
-#define EGL_FRONT_BUFFER_EXT 0x3464
-#endif /* EGL_EXT_bind_to_front */
-
-#ifndef EGL_EXT_buffer_age
-#define EGL_EXT_buffer_age 1
-#define EGL_BUFFER_AGE_EXT 0x313D
-#endif /* EGL_EXT_buffer_age */
-
-#ifndef EGL_EXT_client_extensions
-#define EGL_EXT_client_extensions 1
-#endif /* EGL_EXT_client_extensions */
-
-#ifndef EGL_EXT_client_sync
-#define EGL_EXT_client_sync 1
-#define EGL_SYNC_CLIENT_EXT 0x3364
-#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
-#endif
-#endif /* EGL_EXT_client_sync */
-
-#ifndef EGL_EXT_compositor
-#define EGL_EXT_compositor 1
-#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
-#define EGL_EXTERNAL_REF_ID_EXT 0x3461
-#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
-#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);
-EGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);
-#endif
-#endif /* EGL_EXT_compositor */
-
-#ifndef EGL_EXT_config_select_group
-#define EGL_EXT_config_select_group 1
-#define EGL_CONFIG_SELECT_GROUP_EXT 0x34C0
-#endif /* EGL_EXT_config_select_group */
-
-#ifndef EGL_EXT_create_context_robustness
-#define EGL_EXT_create_context_robustness 1
-#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
-#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
-#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
-#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
-#endif /* EGL_EXT_create_context_robustness */
-
-#ifndef EGL_EXT_device_base
-#define EGL_EXT_device_base 1
-typedef void *EGLDeviceEXT;
-#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT,0)
-#define EGL_BAD_DEVICE_EXT 0x322B
-#define EGL_DEVICE_EXT 0x322C
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-#endif
-#endif /* EGL_EXT_device_base */
-
-#ifndef EGL_EXT_device_drm
-#define EGL_EXT_device_drm 1
-#define EGL_DRM_DEVICE_FILE_EXT 0x3233
-#define EGL_DRM_MASTER_FD_EXT 0x333C
-#endif /* EGL_EXT_device_drm */
-
-#ifndef EGL_EXT_device_drm_render_node
-#define EGL_EXT_device_drm_render_node 1
-#define EGL_DRM_RENDER_NODE_FILE_EXT 0x3377
-#endif /* EGL_EXT_device_drm_render_node */
-
-#ifndef EGL_EXT_device_enumeration
-#define EGL_EXT_device_enumeration 1
-#endif /* EGL_EXT_device_enumeration */
-
-#ifndef EGL_EXT_device_openwf
-#define EGL_EXT_device_openwf 1
-#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
-#define EGL_OPENWF_DEVICE_EXT 0x333D
-#endif /* EGL_EXT_device_openwf */
-
-#ifndef EGL_EXT_device_persistent_id
-#define EGL_EXT_device_persistent_id 1
-#define EGL_DEVICE_UUID_EXT 0x335C
-#define EGL_DRIVER_UUID_EXT 0x335D
-#define EGL_DRIVER_NAME_EXT 0x335E
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);
-#endif
-#endif /* EGL_EXT_device_persistent_id */
-
-#ifndef EGL_EXT_device_query
-#define EGL_EXT_device_query 1
-#endif /* EGL_EXT_device_query */
-
-#ifndef EGL_EXT_device_query_name
-#define EGL_EXT_device_query_name 1
-#define EGL_RENDERER_EXT 0x335F
-#endif /* EGL_EXT_device_query_name */
-
-#ifndef EGL_EXT_explicit_device
-#define EGL_EXT_explicit_device 1
-#endif /* EGL_EXT_explicit_device */
-
-#ifndef EGL_EXT_gl_colorspace_bt2020_linear
-#define EGL_EXT_gl_colorspace_bt2020_linear 1
-#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
-#endif /* EGL_EXT_gl_colorspace_bt2020_linear */
-
-#ifndef EGL_EXT_gl_colorspace_bt2020_pq
-#define EGL_EXT_gl_colorspace_bt2020_pq 1
-#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
-#endif /* EGL_EXT_gl_colorspace_bt2020_pq */
-
-#ifndef EGL_EXT_gl_colorspace_display_p3
-#define EGL_EXT_gl_colorspace_display_p3 1
-#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
-#endif /* EGL_EXT_gl_colorspace_display_p3 */
-
-#ifndef EGL_EXT_gl_colorspace_display_p3_linear
-#define EGL_EXT_gl_colorspace_display_p3_linear 1
-#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
-#endif /* EGL_EXT_gl_colorspace_display_p3_linear */
-
-#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
-#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
-#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
-#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */
-
-#ifndef EGL_EXT_gl_colorspace_scrgb
-#define EGL_EXT_gl_colorspace_scrgb 1
-#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
-#endif /* EGL_EXT_gl_colorspace_scrgb */
-
-#ifndef EGL_EXT_gl_colorspace_scrgb_linear
-#define EGL_EXT_gl_colorspace_scrgb_linear 1
-#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
-#endif /* EGL_EXT_gl_colorspace_scrgb_linear */
-
-#ifndef EGL_EXT_image_dma_buf_import
-#define EGL_EXT_image_dma_buf_import 1
-#define EGL_LINUX_DMA_BUF_EXT 0x3270
-#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
-#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
-#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
-#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
-#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
-#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
-#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
-#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
-#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
-#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
-#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
-#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
-#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
-#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
-#define EGL_ITU_REC601_EXT 0x327F
-#define EGL_ITU_REC709_EXT 0x3280
-#define EGL_ITU_REC2020_EXT 0x3281
-#define EGL_YUV_FULL_RANGE_EXT 0x3282
-#define EGL_YUV_NARROW_RANGE_EXT 0x3283
-#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
-#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
-#endif /* EGL_EXT_image_dma_buf_import */
-
-#ifndef EGL_EXT_image_dma_buf_import_modifiers
-#define EGL_EXT_image_dma_buf_import_modifiers 1
-#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
-#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
-#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
-#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
-#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
-#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
-#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
-#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
-#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
-#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
-#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);
-#endif
-#endif /* EGL_EXT_image_dma_buf_import_modifiers */
-
-#ifndef EGL_EXT_image_gl_colorspace
-#define EGL_EXT_image_gl_colorspace 1
-#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
-#endif /* EGL_EXT_image_gl_colorspace */
-
-#ifndef EGL_EXT_image_implicit_sync_control
-#define EGL_EXT_image_implicit_sync_control 1
-#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
-#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
-#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
-#endif /* EGL_EXT_image_implicit_sync_control */
-
-#ifndef EGL_EXT_multiview_window
-#define EGL_EXT_multiview_window 1
-#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
-#endif /* EGL_EXT_multiview_window */
-
-#ifndef EGL_EXT_output_base
-#define EGL_EXT_output_base 1
-typedef void *EGLOutputLayerEXT;
-typedef void *EGLOutputPortEXT;
-#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT,0)
-#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT,0)
-#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
-#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
-#define EGL_SWAP_INTERVAL_EXT 0x322F
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-typedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);
-EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);
-EGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);
-#endif
-#endif /* EGL_EXT_output_base */
-
-#ifndef EGL_EXT_output_drm
-#define EGL_EXT_output_drm 1
-#define EGL_DRM_CRTC_EXT 0x3234
-#define EGL_DRM_PLANE_EXT 0x3235
-#define EGL_DRM_CONNECTOR_EXT 0x3236
-#endif /* EGL_EXT_output_drm */
-
-#ifndef EGL_EXT_output_openwf
-#define EGL_EXT_output_openwf 1
-#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
-#define EGL_OPENWF_PORT_ID_EXT 0x3239
-#endif /* EGL_EXT_output_openwf */
-
-#ifndef EGL_EXT_pixel_format_float
-#define EGL_EXT_pixel_format_float 1
-#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
-#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
-#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
-#endif /* EGL_EXT_pixel_format_float */
-
-#ifndef EGL_EXT_platform_base
-#define EGL_EXT_platform_base 1
-typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);
-#endif
-#endif /* EGL_EXT_platform_base */
-
-#ifndef EGL_EXT_platform_device
-#define EGL_EXT_platform_device 1
-#define EGL_PLATFORM_DEVICE_EXT 0x313F
-#endif /* EGL_EXT_platform_device */
-
-#ifndef EGL_EXT_platform_wayland
-#define EGL_EXT_platform_wayland 1
-#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
-#endif /* EGL_EXT_platform_wayland */
-
-#ifndef EGL_EXT_platform_x11
-#define EGL_EXT_platform_x11 1
-#define EGL_PLATFORM_X11_EXT 0x31D5
-#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
-#endif /* EGL_EXT_platform_x11 */
-
-#ifndef EGL_EXT_platform_xcb
-#define EGL_EXT_platform_xcb 1
-#define EGL_PLATFORM_XCB_EXT 0x31DC
-#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
-#endif /* EGL_EXT_platform_xcb */
-
-#ifndef EGL_EXT_present_opaque
-#define EGL_EXT_present_opaque 1
-#define EGL_PRESENT_OPAQUE_EXT 0x31DF
-#endif /* EGL_EXT_present_opaque */
-
-#ifndef EGL_EXT_protected_content
-#define EGL_EXT_protected_content 1
-#define EGL_PROTECTED_CONTENT_EXT 0x32C0
-#endif /* EGL_EXT_protected_content */
-
-#ifndef EGL_EXT_protected_surface
-#define EGL_EXT_protected_surface 1
-#endif /* EGL_EXT_protected_surface */
-
-#ifndef EGL_EXT_stream_consumer_egloutput
-#define EGL_EXT_stream_consumer_egloutput 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);
-#endif
-#endif /* EGL_EXT_stream_consumer_egloutput */
-
-#ifndef EGL_EXT_surface_CTA861_3_metadata
-#define EGL_EXT_surface_CTA861_3_metadata 1
-#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
-#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
-#endif /* EGL_EXT_surface_CTA861_3_metadata */
-
-#ifndef EGL_EXT_surface_SMPTE2086_metadata
-#define EGL_EXT_surface_SMPTE2086_metadata 1
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
-#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
-#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
-#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
-#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
-#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
-#define EGL_METADATA_SCALING_EXT 50000
-#endif /* EGL_EXT_surface_SMPTE2086_metadata */
-
-#ifndef EGL_EXT_surface_compression
-#define EGL_EXT_surface_compression 1
-#define EGL_SURFACE_COMPRESSION_EXT 0x34B0
-#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E
-#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE
-#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);
-#endif
-#endif /* EGL_EXT_surface_compression */
-
-#ifndef EGL_EXT_swap_buffers_with_damage
-#define EGL_EXT_swap_buffers_with_damage 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);
-#endif
-#endif /* EGL_EXT_swap_buffers_with_damage */
-
-#ifndef EGL_EXT_sync_reuse
-#define EGL_EXT_sync_reuse 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);
-#endif
-#endif /* EGL_EXT_sync_reuse */
-
-#ifndef EGL_EXT_yuv_surface
-#define EGL_EXT_yuv_surface 1
-#define EGL_YUV_ORDER_EXT 0x3301
-#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
-#define EGL_YUV_SUBSAMPLE_EXT 0x3312
-#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
-#define EGL_YUV_CSC_STANDARD_EXT 0x330A
-#define EGL_YUV_PLANE_BPP_EXT 0x331A
-#define EGL_YUV_BUFFER_EXT 0x3300
-#define EGL_YUV_ORDER_YUV_EXT 0x3302
-#define EGL_YUV_ORDER_YVU_EXT 0x3303
-#define EGL_YUV_ORDER_YUYV_EXT 0x3304
-#define EGL_YUV_ORDER_UYVY_EXT 0x3305
-#define EGL_YUV_ORDER_YVYU_EXT 0x3306
-#define EGL_YUV_ORDER_VYUY_EXT 0x3307
-#define EGL_YUV_ORDER_AYUV_EXT 0x3308
-#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
-#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
-#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
-#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
-#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
-#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
-#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
-#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
-#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
-#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
-#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
-#endif /* EGL_EXT_yuv_surface */
-
-#ifndef EGL_HI_clientpixmap
-#define EGL_HI_clientpixmap 1
-struct EGLClientPixmapHI {
- void *pData;
- EGLint iWidth;
- EGLint iHeight;
- EGLint iStride;
-};
-#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
-typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);
-#endif
-#endif /* EGL_HI_clientpixmap */
-
-#ifndef EGL_HI_colorformats
-#define EGL_HI_colorformats 1
-#define EGL_COLOR_FORMAT_HI 0x8F70
-#define EGL_COLOR_RGB_HI 0x8F71
-#define EGL_COLOR_RGBA_HI 0x8F72
-#define EGL_COLOR_ARGB_HI 0x8F73
-#endif /* EGL_HI_colorformats */
-
-#ifndef EGL_IMG_context_priority
-#define EGL_IMG_context_priority 1
-#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
-#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
-#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
-#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
-#endif /* EGL_IMG_context_priority */
-
-#ifndef EGL_IMG_image_plane_attribs
-#define EGL_IMG_image_plane_attribs 1
-#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
-#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
-#endif /* EGL_IMG_image_plane_attribs */
-
-#ifndef EGL_MESA_drm_image
-#define EGL_MESA_drm_image 1
-#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
-#define EGL_DRM_BUFFER_USE_MESA 0x31D1
-#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
-#define EGL_DRM_BUFFER_MESA 0x31D3
-#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
-#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
-#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
-#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
-#endif
-#endif /* EGL_MESA_drm_image */
-
-#ifndef EGL_MESA_image_dma_buf_export
-#define EGL_MESA_image_dma_buf_export 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);
-EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);
-#endif
-#endif /* EGL_MESA_image_dma_buf_export */
-
-#ifndef EGL_MESA_platform_gbm
-#define EGL_MESA_platform_gbm 1
-#define EGL_PLATFORM_GBM_MESA 0x31D7
-#endif /* EGL_MESA_platform_gbm */
-
-#ifndef EGL_MESA_platform_surfaceless
-#define EGL_MESA_platform_surfaceless 1
-#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
-#endif /* EGL_MESA_platform_surfaceless */
-
-#ifndef EGL_MESA_query_driver
-#define EGL_MESA_query_driver 1
-typedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);
-typedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);
-EGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);
-#endif
-#endif /* EGL_MESA_query_driver */
-
-#ifndef EGL_NOK_swap_region
-#define EGL_NOK_swap_region 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region */
-
-#ifndef EGL_NOK_swap_region2
-#define EGL_NOK_swap_region2 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);
-#endif
-#endif /* EGL_NOK_swap_region2 */
-
-#ifndef EGL_NOK_texture_from_pixmap
-#define EGL_NOK_texture_from_pixmap 1
-#define EGL_Y_INVERTED_NOK 0x307F
-#endif /* EGL_NOK_texture_from_pixmap */
-
-#ifndef EGL_NV_3dvision_surface
-#define EGL_NV_3dvision_surface 1
-#define EGL_AUTO_STEREO_NV 0x3136
-#endif /* EGL_NV_3dvision_surface */
-
-#ifndef EGL_NV_context_priority_realtime
-#define EGL_NV_context_priority_realtime 1
-#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
-#endif /* EGL_NV_context_priority_realtime */
-
-#ifndef EGL_NV_coverage_sample
-#define EGL_NV_coverage_sample 1
-#define EGL_COVERAGE_BUFFERS_NV 0x30E0
-#define EGL_COVERAGE_SAMPLES_NV 0x30E1
-#endif /* EGL_NV_coverage_sample */
-
-#ifndef EGL_NV_coverage_sample_resolve
-#define EGL_NV_coverage_sample_resolve 1
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
-#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
-#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
-#endif /* EGL_NV_coverage_sample_resolve */
-
-#ifndef EGL_NV_cuda_event
-#define EGL_NV_cuda_event 1
-#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
-#define EGL_SYNC_CUDA_EVENT_NV 0x323C
-#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
-#endif /* EGL_NV_cuda_event */
-
-#ifndef EGL_NV_depth_nonlinear
-#define EGL_NV_depth_nonlinear 1
-#define EGL_DEPTH_ENCODING_NV 0x30E2
-#define EGL_DEPTH_ENCODING_NONE_NV 0
-#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
-#endif /* EGL_NV_depth_nonlinear */
-
-#ifndef EGL_NV_device_cuda
-#define EGL_NV_device_cuda 1
-#define EGL_CUDA_DEVICE_NV 0x323A
-#endif /* EGL_NV_device_cuda */
-
-#ifndef EGL_NV_native_query
-#define EGL_NV_native_query 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
-#endif
-#endif /* EGL_NV_native_query */
-
-#ifndef EGL_NV_post_convert_rounding
-#define EGL_NV_post_convert_rounding 1
-#endif /* EGL_NV_post_convert_rounding */
-
-#ifndef EGL_NV_post_sub_buffer
-#define EGL_NV_post_sub_buffer 1
-#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
-#endif
-#endif /* EGL_NV_post_sub_buffer */
-
-#ifndef EGL_NV_quadruple_buffer
-#define EGL_NV_quadruple_buffer 1
-#define EGL_QUADRUPLE_BUFFER_NV 0x3231
-#endif /* EGL_NV_quadruple_buffer */
-
-#ifndef EGL_NV_robustness_video_memory_purge
-#define EGL_NV_robustness_video_memory_purge 1
-#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
-#endif /* EGL_NV_robustness_video_memory_purge */
-
-#ifndef EGL_NV_stream_consumer_eglimage
-#define EGL_NV_stream_consumer_eglimage 1
-#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
-#define EGL_STREAM_IMAGE_ADD_NV 0x3374
-#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
-#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
-typedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);
-EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);
-#endif
-#endif /* EGL_NV_stream_consumer_eglimage */
-
-#ifndef EGL_NV_stream_consumer_gltexture_yuv
-#define EGL_NV_stream_consumer_gltexture_yuv 1
-#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
-#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
-#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);
-#endif
-#endif /* EGL_NV_stream_consumer_gltexture_yuv */
-
-#ifndef EGL_NV_stream_cross_display
-#define EGL_NV_stream_cross_display 1
-#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
-#endif /* EGL_NV_stream_cross_display */
-
-#ifndef EGL_NV_stream_cross_object
-#define EGL_NV_stream_cross_object 1
-#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
-#endif /* EGL_NV_stream_cross_object */
-
-#ifndef EGL_NV_stream_cross_partition
-#define EGL_NV_stream_cross_partition 1
-#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
-#endif /* EGL_NV_stream_cross_partition */
-
-#ifndef EGL_NV_stream_cross_process
-#define EGL_NV_stream_cross_process 1
-#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
-#endif /* EGL_NV_stream_cross_process */
-
-#ifndef EGL_NV_stream_cross_system
-#define EGL_NV_stream_cross_system 1
-#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
-#endif /* EGL_NV_stream_cross_system */
-
-#ifndef EGL_NV_stream_dma
-#define EGL_NV_stream_dma 1
-#define EGL_STREAM_DMA_NV 0x3371
-#define EGL_STREAM_DMA_SERVER_NV 0x3372
-#endif /* EGL_NV_stream_dma */
-
-#ifndef EGL_NV_stream_fifo_next
-#define EGL_NV_stream_fifo_next 1
-#define EGL_PENDING_FRAME_NV 0x3329
-#define EGL_STREAM_TIME_PENDING_NV 0x332A
-#endif /* EGL_NV_stream_fifo_next */
-
-#ifndef EGL_NV_stream_fifo_synchronous
-#define EGL_NV_stream_fifo_synchronous 1
-#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
-#endif /* EGL_NV_stream_fifo_synchronous */
-
-#ifndef EGL_NV_stream_flush
-#define EGL_NV_stream_flush 1
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);
-#endif
-#endif /* EGL_NV_stream_flush */
-
-#ifndef EGL_NV_stream_frame_limits
-#define EGL_NV_stream_frame_limits 1
-#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
-#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
-#endif /* EGL_NV_stream_frame_limits */
-
-#ifndef EGL_NV_stream_metadata
-#define EGL_NV_stream_metadata 1
-#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
-#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
-#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
-#define EGL_PRODUCER_METADATA_NV 0x3253
-#define EGL_CONSUMER_METADATA_NV 0x3254
-#define EGL_PENDING_METADATA_NV 0x3328
-#define EGL_METADATA0_SIZE_NV 0x3255
-#define EGL_METADATA1_SIZE_NV 0x3256
-#define EGL_METADATA2_SIZE_NV 0x3257
-#define EGL_METADATA3_SIZE_NV 0x3258
-#define EGL_METADATA0_TYPE_NV 0x3259
-#define EGL_METADATA1_TYPE_NV 0x325A
-#define EGL_METADATA2_TYPE_NV 0x325B
-#define EGL_METADATA3_TYPE_NV 0x325C
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
-EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);
-#endif
-#endif /* EGL_NV_stream_metadata */
-
-#ifndef EGL_NV_stream_origin
-#define EGL_NV_stream_origin 1
-#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
-#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
-#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
-#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
-#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
-#define EGL_LEFT_NV 0x336B
-#define EGL_RIGHT_NV 0x336C
-#define EGL_TOP_NV 0x336D
-#define EGL_BOTTOM_NV 0x336E
-#define EGL_X_AXIS_NV 0x336F
-#define EGL_Y_AXIS_NV 0x3370
-#endif /* EGL_NV_stream_origin */
-
-#ifndef EGL_NV_stream_remote
-#define EGL_NV_stream_remote 1
-#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
-#define EGL_STREAM_TYPE_NV 0x3241
-#define EGL_STREAM_PROTOCOL_NV 0x3242
-#define EGL_STREAM_ENDPOINT_NV 0x3243
-#define EGL_STREAM_LOCAL_NV 0x3244
-#define EGL_STREAM_PRODUCER_NV 0x3247
-#define EGL_STREAM_CONSUMER_NV 0x3248
-#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
-#endif /* EGL_NV_stream_remote */
-
-#ifndef EGL_NV_stream_reset
-#define EGL_NV_stream_reset 1
-#define EGL_SUPPORT_RESET_NV 0x3334
-#define EGL_SUPPORT_REUSE_NV 0x3335
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);
-#endif
-#endif /* EGL_NV_stream_reset */
-
-#ifndef EGL_NV_stream_socket
-#define EGL_NV_stream_socket 1
-#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
-#define EGL_SOCKET_HANDLE_NV 0x324C
-#define EGL_SOCKET_TYPE_NV 0x324D
-#endif /* EGL_NV_stream_socket */
-
-#ifndef EGL_NV_stream_socket_inet
-#define EGL_NV_stream_socket_inet 1
-#define EGL_SOCKET_TYPE_INET_NV 0x324F
-#endif /* EGL_NV_stream_socket_inet */
-
-#ifndef EGL_NV_stream_socket_unix
-#define EGL_NV_stream_socket_unix 1
-#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
-#endif /* EGL_NV_stream_socket_unix */
-
-#ifndef EGL_NV_stream_sync
-#define EGL_NV_stream_sync 1
-#define EGL_SYNC_NEW_FRAME_NV 0x321F
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);
-#endif
-#endif /* EGL_NV_stream_sync */
-
-#ifndef EGL_NV_sync
-#define EGL_NV_sync 1
-typedef void *EGLSyncNV;
-typedef khronos_utime_nanoseconds_t EGLTimeNV;
-#ifdef KHRONOS_SUPPORT_INT64
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
-#define EGL_SYNC_STATUS_NV 0x30E7
-#define EGL_SIGNALED_NV 0x30E8
-#define EGL_UNSIGNALED_NV 0x30E9
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
-#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
-#define EGL_ALREADY_SIGNALED_NV 0x30EA
-#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
-#define EGL_CONDITION_SATISFIED_NV 0x30EC
-#define EGL_SYNC_TYPE_NV 0x30ED
-#define EGL_SYNC_CONDITION_NV 0x30EE
-#define EGL_SYNC_FENCE_NV 0x30EF
-#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV,0)
-typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);
-EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_sync */
-
-#ifndef EGL_NV_system_time
-#define EGL_NV_system_time 1
-typedef khronos_utime_nanoseconds_t EGLuint64NV;
-#ifdef KHRONOS_SUPPORT_INT64
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
-typedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);
-EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
-#endif
-#endif /* KHRONOS_SUPPORT_INT64 */
-#endif /* EGL_NV_system_time */
-
-#ifndef EGL_NV_triple_buffer
-#define EGL_NV_triple_buffer 1
-#define EGL_TRIPLE_BUFFER_NV 0x3230
-#endif /* EGL_NV_triple_buffer */
-
-#ifndef EGL_TIZEN_image_native_buffer
-#define EGL_TIZEN_image_native_buffer 1
-#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
-#endif /* EGL_TIZEN_image_native_buffer */
-
-#ifndef EGL_TIZEN_image_native_surface
-#define EGL_TIZEN_image_native_surface 1
-#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
-#endif /* EGL_TIZEN_image_native_surface */
-
-#ifndef EGL_WL_bind_wayland_display
-#define EGL_WL_bind_wayland_display 1
-#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
-#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
-#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
-struct wl_display;
-struct wl_resource;
-#define EGL_WAYLAND_BUFFER_WL 0x31D5
-#define EGL_WAYLAND_PLANE_WL 0x31D6
-#define EGL_TEXTURE_Y_U_V_WL 0x31D7
-#define EGL_TEXTURE_Y_UV_WL 0x31D8
-#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
-#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
-#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
-#endif
-#endif /* EGL_WL_bind_wayland_display */
-
-#ifndef EGL_WL_create_wayland_buffer_from_image
-#define EGL_WL_create_wayland_buffer_from_image 1
-#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
-struct wl_buffer;
-typedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);
-#endif
-#endif /* EGL_WL_create_wayland_buffer_from_image */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __eglext_h_ */
-
-#endif /* _MSC_VER */
diff --git a/libs/SDL2/include/SDL_endian.h b/libs/SDL2/include/SDL_endian.h
deleted file mode 100644
index 71bc06729..000000000
--- a/libs/SDL2/include/SDL_endian.h
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_endian.h
- *
- * Functions for reading and writing endian-specific values
- */
-
-#ifndef SDL_endian_h_
-#define SDL_endian_h_
-
-#include "SDL_stdinc.h"
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
-/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,
- so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */
-#ifdef __clang__
-#ifndef __PRFCHWINTRIN_H
-#define __PRFCHWINTRIN_H
-static __inline__ void __attribute__((__always_inline__, __nodebug__))
-_m_prefetch(void *__P)
-{
- __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */);
-}
-#endif /* __PRFCHWINTRIN_H */
-#endif /* __clang__ */
-
-#include
-#endif
-
-/**
- * \name The two types of endianness
- */
-/* @{ */
-#define SDL_LIL_ENDIAN 1234
-#define SDL_BIG_ENDIAN 4321
-/* @} */
-
-#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */
-#ifdef __linux__
-#include
-#define SDL_BYTEORDER __BYTE_ORDER
-#elif defined(__OpenBSD__) || defined(__DragonFly__)
-#include
-#define SDL_BYTEORDER BYTE_ORDER
-#elif defined(__FreeBSD__) || defined(__NetBSD__)
-#include
-#define SDL_BYTEORDER BYTE_ORDER
-/* predefs from newer gcc and clang versions: */
-#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__)
-#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-#define SDL_BYTEORDER SDL_LIL_ENDIAN
-#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
-#define SDL_BYTEORDER SDL_BIG_ENDIAN
-#else
-#error Unsupported endianness
-#endif /**/
-#else
-#if defined(__hppa__) || \
- defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \
- (defined(__MIPS__) && defined(__MIPSEB__)) || \
- defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \
- defined(__sparc__)
-#define SDL_BYTEORDER SDL_BIG_ENDIAN
-#else
-#define SDL_BYTEORDER SDL_LIL_ENDIAN
-#endif
-#endif /* __linux__ */
-#endif /* !SDL_BYTEORDER */
-
-#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */
-/* predefs from newer gcc versions: */
-#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__)
-#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN
-#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__)
-#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN
-#else
-#error Unsupported endianness
-#endif /**/
-#elif defined(__MAVERICK__)
-/* For Maverick, float words are always little-endian. */
-#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN
-#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__)
-/* For FPA, float words are always big-endian. */
-#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN
-#else
-/* By default, assume that floats words follow the memory system mode. */
-#define SDL_FLOATWORDORDER SDL_BYTEORDER
-#endif /* __FLOAT_WORD_ORDER__ */
-#endif /* !SDL_FLOATWORDORDER */
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file SDL_endian.h
- */
-
-/* various modern compilers may have builtin swap */
-#if defined(__GNUC__) || defined(__clang__)
-# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \
- (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))
-# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \
- (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
-# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \
- (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
-
- /* this one is broken */
-# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95)
-#else
-# define HAS_BUILTIN_BSWAP16 0
-# define HAS_BUILTIN_BSWAP32 0
-# define HAS_BUILTIN_BSWAP64 0
-# define HAS_BROKEN_BSWAP 0
-#endif
-
-#if HAS_BUILTIN_BSWAP16
-#define SDL_Swap16(x) __builtin_bswap16(x)
-#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
-#pragma intrinsic(_byteswap_ushort)
-#define SDL_Swap16(x) _byteswap_ushort(x)
-#elif defined(__i386__) && !HAS_BROKEN_BSWAP
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
- __asm__("xchgb %b0,%h0": "=q"(x):"0"(x));
- return x;
-}
-#elif defined(__x86_64__)
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
- __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x));
- return x;
-}
-#elif (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
- int result;
-
- __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x));
- return (Uint16)result;
-}
-#elif (defined(__m68k__) && !defined(__mcoldfire__))
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
- __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc");
- return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern __inline Uint16 SDL_Swap16(Uint16);
-#pragma aux SDL_Swap16 = \
- "xchg al, ah" \
- parm [ax] \
- modify [ax];
-#else
-SDL_FORCE_INLINE Uint16
-SDL_Swap16(Uint16 x)
-{
- return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
-}
-#endif
-
-#if HAS_BUILTIN_BSWAP32
-#define SDL_Swap32(x) __builtin_bswap32(x)
-#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
-#pragma intrinsic(_byteswap_ulong)
-#define SDL_Swap32(x) _byteswap_ulong(x)
-#elif defined(__i386__) && !HAS_BROKEN_BSWAP
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
- __asm__("bswap %0": "=r"(x):"0"(x));
- return x;
-}
-#elif defined(__x86_64__)
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
- __asm__("bswapl %0": "=r"(x):"0"(x));
- return x;
-}
-#elif (defined(__powerpc__) || defined(__ppc__))
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
- Uint32 result;
-
- __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x));
- __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x));
- __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x));
- return result;
-}
-#elif (defined(__m68k__) && !defined(__mcoldfire__))
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
- __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc");
- return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern __inline Uint32 SDL_Swap32(Uint32);
-#pragma aux SDL_Swap32 = \
- "bswap eax" \
- parm [eax] \
- modify [eax];
-#else
-SDL_FORCE_INLINE Uint32
-SDL_Swap32(Uint32 x)
-{
- return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
- ((x >> 8) & 0x0000FF00) | (x >> 24)));
-}
-#endif
-
-#if HAS_BUILTIN_BSWAP64
-#define SDL_Swap64(x) __builtin_bswap64(x)
-#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)
-#pragma intrinsic(_byteswap_uint64)
-#define SDL_Swap64(x) _byteswap_uint64(x)
-#elif defined(__i386__) && !HAS_BROKEN_BSWAP
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
- union {
- struct {
- Uint32 a, b;
- } s;
- Uint64 u;
- } v;
- v.u = x;
- __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
- : "=r"(v.s.a), "=r"(v.s.b)
- : "0" (v.s.a), "1"(v.s.b));
- return v.u;
-}
-#elif defined(__x86_64__)
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
- __asm__("bswapq %0": "=r"(x):"0"(x));
- return x;
-}
-#elif defined(__WATCOMC__) && defined(__386__)
-extern __inline Uint64 SDL_Swap64(Uint64);
-#pragma aux SDL_Swap64 = \
- "bswap eax" \
- "bswap edx" \
- "xchg eax,edx" \
- parm [eax edx] \
- modify [eax edx];
-#else
-SDL_FORCE_INLINE Uint64
-SDL_Swap64(Uint64 x)
-{
- Uint32 hi, lo;
-
- /* Separate into high and low 32-bit values and swap them */
- lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
- x >>= 32;
- hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
- x = SDL_Swap32(lo);
- x <<= 32;
- x |= SDL_Swap32(hi);
- return (x);
-}
-#endif
-
-
-SDL_FORCE_INLINE float
-SDL_SwapFloat(float x)
-{
- union {
- float f;
- Uint32 ui32;
- } swapper;
- swapper.f = x;
- swapper.ui32 = SDL_Swap32(swapper.ui32);
- return swapper.f;
-}
-
-/* remove extra macros */
-#undef HAS_BROKEN_BSWAP
-#undef HAS_BUILTIN_BSWAP16
-#undef HAS_BUILTIN_BSWAP32
-#undef HAS_BUILTIN_BSWAP64
-
-/**
- * \name Swap to native
- * Byteswap item from the specified endianness to the native endianness.
- */
-/* @{ */
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-#define SDL_SwapLE16(X) (X)
-#define SDL_SwapLE32(X) (X)
-#define SDL_SwapLE64(X) (X)
-#define SDL_SwapFloatLE(X) (X)
-#define SDL_SwapBE16(X) SDL_Swap16(X)
-#define SDL_SwapBE32(X) SDL_Swap32(X)
-#define SDL_SwapBE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatBE(X) SDL_SwapFloat(X)
-#else
-#define SDL_SwapLE16(X) SDL_Swap16(X)
-#define SDL_SwapLE32(X) SDL_Swap32(X)
-#define SDL_SwapLE64(X) SDL_Swap64(X)
-#define SDL_SwapFloatLE(X) SDL_SwapFloat(X)
-#define SDL_SwapBE16(X) (X)
-#define SDL_SwapBE32(X) (X)
-#define SDL_SwapBE64(X) (X)
-#define SDL_SwapFloatBE(X) (X)
-#endif
-/* @} *//* Swap to native */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_endian_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_error.h b/libs/SDL2/include/SDL_error.h
deleted file mode 100644
index 31c22616c..000000000
--- a/libs/SDL2/include/SDL_error.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_error.h
- *
- * Simple error message routines for SDL.
- */
-
-#ifndef SDL_error_h_
-#define SDL_error_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public functions */
-
-
-/**
- * Set the SDL error message for the current thread.
- *
- * Calling this function will replace any previous error message that was set.
- *
- * This function always returns -1, since SDL frequently uses -1 to signify an
- * failing result, leading to this idiom:
- *
- * ```c
- * if (error_code) {
- * return SDL_SetError("This operation has failed: %d", error_code);
- * }
- * ```
- *
- * \param fmt a printf()-style message format string
- * \param ... additional parameters matching % tokens in the `fmt` string, if
- * any
- * \returns always -1.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ClearError
- * \sa SDL_GetError
- */
-extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);
-
-/**
- * Retrieve a message about the last error that occurred on the current
- * thread.
- *
- * It is possible for multiple errors to occur before calling SDL_GetError().
- * Only the last error is returned.
- *
- * The message is only applicable when an SDL function has signaled an error.
- * You must check the return values of SDL function calls to determine when to
- * appropriately call SDL_GetError(). You should *not* use the results of
- * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set
- * an error string even when reporting success.
- *
- * SDL will *not* clear the error string for successful API calls. You *must*
- * check return values for failure cases before you can assume the error
- * string applies.
- *
- * Error strings are set per-thread, so an error set in a different thread
- * will not interfere with the current thread's operation.
- *
- * The returned string is internally allocated and must not be freed by the
- * application.
- *
- * \returns a message with information about the specific error that occurred,
- * or an empty string if there hasn't been an error message set since
- * the last call to SDL_ClearError(). The message is only applicable
- * when an SDL function has signaled an error. You must check the
- * return values of SDL function calls to determine when to
- * appropriately call SDL_GetError().
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ClearError
- * \sa SDL_SetError
- */
-extern DECLSPEC const char *SDLCALL SDL_GetError(void);
-
-/**
- * Get the last error message that was set for the current thread.
- *
- * This allows the caller to copy the error string into a provided buffer, but
- * otherwise operates exactly the same as SDL_GetError().
- *
- * \param errstr A buffer to fill with the last error message that was set for
- * the current thread
- * \param maxlen The size of the buffer pointed to by the errstr parameter
- * \returns the pointer passed in as the `errstr` parameter.
- *
- * \since This function is available since SDL 2.0.14.
- *
- * \sa SDL_GetError
- */
-extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen);
-
-/**
- * Clear any previous error message for this thread.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetError
- * \sa SDL_SetError
- */
-extern DECLSPEC void SDLCALL SDL_ClearError(void);
-
-/**
- * \name Internal error functions
- *
- * \internal
- * Private error reporting function - used internally.
- */
-/* @{ */
-#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM)
-#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED)
-#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param))
-typedef enum
-{
- SDL_ENOMEM,
- SDL_EFREAD,
- SDL_EFWRITE,
- SDL_EFSEEK,
- SDL_UNSUPPORTED,
- SDL_LASTERROR
-} SDL_errorcode;
-/* SDL_Error() unconditionally returns -1. */
-extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);
-/* @} *//* Internal error functions */
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_error_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_events.h b/libs/SDL2/include/SDL_events.h
deleted file mode 100644
index 9d0970318..000000000
--- a/libs/SDL2/include/SDL_events.h
+++ /dev/null
@@ -1,1166 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_events.h
- *
- * Include file for SDL event handling.
- */
-
-#ifndef SDL_events_h_
-#define SDL_events_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-#include "SDL_keyboard.h"
-#include "SDL_mouse.h"
-#include "SDL_joystick.h"
-#include "SDL_gamecontroller.h"
-#include "SDL_quit.h"
-#include "SDL_gesture.h"
-#include "SDL_touch.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* General keyboard/mouse state definitions */
-#define SDL_RELEASED 0
-#define SDL_PRESSED 1
-
-/**
- * The types of events that can be delivered.
- */
-typedef enum
-{
- SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */
-
- /* Application events */
- SDL_QUIT = 0x100, /**< User-requested quit */
-
- /* These application events have special meaning on iOS, see README-ios.md for details */
- SDL_APP_TERMINATING, /**< The application is being terminated by the OS
- Called on iOS in applicationWillTerminate()
- Called on Android in onDestroy()
- */
- SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible.
- Called on iOS in applicationDidReceiveMemoryWarning()
- Called on Android in onLowMemory()
- */
- SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
- Called on iOS in applicationWillResignActive()
- Called on Android in onPause()
- */
- SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
- Called on iOS in applicationDidEnterBackground()
- Called on Android in onPause()
- */
- SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
- Called on iOS in applicationWillEnterForeground()
- Called on Android in onResume()
- */
- SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
- Called on iOS in applicationDidBecomeActive()
- Called on Android in onResume()
- */
-
- SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */
-
- /* Display events */
- SDL_DISPLAYEVENT = 0x150, /**< Display state change */
-
- /* Window events */
- SDL_WINDOWEVENT = 0x200, /**< Window state change */
- SDL_SYSWMEVENT, /**< System specific event */
-
- /* Keyboard events */
- SDL_KEYDOWN = 0x300, /**< Key pressed */
- SDL_KEYUP, /**< Key released */
- SDL_TEXTEDITING, /**< Keyboard text editing (composition) */
- SDL_TEXTINPUT, /**< Keyboard text input */
- SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an
- input language or keyboard layout change.
- */
- SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */
-
- /* Mouse events */
- SDL_MOUSEMOTION = 0x400, /**< Mouse moved */
- SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */
- SDL_MOUSEBUTTONUP, /**< Mouse button released */
- SDL_MOUSEWHEEL, /**< Mouse wheel motion */
-
- /* Joystick events */
- SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */
- SDL_JOYBALLMOTION, /**< Joystick trackball motion */
- SDL_JOYHATMOTION, /**< Joystick hat position change */
- SDL_JOYBUTTONDOWN, /**< Joystick button pressed */
- SDL_JOYBUTTONUP, /**< Joystick button released */
- SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
- SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
- SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */
-
- /* Game controller events */
- SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
- SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */
- SDL_CONTROLLERBUTTONUP, /**< Game controller button released */
- SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */
- SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */
- SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */
- SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */
- SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */
- SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */
- SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */
-
- /* Touch events */
- SDL_FINGERDOWN = 0x700,
- SDL_FINGERUP,
- SDL_FINGERMOTION,
-
- /* Gesture events */
- SDL_DOLLARGESTURE = 0x800,
- SDL_DOLLARRECORD,
- SDL_MULTIGESTURE,
-
- /* Clipboard events */
- SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */
-
- /* Drag and drop events */
- SDL_DROPFILE = 0x1000, /**< The system requests a file open */
- SDL_DROPTEXT, /**< text/plain drag-and-drop event */
- SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */
- SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */
-
- /* Audio hotplug events */
- SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
- SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */
-
- /* Sensor events */
- SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */
-
- /* Render events */
- SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
- SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
-
- /* Internal events */
- SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */
-
- /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
- * and should be allocated with SDL_RegisterEvents()
- */
- SDL_USEREVENT = 0x8000,
-
- /**
- * This last event is only for bounding internal arrays
- */
- SDL_LASTEVENT = 0xFFFF
-} SDL_EventType;
-
-/**
- * \brief Fields shared by every event
- */
-typedef struct SDL_CommonEvent
-{
- Uint32 type;
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_CommonEvent;
-
-/**
- * \brief Display state change event data (event.display.*)
- */
-typedef struct SDL_DisplayEvent
-{
- Uint32 type; /**< ::SDL_DISPLAYEVENT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 display; /**< The associated display index */
- Uint8 event; /**< ::SDL_DisplayEventID */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
- Sint32 data1; /**< event dependent data */
-} SDL_DisplayEvent;
-
-/**
- * \brief Window state change event data (event.window.*)
- */
-typedef struct SDL_WindowEvent
-{
- Uint32 type; /**< ::SDL_WINDOWEVENT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The associated window */
- Uint8 event; /**< ::SDL_WindowEventID */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
- Sint32 data1; /**< event dependent data */
- Sint32 data2; /**< event dependent data */
-} SDL_WindowEvent;
-
-/**
- * \brief Keyboard button event structure (event.key.*)
- */
-typedef struct SDL_KeyboardEvent
-{
- Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with keyboard focus, if any */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
- Uint8 repeat; /**< Non-zero if this is a key repeat */
- Uint8 padding2;
- Uint8 padding3;
- SDL_Keysym keysym; /**< The key that was pressed or released */
-} SDL_KeyboardEvent;
-
-#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
-/**
- * \brief Keyboard text editing event structure (event.edit.*)
- */
-typedef struct SDL_TextEditingEvent
-{
- Uint32 type; /**< ::SDL_TEXTEDITING */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with keyboard focus, if any */
- char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */
- Sint32 start; /**< The start cursor of selected editing text */
- Sint32 length; /**< The length of selected editing text */
-} SDL_TextEditingEvent;
-
-/**
- * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be
- * truncated if stored in the text buffer SDL_TextEditingEvent
- */
-typedef struct SDL_TextEditingExtEvent
-{
- Uint32 type; /**< ::SDL_TEXTEDITING_EXT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with keyboard focus, if any */
- char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */
- Sint32 start; /**< The start cursor of selected editing text */
- Sint32 length; /**< The length of selected editing text */
-} SDL_TextEditingExtEvent;
-
-#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
-/**
- * \brief Keyboard text input event structure (event.text.*)
- */
-typedef struct SDL_TextInputEvent
-{
- Uint32 type; /**< ::SDL_TEXTINPUT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with keyboard focus, if any */
- char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */
-} SDL_TextInputEvent;
-
-/**
- * \brief Mouse motion event structure (event.motion.*)
- */
-typedef struct SDL_MouseMotionEvent
-{
- Uint32 type; /**< ::SDL_MOUSEMOTION */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with mouse focus, if any */
- Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
- Uint32 state; /**< The current button state */
- Sint32 x; /**< X coordinate, relative to window */
- Sint32 y; /**< Y coordinate, relative to window */
- Sint32 xrel; /**< The relative motion in the X direction */
- Sint32 yrel; /**< The relative motion in the Y direction */
-} SDL_MouseMotionEvent;
-
-/**
- * \brief Mouse button event structure (event.button.*)
- */
-typedef struct SDL_MouseButtonEvent
-{
- Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with mouse focus, if any */
- Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
- Uint8 button; /**< The mouse button index */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
- Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */
- Uint8 padding1;
- Sint32 x; /**< X coordinate, relative to window */
- Sint32 y; /**< Y coordinate, relative to window */
-} SDL_MouseButtonEvent;
-
-/**
- * \brief Mouse wheel event structure (event.wheel.*)
- */
-typedef struct SDL_MouseWheelEvent
-{
- Uint32 type; /**< ::SDL_MOUSEWHEEL */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The window with mouse focus, if any */
- Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
- Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */
- Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */
- Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
- float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */
- float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */
- Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */
- Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */
-} SDL_MouseWheelEvent;
-
-/**
- * \brief Joystick axis motion event structure (event.jaxis.*)
- */
-typedef struct SDL_JoyAxisEvent
-{
- Uint32 type; /**< ::SDL_JOYAXISMOTION */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 axis; /**< The joystick axis index */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
- Sint16 value; /**< The axis value (range: -32768 to 32767) */
- Uint16 padding4;
-} SDL_JoyAxisEvent;
-
-/**
- * \brief Joystick trackball motion event structure (event.jball.*)
- */
-typedef struct SDL_JoyBallEvent
-{
- Uint32 type; /**< ::SDL_JOYBALLMOTION */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 ball; /**< The joystick trackball index */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
- Sint16 xrel; /**< The relative motion in the X direction */
- Sint16 yrel; /**< The relative motion in the Y direction */
-} SDL_JoyBallEvent;
-
-/**
- * \brief Joystick hat position change event structure (event.jhat.*)
- */
-typedef struct SDL_JoyHatEvent
-{
- Uint32 type; /**< ::SDL_JOYHATMOTION */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 hat; /**< The joystick hat index */
- Uint8 value; /**< The hat position value.
- * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
- * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
- * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
- *
- * Note that zero means the POV is centered.
- */
- Uint8 padding1;
- Uint8 padding2;
-} SDL_JoyHatEvent;
-
-/**
- * \brief Joystick button event structure (event.jbutton.*)
- */
-typedef struct SDL_JoyButtonEvent
-{
- Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 button; /**< The joystick button index */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
- Uint8 padding1;
- Uint8 padding2;
-} SDL_JoyButtonEvent;
-
-/**
- * \brief Joystick device event structure (event.jdevice.*)
- */
-typedef struct SDL_JoyDeviceEvent
-{
- Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
-} SDL_JoyDeviceEvent;
-
-/**
- * \brief Joysick battery level change event structure (event.jbattery.*)
- */
-typedef struct SDL_JoyBatteryEvent
-{
- Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- SDL_JoystickPowerLevel level; /**< The joystick battery level */
-} SDL_JoyBatteryEvent;
-
-/**
- * \brief Game controller axis motion event structure (event.caxis.*)
- */
-typedef struct SDL_ControllerAxisEvent
-{
- Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
- Sint16 value; /**< The axis value (range: -32768 to 32767) */
- Uint16 padding4;
-} SDL_ControllerAxisEvent;
-
-
-/**
- * \brief Game controller button event structure (event.cbutton.*)
- */
-typedef struct SDL_ControllerButtonEvent
-{
- Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Uint8 button; /**< The controller button (SDL_GameControllerButton) */
- Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */
- Uint8 padding1;
- Uint8 padding2;
-} SDL_ControllerButtonEvent;
-
-
-/**
- * \brief Controller device event structure (event.cdevice.*)
- */
-typedef struct SDL_ControllerDeviceEvent
-{
- Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
-} SDL_ControllerDeviceEvent;
-
-/**
- * \brief Game controller touchpad event structure (event.ctouchpad.*)
- */
-typedef struct SDL_ControllerTouchpadEvent
-{
- Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Sint32 touchpad; /**< The index of the touchpad */
- Sint32 finger; /**< The index of the finger on the touchpad */
- float x; /**< Normalized in the range 0...1 with 0 being on the left */
- float y; /**< Normalized in the range 0...1 with 0 being at the top */
- float pressure; /**< Normalized in the range 0...1 */
-} SDL_ControllerTouchpadEvent;
-
-/**
- * \brief Game controller sensor event structure (event.csensor.*)
- */
-typedef struct SDL_ControllerSensorEvent
-{
- Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_JoystickID which; /**< The joystick instance id */
- Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */
- float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */
- Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */
-} SDL_ControllerSensorEvent;
-
-/**
- * \brief Audio device event structure (event.adevice.*)
- */
-typedef struct SDL_AudioDeviceEvent
-{
- Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
- Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */
- Uint8 padding1;
- Uint8 padding2;
- Uint8 padding3;
-} SDL_AudioDeviceEvent;
-
-
-/**
- * \brief Touch finger event structure (event.tfinger.*)
- */
-typedef struct SDL_TouchFingerEvent
-{
- Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_TouchID touchId; /**< The touch device id */
- SDL_FingerID fingerId;
- float x; /**< Normalized in the range 0...1 */
- float y; /**< Normalized in the range 0...1 */
- float dx; /**< Normalized in the range -1...1 */
- float dy; /**< Normalized in the range -1...1 */
- float pressure; /**< Normalized in the range 0...1 */
- Uint32 windowID; /**< The window underneath the finger, if any */
-} SDL_TouchFingerEvent;
-
-
-/**
- * \brief Multiple Finger Gesture Event (event.mgesture.*)
- */
-typedef struct SDL_MultiGestureEvent
-{
- Uint32 type; /**< ::SDL_MULTIGESTURE */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_TouchID touchId; /**< The touch device id */
- float dTheta;
- float dDist;
- float x;
- float y;
- Uint16 numFingers;
- Uint16 padding;
-} SDL_MultiGestureEvent;
-
-
-/**
- * \brief Dollar Gesture Event (event.dgesture.*)
- */
-typedef struct SDL_DollarGestureEvent
-{
- Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_TouchID touchId; /**< The touch device id */
- SDL_GestureID gestureId;
- Uint32 numFingers;
- float error;
- float x; /**< Normalized center of gesture */
- float y; /**< Normalized center of gesture */
-} SDL_DollarGestureEvent;
-
-
-/**
- * \brief An event used to request a file open by the system (event.drop.*)
- * This event is enabled by default, you can disable it with SDL_EventState().
- * \note If this event is enabled, you must free the filename in the event.
- */
-typedef struct SDL_DropEvent
-{
- Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
- Uint32 windowID; /**< The window that was dropped on, if any */
-} SDL_DropEvent;
-
-
-/**
- * \brief Sensor event structure (event.sensor.*)
- */
-typedef struct SDL_SensorEvent
-{
- Uint32 type; /**< ::SDL_SENSORUPDATE */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Sint32 which; /**< The instance ID of the sensor */
- float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
- Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */
-} SDL_SensorEvent;
-
-/**
- * \brief The "quit requested" event
- */
-typedef struct SDL_QuitEvent
-{
- Uint32 type; /**< ::SDL_QUIT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_QuitEvent;
-
-/**
- * \brief OS Specific event
- */
-typedef struct SDL_OSEvent
-{
- Uint32 type; /**< ::SDL_QUIT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
-} SDL_OSEvent;
-
-/**
- * \brief A user-defined event type (event.user.*)
- */
-typedef struct SDL_UserEvent
-{
- Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- Uint32 windowID; /**< The associated window if any */
- Sint32 code; /**< User defined event code */
- void *data1; /**< User defined data pointer */
- void *data2; /**< User defined data pointer */
-} SDL_UserEvent;
-
-
-struct SDL_SysWMmsg;
-typedef struct SDL_SysWMmsg SDL_SysWMmsg;
-
-/**
- * \brief A video driver dependent system event (event.syswm.*)
- * This event is disabled by default, you can enable it with SDL_EventState()
- *
- * \note If you want to use this event, you should include SDL_syswm.h.
- */
-typedef struct SDL_SysWMEvent
-{
- Uint32 type; /**< ::SDL_SYSWMEVENT */
- Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
- SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */
-} SDL_SysWMEvent;
-
-/**
- * \brief General event structure
- */
-typedef union SDL_Event
-{
- Uint32 type; /**< Event type, shared with all events */
- SDL_CommonEvent common; /**< Common event data */
- SDL_DisplayEvent display; /**< Display event data */
- SDL_WindowEvent window; /**< Window event data */
- SDL_KeyboardEvent key; /**< Keyboard event data */
- SDL_TextEditingEvent edit; /**< Text editing event data */
- SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */
- SDL_TextInputEvent text; /**< Text input event data */
- SDL_MouseMotionEvent motion; /**< Mouse motion event data */
- SDL_MouseButtonEvent button; /**< Mouse button event data */
- SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */
- SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */
- SDL_JoyBallEvent jball; /**< Joystick ball event data */
- SDL_JoyHatEvent jhat; /**< Joystick hat event data */
- SDL_JoyButtonEvent jbutton; /**< Joystick button event data */
- SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */
- SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */
- SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */
- SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */
- SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */
- SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */
- SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */
- SDL_AudioDeviceEvent adevice; /**< Audio device event data */
- SDL_SensorEvent sensor; /**< Sensor event data */
- SDL_QuitEvent quit; /**< Quit request event data */
- SDL_UserEvent user; /**< Custom event data */
- SDL_SysWMEvent syswm; /**< System dependent window event data */
- SDL_TouchFingerEvent tfinger; /**< Touch finger event data */
- SDL_MultiGestureEvent mgesture; /**< Gesture event data */
- SDL_DollarGestureEvent dgesture; /**< Gesture event data */
- SDL_DropEvent drop; /**< Drag and drop event data */
-
- /* This is necessary for ABI compatibility between Visual C++ and GCC.
- Visual C++ will respect the push pack pragma and use 52 bytes (size of
- SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit
- architectures) for this union, and GCC will use the alignment of the
- largest datatype within the union, which is 8 bytes on 64-bit
- architectures.
-
- So... we'll add padding to force the size to be 56 bytes for both.
-
- On architectures where pointers are 16 bytes, this needs rounding up to
- the next multiple of 16, 64, and on architectures where pointers are
- even larger the size of SDL_UserEvent will dominate as being 3 pointers.
- */
- Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)];
-} SDL_Event;
-
-/* Make sure we haven't broken binary compatibility */
-SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding));
-
-
-/* Function prototypes */
-
-/**
- * Pump the event loop, gathering events from the input devices.
- *
- * This function updates the event queue and internal input device state.
- *
- * **WARNING**: This should only be run in the thread that initialized the
- * video subsystem, and for extra safety, you should consider only doing those
- * things on the main thread in any case.
- *
- * SDL_PumpEvents() gathers all the pending input information from devices and
- * places it in the event queue. Without calls to SDL_PumpEvents() no events
- * would ever be placed on the queue. Often the need for calls to
- * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and
- * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not
- * polling or waiting for events (e.g. you are filtering them), then you must
- * call SDL_PumpEvents() to force an event queue update.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PollEvent
- * \sa SDL_WaitEvent
- */
-extern DECLSPEC void SDLCALL SDL_PumpEvents(void);
-
-/* @{ */
-typedef enum
-{
- SDL_ADDEVENT,
- SDL_PEEKEVENT,
- SDL_GETEVENT
-} SDL_eventaction;
-
-/**
- * Check the event queue for messages and optionally return them.
- *
- * `action` may be any of the following:
- *
- * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the
- * event queue.
- * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue,
- * within the specified minimum and maximum type, will be returned to the
- * caller and will _not_ be removed from the queue.
- * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue,
- * within the specified minimum and maximum type, will be returned to the
- * caller and will be removed from the queue.
- *
- * You may have to call SDL_PumpEvents() before calling this function.
- * Otherwise, the events may not be ready to be filtered when you call
- * SDL_PeepEvents().
- *
- * This function is thread-safe.
- *
- * \param events destination buffer for the retrieved events
- * \param numevents if action is SDL_ADDEVENT, the number of events to add
- * back to the event queue; if action is SDL_PEEKEVENT or
- * SDL_GETEVENT, the maximum number of events to retrieve
- * \param action action to take; see [[#action|Remarks]] for details
- * \param minType minimum value of the event type to be considered;
- * SDL_FIRSTEVENT is a safe choice
- * \param maxType maximum value of the event type to be considered;
- * SDL_LASTEVENT is a safe choice
- * \returns the number of events actually stored or a negative error code on
- * failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PollEvent
- * \sa SDL_PumpEvents
- * \sa SDL_PushEvent
- */
-extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,
- SDL_eventaction action,
- Uint32 minType, Uint32 maxType);
-/* @} */
-
-/**
- * Check for the existence of a certain event type in the event queue.
- *
- * If you need to check for a range of event types, use SDL_HasEvents()
- * instead.
- *
- * \param type the type of event to be queried; see SDL_EventType for details
- * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if
- * events matching `type` are not present.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HasEvents
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);
-
-
-/**
- * Check for the existence of certain event types in the event queue.
- *
- * If you need to check for a single event type, use SDL_HasEvent() instead.
- *
- * \param minType the low end of event type to be queried, inclusive; see
- * SDL_EventType for details
- * \param maxType the high end of event type to be queried, inclusive; see
- * SDL_EventType for details
- * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are
- * present, or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HasEvents
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);
-
-/**
- * Clear events of a specific type from the event queue.
- *
- * This will unconditionally remove any events from the queue that match
- * `type`. If you need to remove a range of event types, use SDL_FlushEvents()
- * instead.
- *
- * It's also normal to just ignore events you don't care about in your event
- * loop without calling this function.
- *
- * This function only affects currently queued events. If you want to make
- * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
- * on the main thread immediately before the flush call.
- *
- * \param type the type of event to be cleared; see SDL_EventType for details
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_FlushEvents
- */
-extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);
-
-/**
- * Clear events of a range of types from the event queue.
- *
- * This will unconditionally remove any events from the queue that are in the
- * range of `minType` to `maxType`, inclusive. If you need to remove a single
- * event type, use SDL_FlushEvent() instead.
- *
- * It's also normal to just ignore events you don't care about in your event
- * loop without calling this function.
- *
- * This function only affects currently queued events. If you want to make
- * sure that all pending OS events are flushed, you can call SDL_PumpEvents()
- * on the main thread immediately before the flush call.
- *
- * \param minType the low end of event type to be cleared, inclusive; see
- * SDL_EventType for details
- * \param maxType the high end of event type to be cleared, inclusive; see
- * SDL_EventType for details
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_FlushEvent
- */
-extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
-
-/**
- * Poll for currently pending events.
- *
- * If `event` is not NULL, the next event is removed from the queue and stored
- * in the SDL_Event structure pointed to by `event`. The 1 returned refers to
- * this event, immediately stored in the SDL Event structure -- not an event
- * to follow.
- *
- * If `event` is NULL, it simply returns 1 if there is an event in the queue,
- * but will not remove it from the queue.
- *
- * As this function may implicitly call SDL_PumpEvents(), you can only call
- * this function in the thread that set the video mode.
- *
- * SDL_PollEvent() is the favored way of receiving system events since it can
- * be done from the main loop and does not suspend the main loop while waiting
- * on an event to be posted.
- *
- * The common practice is to fully process the event queue once every frame,
- * usually as a first step before updating the game's state:
- *
- * ```c
- * while (game_is_still_running) {
- * SDL_Event event;
- * while (SDL_PollEvent(&event)) { // poll until all events are handled!
- * // decide what to do with this event.
- * }
- *
- * // update game state, draw the current frame
- * }
- * ```
- *
- * \param event the SDL_Event structure to be filled with the next event from
- * the queue, or NULL
- * \returns 1 if there is a pending event or 0 if there are none available.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetEventFilter
- * \sa SDL_PeepEvents
- * \sa SDL_PushEvent
- * \sa SDL_SetEventFilter
- * \sa SDL_WaitEvent
- * \sa SDL_WaitEventTimeout
- */
-extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
-
-/**
- * Wait indefinitely for the next available event.
- *
- * If `event` is not NULL, the next event is removed from the queue and stored
- * in the SDL_Event structure pointed to by `event`.
- *
- * As this function may implicitly call SDL_PumpEvents(), you can only call
- * this function in the thread that initialized the video subsystem.
- *
- * \param event the SDL_Event structure to be filled in with the next event
- * from the queue, or NULL
- * \returns 1 on success or 0 if there was an error while waiting for events;
- * call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PollEvent
- * \sa SDL_PumpEvents
- * \sa SDL_WaitEventTimeout
- */
-extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
-
-/**
- * Wait until the specified timeout (in milliseconds) for the next available
- * event.
- *
- * If `event` is not NULL, the next event is removed from the queue and stored
- * in the SDL_Event structure pointed to by `event`.
- *
- * As this function may implicitly call SDL_PumpEvents(), you can only call
- * this function in the thread that initialized the video subsystem.
- *
- * \param event the SDL_Event structure to be filled in with the next event
- * from the queue, or NULL
- * \param timeout the maximum number of milliseconds to wait for the next
- * available event
- * \returns 1 on success or 0 if there was an error while waiting for events;
- * call SDL_GetError() for more information. This also returns 0 if
- * the timeout elapsed without an event arriving.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PollEvent
- * \sa SDL_PumpEvents
- * \sa SDL_WaitEvent
- */
-extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,
- int timeout);
-
-/**
- * Add an event to the event queue.
- *
- * The event queue can actually be used as a two way communication channel.
- * Not only can events be read from the queue, but the user can also push
- * their own events onto it. `event` is a pointer to the event structure you
- * wish to push onto the queue. The event is copied into the queue, and the
- * caller may dispose of the memory pointed to after SDL_PushEvent() returns.
- *
- * Note: Pushing device input events onto the queue doesn't modify the state
- * of the device within SDL.
- *
- * This function is thread-safe, and can be called from other threads safely.
- *
- * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
- * the event filter but events added with SDL_PeepEvents() do not.
- *
- * For pushing application-specific events, please use SDL_RegisterEvents() to
- * get an event type that does not conflict with other code that also wants
- * its own custom event types.
- *
- * \param event the SDL_Event to be added to the queue
- * \returns 1 on success, 0 if the event was filtered, or a negative error
- * code on failure; call SDL_GetError() for more information. A
- * common reason for error is the event queue being full.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PeepEvents
- * \sa SDL_PollEvent
- * \sa SDL_RegisterEvents
- */
-extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
-
-/**
- * A function pointer used for callbacks that watch the event queue.
- *
- * \param userdata what was passed as `userdata` to SDL_SetEventFilter()
- * or SDL_AddEventWatch, etc
- * \param event the event that triggered the callback
- * \returns 1 to permit event to be added to the queue, and 0 to disallow
- * it. When used with SDL_AddEventWatch, the return value is ignored.
- *
- * \sa SDL_SetEventFilter
- * \sa SDL_AddEventWatch
- */
-typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
-
-/**
- * Set up a filter to process all events before they change internal state and
- * are posted to the internal event queue.
- *
- * If the filter function returns 1 when called, then the event will be added
- * to the internal queue. If it returns 0, then the event will be dropped from
- * the queue, but the internal state will still be updated. This allows
- * selective filtering of dynamically arriving events.
- *
- * **WARNING**: Be very careful of what you do in the event filter function,
- * as it may run in a different thread!
- *
- * On platforms that support it, if the quit event is generated by an
- * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the
- * application at the next event poll.
- *
- * There is one caveat when dealing with the ::SDL_QuitEvent event type. The
- * event filter is only called when the window manager desires to close the
- * application window. If the event filter returns 1, then the window will be
- * closed, otherwise the window will remain open if possible.
- *
- * Note: Disabled events never make it to the event filter function; see
- * SDL_EventState().
- *
- * Note: If you just want to inspect events without filtering, you should use
- * SDL_AddEventWatch() instead.
- *
- * Note: Events pushed onto the queue with SDL_PushEvent() get passed through
- * the event filter, but events pushed onto the queue with SDL_PeepEvents() do
- * not.
- *
- * \param filter An SDL_EventFilter function to call when an event happens
- * \param userdata a pointer that is passed to `filter`
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AddEventWatch
- * \sa SDL_EventState
- * \sa SDL_GetEventFilter
- * \sa SDL_PeepEvents
- * \sa SDL_PushEvent
- */
-extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,
- void *userdata);
-
-/**
- * Query the current event filter.
- *
- * This function can be used to "chain" filters, by saving the existing filter
- * before replacing it with a function that will call that saved filter.
- *
- * \param filter the current callback function will be stored here
- * \param userdata the pointer that is passed to the current event filter will
- * be stored here
- * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_SetEventFilter
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,
- void **userdata);
-
-/**
- * Add a callback to be triggered when an event is added to the event queue.
- *
- * `filter` will be called when an event happens, and its return value is
- * ignored.
- *
- * **WARNING**: Be very careful of what you do in the event filter function,
- * as it may run in a different thread!
- *
- * If the quit event is generated by a signal (e.g. SIGINT), it will bypass
- * the internal queue and be delivered to the watch callback immediately, and
- * arrive at the next event poll.
- *
- * Note: the callback is called for events posted by the user through
- * SDL_PushEvent(), but not for disabled events, nor for events by a filter
- * callback set with SDL_SetEventFilter(), nor for events posted by the user
- * through SDL_PeepEvents().
- *
- * \param filter an SDL_EventFilter function to call when an event happens.
- * \param userdata a pointer that is passed to `filter`
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_DelEventWatch
- * \sa SDL_SetEventFilter
- */
-extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
- void *userdata);
-
-/**
- * Remove an event watch callback added with SDL_AddEventWatch().
- *
- * This function takes the same input as SDL_AddEventWatch() to identify and
- * delete the corresponding callback.
- *
- * \param filter the function originally passed to SDL_AddEventWatch()
- * \param userdata the pointer originally passed to SDL_AddEventWatch()
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AddEventWatch
- */
-extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
- void *userdata);
-
-/**
- * Run a specific filter function on the current event queue, removing any
- * events for which the filter returns 0.
- *
- * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(),
- * this function does not change the filter permanently, it only uses the
- * supplied filter until this function returns.
- *
- * \param filter the SDL_EventFilter function to call when an event happens
- * \param userdata a pointer that is passed to `filter`
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetEventFilter
- * \sa SDL_SetEventFilter
- */
-extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,
- void *userdata);
-
-/* @{ */
-#define SDL_QUERY -1
-#define SDL_IGNORE 0
-#define SDL_DISABLE 0
-#define SDL_ENABLE 1
-
-/**
- * Set the state of processing events by type.
- *
- * `state` may be any of the following:
- *
- * - `SDL_QUERY`: returns the current processing state of the specified event
- * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped
- * from the event queue and will not be filtered
- * - `SDL_ENABLE`: the event will be processed normally
- *
- * \param type the type of event; see SDL_EventType for details
- * \param state how to process the event
- * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state
- * of the event before this function makes any changes to it.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetEventState
- */
-extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
-/* @} */
-#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)
-
-/**
- * Allocate a set of user-defined events, and return the beginning event
- * number for that set of events.
- *
- * Calling this function with `numevents` <= 0 is an error and will return
- * (Uint32)-1.
- *
- * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or
- * 0xFFFFFFFF), but is clearer to write.
- *
- * \param numevents the number of events to be allocated
- * \returns the beginning event number, or (Uint32)-1 if there are not enough
- * user-defined events left.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PushEvent
- */
-extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_events_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_filesystem.h b/libs/SDL2/include/SDL_filesystem.h
deleted file mode 100644
index 4cad657ec..000000000
--- a/libs/SDL2/include/SDL_filesystem.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_filesystem.h
- *
- * \brief Include file for filesystem SDL API functions
- */
-
-#ifndef SDL_filesystem_h_
-#define SDL_filesystem_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Get the directory where the application was run from.
- *
- * This is not necessarily a fast call, so you should call this once near
- * startup and save the string if you need it.
- *
- * **Mac OS X and iOS Specific Functionality**: If the application is in a
- * ".app" bundle, this function returns the Resource directory (e.g.
- * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding
- * a property to the Info.plist file. Adding a string key with the name
- * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the
- * behaviour.
- *
- * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an
- * application in /Applications/SDLApp/MyApp.app):
- *
- * - `resource`: bundle resource directory (the default). For example:
- * `/Applications/SDLApp/MyApp.app/Contents/Resources`
- * - `bundle`: the Bundle directory. For example:
- * `/Applications/SDLApp/MyApp.app/`
- * - `parent`: the containing directory of the bundle. For example:
- * `/Applications/SDLApp/`
- *
- * **Nintendo 3DS Specific Functionality**: This function returns "romfs"
- * directory of the application as it is uncommon to store resources outside
- * the executable. As such it is not a writable directory.
- *
- * The returned path is guaranteed to end with a path separator ('\' on
- * Windows, '/' on most other platforms).
- *
- * The pointer returned is owned by the caller. Please call SDL_free() on the
- * pointer when done with it.
- *
- * \returns an absolute path in UTF-8 encoding to the application data
- * directory. NULL will be returned on error or when the platform
- * doesn't implement this functionality, call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.1.
- *
- * \sa SDL_GetPrefPath
- */
-extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
-
-/**
- * Get the user-and-app-specific path where files can be written.
- *
- * Get the "pref dir". This is meant to be where users can write personal
- * files (preferences and save games, etc) that are specific to your
- * application. This directory is unique per user, per application.
- *
- * This function will decide the appropriate location in the native
- * filesystem, create the directory if necessary, and return a string of the
- * absolute path to the directory in UTF-8 encoding.
- *
- * On Windows, the string might look like:
- *
- * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\`
- *
- * On Linux, the string might look like:
- *
- * `/home/bob/.local/share/My Program Name/`
- *
- * On Mac OS X, the string might look like:
- *
- * `/Users/bob/Library/Application Support/My Program Name/`
- *
- * You should assume the path returned by this function is the only safe place
- * to write files (and that SDL_GetBasePath(), while it might be writable, or
- * even the parent of the returned path, isn't where you should be writing
- * things).
- *
- * Both the org and app strings may become part of a directory name, so please
- * follow these rules:
- *
- * - Try to use the same org string (_including case-sensitivity_) for all
- * your applications that use this function.
- * - Always use a unique app string for each one, and make sure it never
- * changes for an app once you've decided on it.
- * - Unicode characters are legal, as long as it's UTF-8 encoded, but...
- * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game
- * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
- *
- * The returned path is guaranteed to end with a path separator ('\' on
- * Windows, '/' on most other platforms).
- *
- * The pointer returned is owned by the caller. Please call SDL_free() on the
- * pointer when done with it.
- *
- * \param org the name of your organization
- * \param app the name of your application
- * \returns a UTF-8 string of the user directory in platform-dependent
- * notation. NULL if there's a problem (creating directory failed,
- * etc.).
- *
- * \since This function is available since SDL 2.0.1.
- *
- * \sa SDL_GetBasePath
- */
-extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_filesystem_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_gamecontroller.h b/libs/SDL2/include/SDL_gamecontroller.h
deleted file mode 100644
index 140054d36..000000000
--- a/libs/SDL2/include/SDL_gamecontroller.h
+++ /dev/null
@@ -1,1074 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_gamecontroller.h
- *
- * Include file for SDL game controller event handling
- */
-
-#ifndef SDL_gamecontroller_h_
-#define SDL_gamecontroller_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_rwops.h"
-#include "SDL_sensor.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file SDL_gamecontroller.h
- *
- * In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system
- * for game controllers, and load appropriate drivers.
- *
- * If you would like to receive controller updates while the application
- * is in the background, you should set the following hint before calling
- * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The gamecontroller structure used to identify an SDL game controller
- */
-struct _SDL_GameController;
-typedef struct _SDL_GameController SDL_GameController;
-
-typedef enum
-{
- SDL_CONTROLLER_TYPE_UNKNOWN = 0,
- SDL_CONTROLLER_TYPE_XBOX360,
- SDL_CONTROLLER_TYPE_XBOXONE,
- SDL_CONTROLLER_TYPE_PS3,
- SDL_CONTROLLER_TYPE_PS4,
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO,
- SDL_CONTROLLER_TYPE_VIRTUAL,
- SDL_CONTROLLER_TYPE_PS5,
- SDL_CONTROLLER_TYPE_AMAZON_LUNA,
- SDL_CONTROLLER_TYPE_GOOGLE_STADIA,
- SDL_CONTROLLER_TYPE_NVIDIA_SHIELD,
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
-} SDL_GameControllerType;
-
-typedef enum
-{
- SDL_CONTROLLER_BINDTYPE_NONE = 0,
- SDL_CONTROLLER_BINDTYPE_BUTTON,
- SDL_CONTROLLER_BINDTYPE_AXIS,
- SDL_CONTROLLER_BINDTYPE_HAT
-} SDL_GameControllerBindType;
-
-/**
- * Get the SDL joystick layer binding for this controller button/axis mapping
- */
-typedef struct SDL_GameControllerButtonBind
-{
- SDL_GameControllerBindType bindType;
- union
- {
- int button;
- int axis;
- struct {
- int hat;
- int hat_mask;
- } hat;
- } value;
-
-} SDL_GameControllerButtonBind;
-
-
-/**
- * To count the number of game controllers in the system for the following:
- *
- * ```c
- * int nJoysticks = SDL_NumJoysticks();
- * int nGameControllers = 0;
- * for (int i = 0; i < nJoysticks; i++) {
- * if (SDL_IsGameController(i)) {
- * nGameControllers++;
- * }
- * }
- * ```
- *
- * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
- * guid,name,mappings
- *
- * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
- * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
- * The mapping format for joystick is:
- * bX - a joystick button, index X
- * hX.Y - hat X with value Y
- * aX - axis X of the joystick
- * Buttons can be used as a controller axis and vice versa.
- *
- * This string shows an example of a valid mapping for a controller
- *
- * ```c
- * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
- * ```
- */
-
-/**
- * Load a set of Game Controller mappings from a seekable SDL data stream.
- *
- * You can call this function several times, if needed, to load different
- * database files.
- *
- * If a new mapping is loaded for an already known controller GUID, the later
- * version will overwrite the one currently loaded.
- *
- * Mappings not belonging to the current platform or with no platform field
- * specified will be ignored (i.e. mappings for Linux will be ignored in
- * Windows, etc).
- *
- * This function will load the text database entirely in memory before
- * processing it, so take this into consideration if you are in a memory
- * constrained environment.
- *
- * \param rw the data stream for the mappings to be added
- * \param freerw non-zero to close the stream after being read
- * \returns the number of mappings added or -1 on error; call SDL_GetError()
- * for more information.
- *
- * \since This function is available since SDL 2.0.2.
- *
- * \sa SDL_GameControllerAddMapping
- * \sa SDL_GameControllerAddMappingsFromFile
- * \sa SDL_GameControllerMappingForGUID
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);
-
-/**
- * Load a set of mappings from a file, filtered by the current SDL_GetPlatform()
- *
- * Convenience macro.
- */
-#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
-
-/**
- * Add support for controllers that SDL is unaware of or to cause an existing
- * controller to have a different binding.
- *
- * The mapping string has the format "GUID,name,mapping", where GUID is the
- * string value from SDL_JoystickGetGUIDString(), name is the human readable
- * string for the device and mappings are controller mappings to joystick
- * ones. Under Windows there is a reserved GUID of "xinput" that covers all
- * XInput devices. The mapping format for joystick is: {| |bX |a joystick
- * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick
- * |} Buttons can be used as a controller axes and vice versa.
- *
- * This string shows an example of a valid mapping for a controller:
- *
- * ```c
- * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7"
- * ```
- *
- * \param mappingString the mapping string
- * \returns 1 if a new mapping is added, 0 if an existing mapping is updated,
- * -1 on error; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerMapping
- * \sa SDL_GameControllerMappingForGUID
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);
-
-/**
- * Get the number of mappings installed.
- *
- * \returns the number of mappings.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
-
-/**
- * Get the mapping at a particular index.
- *
- * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
- * the index is out of range.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
-
-/**
- * Get the game controller mapping string for a given GUID.
- *
- * The returned string must be freed with SDL_free().
- *
- * \param guid a structure containing the GUID for which a mapping is desired
- * \returns a mapping string or NULL on error; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetDeviceGUID
- * \sa SDL_JoystickGetGUID
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);
-
-/**
- * Get the current mapping of a Game Controller.
- *
- * The returned string must be freed with SDL_free().
- *
- * Details about mappings are discussed with SDL_GameControllerAddMapping().
- *
- * \param gamecontroller the game controller you want to get the current
- * mapping for
- * \returns a string that has the controller's mapping or NULL if no mapping
- * is available; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerAddMapping
- * \sa SDL_GameControllerMappingForGUID
- */
-extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller);
-
-/**
- * Check if the given joystick is supported by the game controller interface.
- *
- * `joystick_index` is the same as the `device_index` passed to
- * SDL_JoystickOpen().
- *
- * \param joystick_index the device_index of a device, up to
- * SDL_NumJoysticks()
- * \returns SDL_TRUE if the given joystick is supported by the game controller
- * interface, SDL_FALSE if it isn't or it's an invalid index.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerNameForIndex
- * \sa SDL_GameControllerOpen
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
-
-/**
- * Get the implementation dependent name for the game controller.
- *
- * This function can be called before any controllers are opened.
- *
- * `joystick_index` is the same as the `device_index` passed to
- * SDL_JoystickOpen().
- *
- * \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
- * \returns the implementation-dependent name for the game controller, or NULL
- * if there is no name or the index is invalid.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerName
- * \sa SDL_GameControllerOpen
- * \sa SDL_IsGameController
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);
-
-/**
- * Get the implementation dependent path for the game controller.
- *
- * This function can be called before any controllers are opened.
- *
- * `joystick_index` is the same as the `device_index` passed to
- * SDL_JoystickOpen().
- *
- * \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
- * \returns the implementation-dependent path for the game controller, or NULL
- * if there is no path or the index is invalid.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GameControllerPath
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index);
-
-/**
- * Get the type of a game controller.
- *
- * This can be called before any controllers are opened.
- *
- * \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
- * \returns the controller type.
- *
- * \since This function is available since SDL 2.0.12.
- */
-extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index);
-
-/**
- * Get the mapping of a game controller.
- *
- * This can be called before any controllers are opened.
- *
- * \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
- * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
- * no mapping is available.
- *
- * \since This function is available since SDL 2.0.9.
- */
-extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
-
-/**
- * Open a game controller for use.
- *
- * `joystick_index` is the same as the `device_index` passed to
- * SDL_JoystickOpen().
- *
- * The index passed as an argument refers to the N'th game controller on the
- * system. This index is not the value which will identify this controller in
- * future controller events. The joystick's instance id (SDL_JoystickID) will
- * be used there instead.
- *
- * \param joystick_index the device_index of a device, up to
- * SDL_NumJoysticks()
- * \returns a gamecontroller identifier or NULL if an error occurred; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerClose
- * \sa SDL_GameControllerNameForIndex
- * \sa SDL_IsGameController
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);
-
-/**
- * Get the SDL_GameController associated with an instance id.
- *
- * \param joyid the instance id to get the SDL_GameController for
- * \returns an SDL_GameController on success or NULL on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.4.
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);
-
-/**
- * Get the SDL_GameController associated with a player index.
- *
- * Please note that the player index is _not_ the device index, nor is it the
- * instance id!
- *
- * \param player_index the player index, which is not the device index or the
- * instance id!
- * \returns the SDL_GameController associated with a player index.
- *
- * \since This function is available since SDL 2.0.12.
- *
- * \sa SDL_GameControllerGetPlayerIndex
- * \sa SDL_GameControllerSetPlayerIndex
- */
-extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index);
-
-/**
- * Get the implementation-dependent name for an opened game controller.
- *
- * This is the same name as returned by SDL_GameControllerNameForIndex(), but
- * it takes a controller identifier instead of the (unstable) device index.
- *
- * \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
- * \returns the implementation dependent name for the game controller, or NULL
- * if there is no name or the identifier passed is invalid.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerNameForIndex
- * \sa SDL_GameControllerOpen
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);
-
-/**
- * Get the implementation-dependent path for an opened game controller.
- *
- * This is the same path as returned by SDL_GameControllerNameForIndex(), but
- * it takes a controller identifier instead of the (unstable) device index.
- *
- * \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
- * \returns the implementation dependent path for the game controller, or NULL
- * if there is no path or the identifier passed is invalid.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GameControllerPathForIndex
- */
-extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller);
-
-/**
- * Get the type of this currently opened controller
- *
- * This is the same name as returned by SDL_GameControllerTypeForIndex(), but
- * it takes a controller identifier instead of the (unstable) device index.
- *
- * \param gamecontroller the game controller object to query.
- * \returns the controller type.
- *
- * \since This function is available since SDL 2.0.12.
- */
-extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller);
-
-/**
- * Get the player index of an opened game controller.
- *
- * For XInput controllers this returns the XInput user index.
- *
- * \param gamecontroller the game controller object to query.
- * \returns the player index for controller, or -1 if it's not available.
- *
- * \since This function is available since SDL 2.0.9.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
-
-/**
- * Set the player index of an opened game controller.
- *
- * \param gamecontroller the game controller object to adjust.
- * \param player_index Player index to assign to this controller, or -1 to
- * clear the player index and turn off player LEDs.
- *
- * \since This function is available since SDL 2.0.12.
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index);
-
-/**
- * Get the USB vendor ID of an opened controller, if available.
- *
- * If the vendor ID isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the USB vendor ID, or zero if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller);
-
-/**
- * Get the USB product ID of an opened controller, if available.
- *
- * If the product ID isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the USB product ID, or zero if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller);
-
-/**
- * Get the product version of an opened controller, if available.
- *
- * If the product version isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the USB product version, or zero if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller);
-
-/**
- * Get the firmware version of an opened controller, if available.
- *
- * If the firmware version isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the controller firmware version, or zero if unavailable.
- *
- * \since This function is available since SDL 2.24.0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller);
-
-/**
- * Get the serial number of an opened controller, if available.
- *
- * Returns the serial number of the controller, or NULL if it is not
- * available.
- *
- * \param gamecontroller the game controller object to query.
- * \return the serial number, or NULL if unavailable.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
-
-/**
- * Check if a controller has been opened and is currently connected.
- *
- * \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
- * \returns SDL_TRUE if the controller has been opened and is currently
- * connected, or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerClose
- * \sa SDL_GameControllerOpen
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);
-
-/**
- * Get the Joystick ID from a Game Controller.
- *
- * This function will give you a SDL_Joystick object, which allows you to use
- * the SDL_Joystick functions with a SDL_GameController object. This would be
- * useful for getting a joystick's position at any given time, even if it
- * hasn't moved (moving it would produce an event, which would have the axis'
- * value).
- *
- * The pointer returned is owned by the SDL_GameController. You should not
- * call SDL_JoystickClose() on it, for example, since doing so will likely
- * cause SDL to crash.
- *
- * \param gamecontroller the game controller object that you want to get a
- * joystick from
- * \returns a SDL_Joystick object; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);
-
-/**
- * Query or change current state of Game Controller events.
- *
- * If controller events are disabled, you must call SDL_GameControllerUpdate()
- * yourself and check the state of the controller when you want controller
- * information.
- *
- * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0,
- * and 1 will have any effect. Other numbers will just be returned.
- *
- * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
- * \returns the same value passed to the function, with exception to -1
- * (SDL_QUERY), which will return the current state.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickEventState
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);
-
-/**
- * Manually pump game controller updates if not using the loop.
- *
- * This function is called automatically by the event loop if events are
- * enabled. Under such circumstances, it will not be necessary to call this
- * function.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
-
-
-/**
- * The list of axes available from a controller
- *
- * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,
- * and are centered within ~8000 of zero, though advanced UI will allow users to set
- * or autodetect the dead zone, which varies between controllers.
- *
- * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
- */
-typedef enum
-{
- SDL_CONTROLLER_AXIS_INVALID = -1,
- SDL_CONTROLLER_AXIS_LEFTX,
- SDL_CONTROLLER_AXIS_LEFTY,
- SDL_CONTROLLER_AXIS_RIGHTX,
- SDL_CONTROLLER_AXIS_RIGHTY,
- SDL_CONTROLLER_AXIS_TRIGGERLEFT,
- SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
- SDL_CONTROLLER_AXIS_MAX
-} SDL_GameControllerAxis;
-
-/**
- * Convert a string into SDL_GameControllerAxis enum.
- *
- * This function is called internally to translate SDL_GameController mapping
- * strings for the underlying joystick device into the consistent
- * SDL_GameController mapping. You do not normally need to call this function
- * unless you are parsing SDL_GameController mappings in your own code.
- *
- * Note specially that "righttrigger" and "lefttrigger" map to
- * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`,
- * respectively.
- *
- * \param str string representing a SDL_GameController axis
- * \returns the SDL_GameControllerAxis enum corresponding to the input string,
- * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetStringForAxis
- */
-extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str);
-
-/**
- * Convert from an SDL_GameControllerAxis enum to a string.
- *
- * The caller should not SDL_free() the returned string.
- *
- * \param axis an enum value for a given SDL_GameControllerAxis
- * \returns a string for the given axis, or NULL if an invalid axis is
- * specified. The string returned is of the format used by
- * SDL_GameController mapping strings.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetAxisFromString
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);
-
-/**
- * Get the SDL joystick layer binding for a controller axis mapping.
- *
- * \param gamecontroller a game controller
- * \param axis an axis enum value (one of the SDL_GameControllerAxis values)
- * \returns a SDL_GameControllerButtonBind describing the bind. On failure
- * (like the given Controller axis doesn't exist on the device), its
- * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetBindForButton
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,
- SDL_GameControllerAxis axis);
-
-/**
- * Query whether a game controller has a given axis.
- *
- * This merely reports whether the controller's mapping defined this axis, as
- * that is all the information SDL has about the physical device.
- *
- * \param gamecontroller a game controller
- * \param axis an axis enum value (an SDL_GameControllerAxis value)
- * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL
-SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
-
-/**
- * Get the current state of an axis control on a game controller.
- *
- * The axis indices start at index 0.
- *
- * The state is a value ranging from -32768 to 32767. Triggers, however, range
- * from 0 to 32767 (they never return a negative value).
- *
- * \param gamecontroller a game controller
- * \param axis an axis index (one of the SDL_GameControllerAxis values)
- * \returns axis state (including 0) on success or 0 (also) on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetButton
- */
-extern DECLSPEC Sint16 SDLCALL
-SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
-
-/**
- * The list of buttons available from a controller
- */
-typedef enum
-{
- SDL_CONTROLLER_BUTTON_INVALID = -1,
- SDL_CONTROLLER_BUTTON_A,
- SDL_CONTROLLER_BUTTON_B,
- SDL_CONTROLLER_BUTTON_X,
- SDL_CONTROLLER_BUTTON_Y,
- SDL_CONTROLLER_BUTTON_BACK,
- SDL_CONTROLLER_BUTTON_GUIDE,
- SDL_CONTROLLER_BUTTON_START,
- SDL_CONTROLLER_BUTTON_LEFTSTICK,
- SDL_CONTROLLER_BUTTON_RIGHTSTICK,
- SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
- SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
- SDL_CONTROLLER_BUTTON_DPAD_UP,
- SDL_CONTROLLER_BUTTON_DPAD_DOWN,
- SDL_CONTROLLER_BUTTON_DPAD_LEFT,
- SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
- SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */
- SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */
- SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */
- SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */
- SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */
- SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */
- SDL_CONTROLLER_BUTTON_MAX
-} SDL_GameControllerButton;
-
-/**
- * Convert a string into an SDL_GameControllerButton enum.
- *
- * This function is called internally to translate SDL_GameController mapping
- * strings for the underlying joystick device into the consistent
- * SDL_GameController mapping. You do not normally need to call this function
- * unless you are parsing SDL_GameController mappings in your own code.
- *
- * \param str string representing a SDL_GameController axis
- * \returns the SDL_GameControllerButton enum corresponding to the input
- * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str);
-
-/**
- * Convert from an SDL_GameControllerButton enum to a string.
- *
- * The caller should not SDL_free() the returned string.
- *
- * \param button an enum value for a given SDL_GameControllerButton
- * \returns a string for the given button, or NULL if an invalid button is
- * specified. The string returned is of the format used by
- * SDL_GameController mapping strings.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetButtonFromString
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);
-
-/**
- * Get the SDL joystick layer binding for a controller button mapping.
- *
- * \param gamecontroller a game controller
- * \param button an button enum value (an SDL_GameControllerButton value)
- * \returns a SDL_GameControllerButtonBind describing the bind. On failure
- * (like the given Controller button doesn't exist on the device),
- * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetBindForAxis
- */
-extern DECLSPEC SDL_GameControllerButtonBind SDLCALL
-SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,
- SDL_GameControllerButton button);
-
-/**
- * Query whether a game controller has a given button.
- *
- * This merely reports whether the controller's mapping defined this button,
- * as that is all the information SDL has about the physical device.
- *
- * \param gamecontroller a game controller
- * \param button a button enum value (an SDL_GameControllerButton value)
- * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller,
- SDL_GameControllerButton button);
-
-/**
- * Get the current state of a button on a game controller.
- *
- * \param gamecontroller a game controller
- * \param button a button index (one of the SDL_GameControllerButton values)
- * \returns 1 for pressed state or 0 for not pressed state or error; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerGetAxis
- */
-extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,
- SDL_GameControllerButton button);
-
-/**
- * Get the number of touchpads on a game controller.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller);
-
-/**
- * Get the number of supported simultaneous fingers on a touchpad on a game
- * controller.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad);
-
-/**
- * Get the current state of a finger on a touchpad on a game controller.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure);
-
-/**
- * Return whether a game controller has a particular sensor.
- *
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type);
-
-/**
- * Set whether data reporting for a game controller sensor is enabled.
- *
- * \param gamecontroller The controller to update
- * \param type The type of sensor to enable/disable
- * \param enabled Whether data reporting should be enabled
- * \returns 0 or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled);
-
-/**
- * Query whether sensor data reporting is enabled for a game controller.
- *
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type);
-
-/**
- * Get the data rate (number of events per second) of a game controller
- * sensor.
- *
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \return the data rate, or 0.0f if the data rate is not available.
- *
- * \since This function is available since SDL 2.0.16.
- */
-extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type);
-
-/**
- * Get the current state of a game controller sensor.
- *
- * The number of values and interpretation of the data is sensor dependent.
- * See SDL_sensor.h for the details for each type of sensor.
- *
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
- * \return 0 or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values);
-
-/**
- * Get the current state of a game controller sensor with the timestamp of the
- * last update.
- *
- * The number of values and interpretation of the data is sensor dependent.
- * See SDL_sensor.h for the details for each type of sensor.
- *
- * \param gamecontroller The controller to query
- * \param type The type of sensor to query
- * \param timestamp A pointer filled with the timestamp in microseconds of the
- * current sensor reading if available, or 0 if not
- * \param data A pointer filled with the current sensor state
- * \param num_values The number of values to write to data
- * \return 0 or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.26.0.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values);
-
-/**
- * Start a rumble effect on a game controller.
- *
- * Each call to this function cancels any previous rumble effect, and calling
- * it with 0 intensity stops any rumbling.
- *
- * \param gamecontroller The controller to vibrate
- * \param low_frequency_rumble The intensity of the low frequency (left)
- * rumble motor, from 0 to 0xFFFF
- * \param high_frequency_rumble The intensity of the high frequency (right)
- * rumble motor, from 0 to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if rumble isn't supported on this controller
- *
- * \since This function is available since SDL 2.0.9.
- *
- * \sa SDL_GameControllerHasRumble
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- * Start a rumble effect in the game controller's triggers.
- *
- * Each call to this function cancels any previous trigger rumble effect, and
- * calling it with 0 intensity stops any rumbling.
- *
- * Note that this is rumbling of the _triggers_ and not the game controller as
- * a whole. This is currently only supported on Xbox One controllers. If you
- * want the (more common) whole-controller rumble, use
- * SDL_GameControllerRumble() instead.
- *
- * \param gamecontroller The controller to vibrate
- * \param left_rumble The intensity of the left trigger rumble motor, from 0
- * to 0xFFFF
- * \param right_rumble The intensity of the right trigger rumble motor, from 0
- * to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if trigger rumble isn't supported on this controller
- *
- * \since This function is available since SDL 2.0.14.
- *
- * \sa SDL_GameControllerHasRumbleTriggers
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
-
-/**
- * Query whether a game controller has an LED.
- *
- * \param gamecontroller The controller to query
- * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a
- * modifiable LED
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller);
-
-/**
- * Query whether a game controller has rumble support.
- *
- * \param gamecontroller The controller to query
- * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble
- * support
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_GameControllerRumble
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller);
-
-/**
- * Query whether a game controller has rumble support on triggers.
- *
- * \param gamecontroller The controller to query
- * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger
- * rumble support
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_GameControllerRumbleTriggers
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller);
-
-/**
- * Update a game controller's LED color.
- *
- * \param gamecontroller The controller to update
- * \param red The intensity of the red LED
- * \param green The intensity of the green LED
- * \param blue The intensity of the blue LED
- * \returns 0, or -1 if this controller does not have a modifiable LED
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue);
-
-/**
- * Send a controller specific effect packet
- *
- * \param gamecontroller The controller to affect
- * \param data The data to send to the controller
- * \param size The size of the data to send to the controller
- * \returns 0, or -1 if this controller or driver doesn't support effect
- * packets
- *
- * \since This function is available since SDL 2.0.16.
- */
-extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size);
-
-/**
- * Close a game controller previously opened with SDL_GameControllerOpen().
- *
- * \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerOpen
- */
-extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);
-
-/**
- * Return the sfSymbolsName for a given button on a game controller on Apple
- * platforms.
- *
- * \param gamecontroller the controller to query
- * \param button a button on the game controller
- * \returns the sfSymbolsName or NULL if the name can't be found
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button);
-
-/**
- * Return the sfSymbolsName for a given axis on a game controller on Apple
- * platforms.
- *
- * \param gamecontroller the controller to query
- * \param axis an axis on the game controller
- * \returns the sfSymbolsName or NULL if the name can't be found
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton
- */
-extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gamecontroller_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_gesture.h b/libs/SDL2/include/SDL_gesture.h
deleted file mode 100644
index db70b4dd8..000000000
--- a/libs/SDL2/include/SDL_gesture.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_gesture.h
- *
- * Include file for SDL gesture event handling.
- */
-
-#ifndef SDL_gesture_h_
-#define SDL_gesture_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_video.h"
-
-#include "SDL_touch.h"
-
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef Sint64 SDL_GestureID;
-
-/* Function prototypes */
-
-/**
- * Begin recording a gesture on a specified touch device or all touch devices.
- *
- * If the parameter `touchId` is -1 (i.e., all devices), this function will
- * always return 1, regardless of whether there actually are any devices.
- *
- * \param touchId the touch device id, or -1 for all touch devices
- * \returns 1 on success or 0 if the specified device could not be found.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetTouchDevice
- */
-extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);
-
-
-/**
- * Save all currently loaded Dollar Gesture templates.
- *
- * \param dst a SDL_RWops to save to
- * \returns the number of saved templates on success or 0 on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LoadDollarTemplates
- * \sa SDL_SaveDollarTemplate
- */
-extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);
-
-/**
- * Save a currently loaded Dollar Gesture template.
- *
- * \param gestureId a gesture id
- * \param dst a SDL_RWops to save to
- * \returns 1 on success or 0 on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_LoadDollarTemplates
- * \sa SDL_SaveAllDollarTemplates
- */
-extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);
-
-
-/**
- * Load Dollar Gesture templates from a file.
- *
- * \param touchId a touch id
- * \param src a SDL_RWops to load from
- * \returns the number of loaded templates on success or a negative error code
- * (or 0) on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_SaveAllDollarTemplates
- * \sa SDL_SaveDollarTemplate
- */
-extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_gesture_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_guid.h b/libs/SDL2/include/SDL_guid.h
deleted file mode 100644
index d964223c6..000000000
--- a/libs/SDL2/include/SDL_guid.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_guid.h
- *
- * Include file for handling ::SDL_GUID values.
- */
-
-#ifndef SDL_guid_h_
-#define SDL_guid_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * An SDL_GUID is a 128-bit identifier for an input device that
- * identifies that device across runs of SDL programs on the same
- * platform. If the device is detached and then re-attached to a
- * different port, or if the base system is rebooted, the device
- * should still report the same GUID.
- *
- * GUIDs are as precise as possible but are not guaranteed to
- * distinguish physically distinct but equivalent devices. For
- * example, two game controllers from the same vendor with the same
- * product ID and revision may have the same GUID.
- *
- * GUIDs may be platform-dependent (i.e., the same device may report
- * different GUIDs on different operating systems).
- */
-typedef struct {
- Uint8 data[16];
-} SDL_GUID;
-
-/* Function prototypes */
-
-/**
- * Get an ASCII string representation for a given ::SDL_GUID.
- *
- * You should supply at least 33 bytes for pszGUID.
- *
- * \param guid the ::SDL_GUID you wish to convert to string
- * \param pszGUID buffer in which to write the ASCII string
- * \param cbGUID the size of pszGUID
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GUIDFromString
- */
-extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID);
-
-/**
- * Convert a GUID string into a ::SDL_GUID structure.
- *
- * Performs no error checking. If this function is given a string containing
- * an invalid GUID, the function will silently succeed, but the GUID generated
- * will not be useful.
- *
- * \param pchGUID string containing an ASCII representation of a GUID
- * \returns a ::SDL_GUID structure.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GUIDToString
- */
-extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_guid_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_haptic.h b/libs/SDL2/include/SDL_haptic.h
deleted file mode 100644
index 2462a1e47..000000000
--- a/libs/SDL2/include/SDL_haptic.h
+++ /dev/null
@@ -1,1341 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_haptic.h
- *
- * \brief The SDL haptic subsystem allows you to control haptic (force feedback)
- * devices.
- *
- * The basic usage is as follows:
- * - Initialize the subsystem (::SDL_INIT_HAPTIC).
- * - Open a haptic device.
- * - SDL_HapticOpen() to open from index.
- * - SDL_HapticOpenFromJoystick() to open from an existing joystick.
- * - Create an effect (::SDL_HapticEffect).
- * - Upload the effect with SDL_HapticNewEffect().
- * - Run the effect with SDL_HapticRunEffect().
- * - (optional) Free the effect with SDL_HapticDestroyEffect().
- * - Close the haptic device with SDL_HapticClose().
- *
- * \par Simple rumble example:
- * \code
- * SDL_Haptic *haptic;
- *
- * // Open the device
- * haptic = SDL_HapticOpen( 0 );
- * if (haptic == NULL)
- * return -1;
- *
- * // Initialize simple rumble
- * if (SDL_HapticRumbleInit( haptic ) != 0)
- * return -1;
- *
- * // Play effect at 50% strength for 2 seconds
- * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
- * return -1;
- * SDL_Delay( 2000 );
- *
- * // Clean up
- * SDL_HapticClose( haptic );
- * \endcode
- *
- * \par Complete example:
- * \code
- * int test_haptic( SDL_Joystick * joystick ) {
- * SDL_Haptic *haptic;
- * SDL_HapticEffect effect;
- * int effect_id;
- *
- * // Open the device
- * haptic = SDL_HapticOpenFromJoystick( joystick );
- * if (haptic == NULL) return -1; // Most likely joystick isn't haptic
- *
- * // See if it can do sine waves
- * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {
- * SDL_HapticClose(haptic); // No sine effect
- * return -1;
- * }
- *
- * // Create the effect
- * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default
- * effect.type = SDL_HAPTIC_SINE;
- * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates
- * effect.periodic.direction.dir[0] = 18000; // Force comes from south
- * effect.periodic.period = 1000; // 1000 ms
- * effect.periodic.magnitude = 20000; // 20000/32767 strength
- * effect.periodic.length = 5000; // 5 seconds long
- * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength
- * effect.periodic.fade_length = 1000; // Takes 1 second to fade away
- *
- * // Upload the effect
- * effect_id = SDL_HapticNewEffect( haptic, &effect );
- *
- * // Test the effect
- * SDL_HapticRunEffect( haptic, effect_id, 1 );
- * SDL_Delay( 5000); // Wait for the effect to finish
- *
- * // We destroy the effect, although closing the device also does this
- * SDL_HapticDestroyEffect( haptic, effect_id );
- *
- * // Close the device
- * SDL_HapticClose(haptic);
- *
- * return 0; // Success
- * }
- * \endcode
- */
-
-#ifndef SDL_haptic_h_
-#define SDL_haptic_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_joystick.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).
- *
- * At the moment the magnitude variables are mixed between signed/unsigned, and
- * it is also not made clear that ALL of those variables expect a max of 0x7FFF.
- *
- * Some platforms may have higher precision than that (Linux FF, Windows XInput)
- * so we should fix the inconsistency in favor of higher possible precision,
- * adjusting for platforms that use different scales.
- * -flibit
- */
-
-/**
- * \typedef SDL_Haptic
- *
- * \brief The haptic structure used to identify an SDL haptic.
- *
- * \sa SDL_HapticOpen
- * \sa SDL_HapticOpenFromJoystick
- * \sa SDL_HapticClose
- */
-struct _SDL_Haptic;
-typedef struct _SDL_Haptic SDL_Haptic;
-
-
-/**
- * \name Haptic features
- *
- * Different haptic features a device can have.
- */
-/* @{ */
-
-/**
- * \name Haptic effects
- */
-/* @{ */
-
-/**
- * \brief Constant effect supported.
- *
- * Constant haptic effect.
- *
- * \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_CONSTANT (1u<<0)
-
-/**
- * \brief Sine wave effect supported.
- *
- * Periodic haptic effect that simulates sine waves.
- *
- * \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SINE (1u<<1)
-
-/**
- * \brief Left/Right effect supported.
- *
- * Haptic effect for direct control over high/low frequency motors.
- *
- * \sa SDL_HapticLeftRight
- * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,
- * we ran out of bits, and this is important for XInput devices.
- */
-#define SDL_HAPTIC_LEFTRIGHT (1u<<2)
-
-/* !!! FIXME: put this back when we have more bits in 2.1 */
-/* #define SDL_HAPTIC_SQUARE (1<<2) */
-
-/**
- * \brief Triangle wave effect supported.
- *
- * Periodic haptic effect that simulates triangular waves.
- *
- * \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_TRIANGLE (1u<<3)
-
-/**
- * \brief Sawtoothup wave effect supported.
- *
- * Periodic haptic effect that simulates saw tooth up waves.
- *
- * \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)
-
-/**
- * \brief Sawtoothdown wave effect supported.
- *
- * Periodic haptic effect that simulates saw tooth down waves.
- *
- * \sa SDL_HapticPeriodic
- */
-#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)
-
-/**
- * \brief Ramp effect supported.
- *
- * Ramp haptic effect.
- *
- * \sa SDL_HapticRamp
- */
-#define SDL_HAPTIC_RAMP (1u<<6)
-
-/**
- * \brief Spring effect supported - uses axes position.
- *
- * Condition haptic effect that simulates a spring. Effect is based on the
- * axes position.
- *
- * \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_SPRING (1u<<7)
-
-/**
- * \brief Damper effect supported - uses axes velocity.
- *
- * Condition haptic effect that simulates dampening. Effect is based on the
- * axes velocity.
- *
- * \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_DAMPER (1u<<8)
-
-/**
- * \brief Inertia effect supported - uses axes acceleration.
- *
- * Condition haptic effect that simulates inertia. Effect is based on the axes
- * acceleration.
- *
- * \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_INERTIA (1u<<9)
-
-/**
- * \brief Friction effect supported - uses axes movement.
- *
- * Condition haptic effect that simulates friction. Effect is based on the
- * axes movement.
- *
- * \sa SDL_HapticCondition
- */
-#define SDL_HAPTIC_FRICTION (1u<<10)
-
-/**
- * \brief Custom effect is supported.
- *
- * User defined custom haptic effect.
- */
-#define SDL_HAPTIC_CUSTOM (1u<<11)
-
-/* @} *//* Haptic effects */
-
-/* These last few are features the device has, not effects */
-
-/**
- * \brief Device can set global gain.
- *
- * Device supports setting the global gain.
- *
- * \sa SDL_HapticSetGain
- */
-#define SDL_HAPTIC_GAIN (1u<<12)
-
-/**
- * \brief Device can set autocenter.
- *
- * Device supports setting autocenter.
- *
- * \sa SDL_HapticSetAutocenter
- */
-#define SDL_HAPTIC_AUTOCENTER (1u<<13)
-
-/**
- * \brief Device can be queried for effect status.
- *
- * Device supports querying effect status.
- *
- * \sa SDL_HapticGetEffectStatus
- */
-#define SDL_HAPTIC_STATUS (1u<<14)
-
-/**
- * \brief Device can be paused.
- *
- * Devices supports being paused.
- *
- * \sa SDL_HapticPause
- * \sa SDL_HapticUnpause
- */
-#define SDL_HAPTIC_PAUSE (1u<<15)
-
-
-/**
- * \name Direction encodings
- */
-/* @{ */
-
-/**
- * \brief Uses polar coordinates for the direction.
- *
- * \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_POLAR 0
-
-/**
- * \brief Uses cartesian coordinates for the direction.
- *
- * \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_CARTESIAN 1
-
-/**
- * \brief Uses spherical coordinates for the direction.
- *
- * \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_SPHERICAL 2
-
-/**
- * \brief Use this value to play an effect on the steering wheel axis. This
- * provides better compatibility across platforms and devices as SDL will guess
- * the correct axis.
- * \sa SDL_HapticDirection
- */
-#define SDL_HAPTIC_STEERING_AXIS 3
-
-/* @} *//* Direction encodings */
-
-/* @} *//* Haptic features */
-
-/*
- * Misc defines.
- */
-
-/**
- * \brief Used to play a device an infinite number of times.
- *
- * \sa SDL_HapticRunEffect
- */
-#define SDL_HAPTIC_INFINITY 4294967295U
-
-
-/**
- * \brief Structure that represents a haptic direction.
- *
- * This is the direction where the force comes from,
- * instead of the direction in which the force is exerted.
- *
- * Directions can be specified by:
- * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.
- * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.
- * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.
- *
- * Cardinal directions of the haptic device are relative to the positioning
- * of the device. North is considered to be away from the user.
- *
- * The following diagram represents the cardinal directions:
- * \verbatim
- .--.
- |__| .-------.
- |=.| |.-----.|
- |--| || ||
- | | |'-----'|
- |__|~')_____('
- [ COMPUTER ]
-
-
- North (0,-1)
- ^
- |
- |
- (-1,0) West <----[ HAPTIC ]----> East (1,0)
- |
- |
- v
- South (0,1)
-
-
- [ USER ]
- \|||/
- (o o)
- ---ooO-(_)-Ooo---
- \endverbatim
- *
- * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a
- * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses
- * the first \c dir parameter. The cardinal directions would be:
- * - North: 0 (0 degrees)
- * - East: 9000 (90 degrees)
- * - South: 18000 (180 degrees)
- * - West: 27000 (270 degrees)
- *
- * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions
- * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses
- * the first three \c dir parameters. The cardinal directions would be:
- * - North: 0,-1, 0
- * - East: 1, 0, 0
- * - South: 0, 1, 0
- * - West: -1, 0, 0
- *
- * The Z axis represents the height of the effect if supported, otherwise
- * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you
- * can use any multiple you want, only the direction matters.
- *
- * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.
- * The first two \c dir parameters are used. The \c dir parameters are as
- * follows (all values are in hundredths of degrees):
- * - Degrees from (1, 0) rotated towards (0, 1).
- * - Degrees towards (0, 0, 1) (device needs at least 3 axes).
- *
- *
- * Example of force coming from the south with all encodings (force coming
- * from the south means the user will have to pull the stick to counteract):
- * \code
- * SDL_HapticDirection direction;
- *
- * // Cartesian directions
- * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.
- * direction.dir[0] = 0; // X position
- * direction.dir[1] = 1; // Y position
- * // Assuming the device has 2 axes, we don't need to specify third parameter.
- *
- * // Polar directions
- * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
- * direction.dir[0] = 18000; // Polar only uses first parameter
- *
- * // Spherical coordinates
- * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding
- * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.
- * \endcode
- *
- * \sa SDL_HAPTIC_POLAR
- * \sa SDL_HAPTIC_CARTESIAN
- * \sa SDL_HAPTIC_SPHERICAL
- * \sa SDL_HAPTIC_STEERING_AXIS
- * \sa SDL_HapticEffect
- * \sa SDL_HapticNumAxes
- */
-typedef struct SDL_HapticDirection
-{
- Uint8 type; /**< The type of encoding. */
- Sint32 dir[3]; /**< The encoded direction. */
-} SDL_HapticDirection;
-
-
-/**
- * \brief A structure containing a template for a Constant effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.
- *
- * A constant effect applies a constant force in the specified direction
- * to the joystick.
- *
- * \sa SDL_HAPTIC_CONSTANT
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticConstant
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */
- SDL_HapticDirection direction; /**< Direction of the effect. */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect. */
- Uint16 delay; /**< Delay before starting the effect. */
-
- /* Trigger */
- Uint16 button; /**< Button that triggers the effect. */
- Uint16 interval; /**< How soon it can be triggered again after button. */
-
- /* Constant */
- Sint16 level; /**< Strength of the constant effect. */
-
- /* Envelope */
- Uint16 attack_length; /**< Duration of the attack. */
- Uint16 attack_level; /**< Level at the start of the attack. */
- Uint16 fade_length; /**< Duration of the fade. */
- Uint16 fade_level; /**< Level at the end of the fade. */
-} SDL_HapticConstant;
-
-/**
- * \brief A structure containing a template for a Periodic effect.
- *
- * The struct handles the following effects:
- * - ::SDL_HAPTIC_SINE
- * - ::SDL_HAPTIC_LEFTRIGHT
- * - ::SDL_HAPTIC_TRIANGLE
- * - ::SDL_HAPTIC_SAWTOOTHUP
- * - ::SDL_HAPTIC_SAWTOOTHDOWN
- *
- * A periodic effect consists in a wave-shaped effect that repeats itself
- * over time. The type determines the shape of the wave and the parameters
- * determine the dimensions of the wave.
- *
- * Phase is given by hundredth of a degree meaning that giving the phase a value
- * of 9000 will displace it 25% of its period. Here are sample values:
- * - 0: No phase displacement.
- * - 9000: Displaced 25% of its period.
- * - 18000: Displaced 50% of its period.
- * - 27000: Displaced 75% of its period.
- * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.
- *
- * Examples:
- * \verbatim
- SDL_HAPTIC_SINE
- __ __ __ __
- / \ / \ / \ /
- / \__/ \__/ \__/
-
- SDL_HAPTIC_SQUARE
- __ __ __ __ __
- | | | | | | | | | |
- | |__| |__| |__| |__| |
-
- SDL_HAPTIC_TRIANGLE
- /\ /\ /\ /\ /\
- / \ / \ / \ / \ /
- / \/ \/ \/ \/
-
- SDL_HAPTIC_SAWTOOTHUP
- /| /| /| /| /| /| /|
- / | / | / | / | / | / | / |
- / |/ |/ |/ |/ |/ |/ |
-
- SDL_HAPTIC_SAWTOOTHDOWN
- \ |\ |\ |\ |\ |\ |\ |
- \ | \ | \ | \ | \ | \ | \ |
- \| \| \| \| \| \| \|
- \endverbatim
- *
- * \sa SDL_HAPTIC_SINE
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HAPTIC_TRIANGLE
- * \sa SDL_HAPTIC_SAWTOOTHUP
- * \sa SDL_HAPTIC_SAWTOOTHDOWN
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticPeriodic
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
- ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
- ::SDL_HAPTIC_SAWTOOTHDOWN */
- SDL_HapticDirection direction; /**< Direction of the effect. */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect. */
- Uint16 delay; /**< Delay before starting the effect. */
-
- /* Trigger */
- Uint16 button; /**< Button that triggers the effect. */
- Uint16 interval; /**< How soon it can be triggered again after button. */
-
- /* Periodic */
- Uint16 period; /**< Period of the wave. */
- Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */
- Sint16 offset; /**< Mean value of the wave. */
- Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */
-
- /* Envelope */
- Uint16 attack_length; /**< Duration of the attack. */
- Uint16 attack_level; /**< Level at the start of the attack. */
- Uint16 fade_length; /**< Duration of the fade. */
- Uint16 fade_level; /**< Level at the end of the fade. */
-} SDL_HapticPeriodic;
-
-/**
- * \brief A structure containing a template for a Condition effect.
- *
- * The struct handles the following effects:
- * - ::SDL_HAPTIC_SPRING: Effect based on axes position.
- * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.
- * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.
- * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.
- *
- * Direction is handled by condition internals instead of a direction member.
- * The condition effect specific members have three parameters. The first
- * refers to the X axis, the second refers to the Y axis and the third
- * refers to the Z axis. The right terms refer to the positive side of the
- * axis and the left terms refer to the negative side of the axis. Please
- * refer to the ::SDL_HapticDirection diagram for which side is positive and
- * which is negative.
- *
- * \sa SDL_HapticDirection
- * \sa SDL_HAPTIC_SPRING
- * \sa SDL_HAPTIC_DAMPER
- * \sa SDL_HAPTIC_INERTIA
- * \sa SDL_HAPTIC_FRICTION
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCondition
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
- ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */
- SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect. */
- Uint16 delay; /**< Delay before starting the effect. */
-
- /* Trigger */
- Uint16 button; /**< Button that triggers the effect. */
- Uint16 interval; /**< How soon it can be triggered again after button. */
-
- /* Condition */
- Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */
- Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */
- Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */
- Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */
- Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */
- Sint16 center[3]; /**< Position of the dead zone. */
-} SDL_HapticCondition;
-
-/**
- * \brief A structure containing a template for a Ramp effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.
- *
- * The ramp effect starts at start strength and ends at end strength.
- * It augments in linear fashion. If you use attack and fade with a ramp
- * the effects get added to the ramp effect making the effect become
- * quadratic instead of linear.
- *
- * \sa SDL_HAPTIC_RAMP
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticRamp
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_RAMP */
- SDL_HapticDirection direction; /**< Direction of the effect. */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect. */
- Uint16 delay; /**< Delay before starting the effect. */
-
- /* Trigger */
- Uint16 button; /**< Button that triggers the effect. */
- Uint16 interval; /**< How soon it can be triggered again after button. */
-
- /* Ramp */
- Sint16 start; /**< Beginning strength level. */
- Sint16 end; /**< Ending strength level. */
-
- /* Envelope */
- Uint16 attack_length; /**< Duration of the attack. */
- Uint16 attack_level; /**< Level at the start of the attack. */
- Uint16 fade_length; /**< Duration of the fade. */
- Uint16 fade_level; /**< Level at the end of the fade. */
-} SDL_HapticRamp;
-
-/**
- * \brief A structure containing a template for a Left/Right effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.
- *
- * The Left/Right effect is used to explicitly control the large and small
- * motors, commonly found in modern game controllers. The small (right) motor
- * is high frequency, and the large (left) motor is low frequency.
- *
- * \sa SDL_HAPTIC_LEFTRIGHT
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticLeftRight
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect in milliseconds. */
-
- /* Rumble */
- Uint16 large_magnitude; /**< Control of the large controller motor. */
- Uint16 small_magnitude; /**< Control of the small controller motor. */
-} SDL_HapticLeftRight;
-
-/**
- * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.
- *
- * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.
- *
- * A custom force feedback effect is much like a periodic effect, where the
- * application can define its exact shape. You will have to allocate the
- * data yourself. Data should consist of channels * samples Uint16 samples.
- *
- * If channels is one, the effect is rotated using the defined direction.
- * Otherwise it uses the samples in data for the different axes.
- *
- * \sa SDL_HAPTIC_CUSTOM
- * \sa SDL_HapticEffect
- */
-typedef struct SDL_HapticCustom
-{
- /* Header */
- Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */
- SDL_HapticDirection direction; /**< Direction of the effect. */
-
- /* Replay */
- Uint32 length; /**< Duration of the effect. */
- Uint16 delay; /**< Delay before starting the effect. */
-
- /* Trigger */
- Uint16 button; /**< Button that triggers the effect. */
- Uint16 interval; /**< How soon it can be triggered again after button. */
-
- /* Custom */
- Uint8 channels; /**< Axes to use, minimum of one. */
- Uint16 period; /**< Sample periods. */
- Uint16 samples; /**< Amount of samples. */
- Uint16 *data; /**< Should contain channels*samples items. */
-
- /* Envelope */
- Uint16 attack_length; /**< Duration of the attack. */
- Uint16 attack_level; /**< Level at the start of the attack. */
- Uint16 fade_length; /**< Duration of the fade. */
- Uint16 fade_level; /**< Level at the end of the fade. */
-} SDL_HapticCustom;
-
-/**
- * \brief The generic template for any haptic effect.
- *
- * All values max at 32767 (0x7FFF). Signed values also can be negative.
- * Time values unless specified otherwise are in milliseconds.
- *
- * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767
- * value. Neither delay, interval, attack_length nor fade_length support
- * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.
- *
- * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of
- * ::SDL_HAPTIC_INFINITY.
- *
- * Button triggers may not be supported on all devices, it is advised to not
- * use them if possible. Buttons start at index 1 instead of index 0 like
- * the joystick.
- *
- * If both attack_length and fade_level are 0, the envelope is not used,
- * otherwise both values are used.
- *
- * Common parts:
- * \code
- * // Replay - All effects have this
- * Uint32 length; // Duration of effect (ms).
- * Uint16 delay; // Delay before starting effect.
- *
- * // Trigger - All effects have this
- * Uint16 button; // Button that triggers effect.
- * Uint16 interval; // How soon before effect can be triggered again.
- *
- * // Envelope - All effects except condition effects have this
- * Uint16 attack_length; // Duration of the attack (ms).
- * Uint16 attack_level; // Level at the start of the attack.
- * Uint16 fade_length; // Duration of the fade out (ms).
- * Uint16 fade_level; // Level at the end of the fade.
- * \endcode
- *
- *
- * Here we have an example of a constant effect evolution in time:
- * \verbatim
- Strength
- ^
- |
- | effect level --> _________________
- | / \
- | / \
- | / \
- | / \
- | attack_level --> | \
- | | | <--- fade_level
- |
- +--------------------------------------------------> Time
- [--] [---]
- attack_length fade_length
-
- [------------------][-----------------------]
- delay length
- \endverbatim
- *
- * Note either the attack_level or the fade_level may be above the actual
- * effect level.
- *
- * \sa SDL_HapticConstant
- * \sa SDL_HapticPeriodic
- * \sa SDL_HapticCondition
- * \sa SDL_HapticRamp
- * \sa SDL_HapticLeftRight
- * \sa SDL_HapticCustom
- */
-typedef union SDL_HapticEffect
-{
- /* Common for all force feedback effects */
- Uint16 type; /**< Effect type. */
- SDL_HapticConstant constant; /**< Constant effect. */
- SDL_HapticPeriodic periodic; /**< Periodic effect. */
- SDL_HapticCondition condition; /**< Condition effect. */
- SDL_HapticRamp ramp; /**< Ramp effect. */
- SDL_HapticLeftRight leftright; /**< Left/Right effect. */
- SDL_HapticCustom custom; /**< Custom effect. */
-} SDL_HapticEffect;
-
-
-/* Function prototypes */
-
-/**
- * Count the number of haptic devices attached to the system.
- *
- * \returns the number of haptic devices detected on the system or a negative
- * error code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticName
- */
-extern DECLSPEC int SDLCALL SDL_NumHaptics(void);
-
-/**
- * Get the implementation dependent name of a haptic device.
- *
- * This can be called before any joysticks are opened. If no name can be
- * found, this function returns NULL.
- *
- * \param device_index index of the device to query.
- * \returns the name of the device or NULL on failure; call SDL_GetError() for
- * more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_NumHaptics
- */
-extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);
-
-/**
- * Open a haptic device for use.
- *
- * The index passed as an argument refers to the N'th haptic device on this
- * system.
- *
- * When opening a haptic device, its gain will be set to maximum and
- * autocenter will be disabled. To modify these values use SDL_HapticSetGain()
- * and SDL_HapticSetAutocenter().
- *
- * \param device_index index of the device to open
- * \returns the device identifier or NULL on failure; call SDL_GetError() for
- * more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticClose
- * \sa SDL_HapticIndex
- * \sa SDL_HapticOpenFromJoystick
- * \sa SDL_HapticOpenFromMouse
- * \sa SDL_HapticPause
- * \sa SDL_HapticSetAutocenter
- * \sa SDL_HapticSetGain
- * \sa SDL_HapticStopAll
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);
-
-/**
- * Check if the haptic device at the designated index has been opened.
- *
- * \param device_index the index of the device to query
- * \returns 1 if it has been opened, 0 if it hasn't or on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticIndex
- * \sa SDL_HapticOpen
- */
-extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);
-
-/**
- * Get the index of a haptic device.
- *
- * \param haptic the SDL_Haptic device to query
- * \returns the index of the specified haptic device or a negative error code
- * on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpen
- * \sa SDL_HapticOpened
- */
-extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);
-
-/**
- * Query whether or not the current mouse has haptic capabilities.
- *
- * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpenFromMouse
- */
-extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);
-
-/**
- * Try to open a haptic device from the current mouse.
- *
- * \returns the haptic device identifier or NULL on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpen
- * \sa SDL_MouseIsHaptic
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);
-
-/**
- * Query if a joystick has haptic features.
- *
- * \param joystick the SDL_Joystick to test for haptic capabilities
- * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a
- * negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpenFromJoystick
- */
-extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);
-
-/**
- * Open a haptic device for use from a joystick device.
- *
- * You must still close the haptic device separately. It will not be closed
- * with the joystick.
- *
- * When opened from a joystick you should first close the haptic device before
- * closing the joystick device. If not, on some implementations the haptic
- * device will also get unallocated and you'll be unable to use force feedback
- * on that device.
- *
- * \param joystick the SDL_Joystick to create a haptic device from
- * \returns a valid haptic device identifier on success or NULL on failure;
- * call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticClose
- * \sa SDL_HapticOpen
- * \sa SDL_JoystickIsHaptic
- */
-extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *
- joystick);
-
-/**
- * Close a haptic device previously opened with SDL_HapticOpen().
- *
- * \param haptic the SDL_Haptic device to close
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpen
- */
-extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
-
-/**
- * Get the number of effects a haptic device can store.
- *
- * On some platforms this isn't fully supported, and therefore is an
- * approximation. Always check to see if your created effect was actually
- * created and do not rely solely on SDL_HapticNumEffects().
- *
- * \param haptic the SDL_Haptic device to query
- * \returns the number of effects the haptic device can store or a negative
- * error code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticNumEffectsPlaying
- * \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
-
-/**
- * Get the number of effects a haptic device can play at the same time.
- *
- * This is not supported on all platforms, but will always return a value.
- *
- * \param haptic the SDL_Haptic device to query maximum playing effects
- * \returns the number of effects the haptic device can play at the same time
- * or a negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticNumEffects
- * \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);
-
-/**
- * Get the haptic device's supported features in bitwise manner.
- *
- * \param haptic the SDL_Haptic device to query
- * \returns a list of supported haptic features in bitwise manner (OR'd), or 0
- * on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticEffectSupported
- * \sa SDL_HapticNumEffects
- */
-extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
-
-
-/**
- * Get the number of haptic axes the device has.
- *
- * The number of haptic axes might be useful if working with the
- * SDL_HapticDirection effect.
- *
- * \param haptic the SDL_Haptic device to query
- * \returns the number of axes on success or a negative error code on failure;
- * call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
-
-/**
- * Check to see if an effect is supported by a haptic device.
- *
- * \param haptic the SDL_Haptic device to query
- * \param effect the desired effect to query
- * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
- * negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticNewEffect
- * \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,
- SDL_HapticEffect *
- effect);
-
-/**
- * Create a new haptic effect on a specified device.
- *
- * \param haptic an SDL_Haptic device to create the effect on
- * \param effect an SDL_HapticEffect structure containing the properties of
- * the effect to create
- * \returns the ID of the effect on success or a negative error code on
- * failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticDestroyEffect
- * \sa SDL_HapticRunEffect
- * \sa SDL_HapticUpdateEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,
- SDL_HapticEffect * effect);
-
-/**
- * Update the properties of an effect.
- *
- * Can be used dynamically, although behavior when dynamically changing
- * direction may be strange. Specifically the effect may re-upload itself and
- * start playing from the start. You also cannot change the type either when
- * running SDL_HapticUpdateEffect().
- *
- * \param haptic the SDL_Haptic device that has the effect
- * \param effect the identifier of the effect to update
- * \param data an SDL_HapticEffect structure containing the new effect
- * properties to use
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticDestroyEffect
- * \sa SDL_HapticNewEffect
- * \sa SDL_HapticRunEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,
- int effect,
- SDL_HapticEffect * data);
-
-/**
- * Run the haptic effect on its associated haptic device.
- *
- * To repeat the effect over and over indefinitely, set `iterations` to
- * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make
- * one instance of the effect last indefinitely (so the effect does not fade),
- * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY`
- * instead.
- *
- * \param haptic the SDL_Haptic device to run the effect on
- * \param effect the ID of the haptic effect to run
- * \param iterations the number of iterations to run the effect; use
- * `SDL_HAPTIC_INFINITY` to repeat forever
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticDestroyEffect
- * \sa SDL_HapticGetEffectStatus
- * \sa SDL_HapticStopEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
- int effect,
- Uint32 iterations);
-
-/**
- * Stop the haptic effect on its associated haptic device.
- *
- * *
- *
- * \param haptic the SDL_Haptic device to stop the effect on
- * \param effect the ID of the haptic effect to stop
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticDestroyEffect
- * \sa SDL_HapticRunEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,
- int effect);
-
-/**
- * Destroy a haptic effect on the device.
- *
- * This will stop the effect if it's running. Effects are automatically
- * destroyed when the device is closed.
- *
- * \param haptic the SDL_Haptic device to destroy the effect on
- * \param effect the ID of the haptic effect to destroy
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticNewEffect
- */
-extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
- int effect);
-
-/**
- * Get the status of the current effect on the specified haptic device.
- *
- * Device must support the SDL_HAPTIC_STATUS feature.
- *
- * \param haptic the SDL_Haptic device to query for the effect status on
- * \param effect the ID of the haptic effect to query its status
- * \returns 0 if it isn't playing, 1 if it is playing, or a negative error
- * code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticRunEffect
- * \sa SDL_HapticStopEffect
- */
-extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,
- int effect);
-
-/**
- * Set the global gain of the specified haptic device.
- *
- * Device must support the SDL_HAPTIC_GAIN feature.
- *
- * The user may specify the maximum gain by setting the environment variable
- * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to
- * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the
- * maximum.
- *
- * \param haptic the SDL_Haptic device to set the gain on
- * \param gain value to set the gain to, should be between 0 and 100 (0 - 100)
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);
-
-/**
- * Set the global autocenter of the device.
- *
- * Autocenter should be between 0 and 100. Setting it to 0 will disable
- * autocentering.
- *
- * Device must support the SDL_HAPTIC_AUTOCENTER feature.
- *
- * \param haptic the SDL_Haptic device to set autocentering on
- * \param autocenter value to set autocenter to (0-100)
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticQuery
- */
-extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,
- int autocenter);
-
-/**
- * Pause a haptic device.
- *
- * Device must support the `SDL_HAPTIC_PAUSE` feature. Call
- * SDL_HapticUnpause() to resume playback.
- *
- * Do not modify the effects nor add new ones while the device is paused. That
- * can cause all sorts of weird errors.
- *
- * \param haptic the SDL_Haptic device to pause
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticUnpause
- */
-extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);
-
-/**
- * Unpause a haptic device.
- *
- * Call to unpause after SDL_HapticPause().
- *
- * \param haptic the SDL_Haptic device to unpause
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticPause
- */
-extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);
-
-/**
- * Stop all the currently playing effects on a haptic device.
- *
- * \param haptic the SDL_Haptic device to stop
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);
-
-/**
- * Check whether rumble is supported on a haptic device.
- *
- * \param haptic haptic device to check for rumble support
- * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a
- * negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticRumbleInit
- * \sa SDL_HapticRumblePlay
- * \sa SDL_HapticRumbleStop
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);
-
-/**
- * Initialize a haptic device for simple rumble playback.
- *
- * \param haptic the haptic device to initialize for simple rumble playback
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticOpen
- * \sa SDL_HapticRumblePlay
- * \sa SDL_HapticRumbleStop
- * \sa SDL_HapticRumbleSupported
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);
-
-/**
- * Run a simple rumble effect on a haptic device.
- *
- * \param haptic the haptic device to play the rumble effect on
- * \param strength strength of the rumble to play as a 0-1 float value
- * \param length length of the rumble to play in milliseconds
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticRumbleInit
- * \sa SDL_HapticRumbleStop
- * \sa SDL_HapticRumbleSupported
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );
-
-/**
- * Stop the simple rumble on a haptic device.
- *
- * \param haptic the haptic device to stop the rumble effect on
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HapticRumbleInit
- * \sa SDL_HapticRumblePlay
- * \sa SDL_HapticRumbleSupported
- */
-extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_haptic_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_hidapi.h b/libs/SDL2/include/SDL_hidapi.h
deleted file mode 100644
index 057510035..000000000
--- a/libs/SDL2/include/SDL_hidapi.h
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_hidapi.h
- *
- * Header file for SDL HIDAPI functions.
- *
- * This is an adaptation of the original HIDAPI interface by Alan Ott,
- * and includes source code licensed under the following BSD license:
- *
- Copyright (c) 2010, Alan Ott, Signal 11 Software
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Signal 11 Software nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- *
- * If you would like a version of SDL without this code, you can build SDL
- * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example
- * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework.
- */
-
-#ifndef SDL_hidapi_h_
-#define SDL_hidapi_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief A handle representing an open HID device
- */
-struct SDL_hid_device_;
-typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */
-
-/** hidapi info structure */
-/**
- * \brief Information about a connected HID device
- */
-typedef struct SDL_hid_device_info
-{
- /** Platform-specific device path */
- char *path;
- /** Device Vendor ID */
- unsigned short vendor_id;
- /** Device Product ID */
- unsigned short product_id;
- /** Serial Number */
- wchar_t *serial_number;
- /** Device Release Number in binary-coded decimal,
- also known as Device Version Number */
- unsigned short release_number;
- /** Manufacturer String */
- wchar_t *manufacturer_string;
- /** Product string */
- wchar_t *product_string;
- /** Usage Page for this Device/Interface
- (Windows/Mac only). */
- unsigned short usage_page;
- /** Usage for this Device/Interface
- (Windows/Mac only).*/
- unsigned short usage;
- /** The USB interface which this logical device
- represents.
-
- * Valid on both Linux implementations in all cases.
- * Valid on the Windows implementation only if the device
- contains more than one interface. */
- int interface_number;
-
- /** Additional information about the USB interface.
- Valid on libusb and Android implementations. */
- int interface_class;
- int interface_subclass;
- int interface_protocol;
-
- /** Pointer to the next device */
- struct SDL_hid_device_info *next;
-} SDL_hid_device_info;
-
-
-/**
- * Initialize the HIDAPI library.
- *
- * This function initializes the HIDAPI library. Calling it is not strictly
- * necessary, as it will be called automatically by SDL_hid_enumerate() and
- * any of the SDL_hid_open_*() functions if it is needed. This function should
- * be called at the beginning of execution however, if there is a chance of
- * HIDAPI handles being opened by different threads simultaneously.
- *
- * Each call to this function should have a matching call to SDL_hid_exit()
- *
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_hid_exit
- */
-extern DECLSPEC int SDLCALL SDL_hid_init(void);
-
-/**
- * Finalize the HIDAPI library.
- *
- * This function frees all of the static data associated with HIDAPI. It
- * should be called at the end of execution to avoid memory leaks.
- *
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_hid_init
- */
-extern DECLSPEC int SDLCALL SDL_hid_exit(void);
-
-/**
- * Check to see if devices may have been added or removed.
- *
- * Enumerating the HID devices is an expensive operation, so you can call this
- * to see if there have been any system device changes since the last call to
- * this function. A change in the counter returned doesn't necessarily mean
- * that anything has changed, but you can call SDL_hid_enumerate() to get an
- * updated device list.
- *
- * Calling this function for the first time may cause a thread or other system
- * resource to be allocated to track device change notifications.
- *
- * \returns a change counter that is incremented with each potential device
- * change, or 0 if device change detection isn't available.
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_hid_enumerate
- */
-extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void);
-
-/**
- * Enumerate the HID Devices.
- *
- * This function returns a linked list of all the HID devices attached to the
- * system which match vendor_id and product_id. If `vendor_id` is set to 0
- * then any vendor matches. If `product_id` is set to 0 then any product
- * matches. If `vendor_id` and `product_id` are both set to 0, then all HID
- * devices will be returned.
- *
- * \param vendor_id The Vendor ID (VID) of the types of device to open.
- * \param product_id The Product ID (PID) of the types of device to open.
- * \returns a pointer to a linked list of type SDL_hid_device_info, containing
- * information about the HID devices attached to the system, or NULL
- * in the case of failure. Free this linked list by calling
- * SDL_hid_free_enumeration().
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_hid_device_change_count
- */
-extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id);
-
-/**
- * Free an enumeration Linked List
- *
- * This function frees a linked list created by SDL_hid_enumerate().
- *
- * \param devs Pointer to a list of struct_device returned from
- * SDL_hid_enumerate().
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs);
-
-/**
- * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally
- * a serial number.
- *
- * If `serial_number` is NULL, the first device with the specified VID and PID
- * is opened.
- *
- * \param vendor_id The Vendor ID (VID) of the device to open.
- * \param product_id The Product ID (PID) of the device to open.
- * \param serial_number The Serial Number of the device to open (Optionally
- * NULL).
- * \returns a pointer to a SDL_hid_device object on success or NULL on
- * failure.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number);
-
-/**
- * Open a HID device by its path name.
- *
- * The path name be determined by calling SDL_hid_enumerate(), or a
- * platform-specific path name can be used (eg: /dev/hidraw0 on Linux).
- *
- * \param path The path name of the device to open
- * \returns a pointer to a SDL_hid_device object on success or NULL on
- * failure.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */);
-
-/**
- * Write an Output report to a HID device.
- *
- * The first byte of `data` must contain the Report ID. For devices which only
- * support a single report, this must be set to 0x0. The remaining bytes
- * contain the report data. Since the Report ID is mandatory, calls to
- * SDL_hid_write() will always contain one more byte than the report contains.
- * For example, if a hid report is 16 bytes long, 17 bytes must be passed to
- * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report),
- * followed by the report data (16 bytes). In this example, the length passed
- * in would be 17.
- *
- * SDL_hid_write() will send the data on the first OUT endpoint, if one
- * exists. If it does not, it will send the data through the Control Endpoint
- * (Endpoint 0).
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param data The data to send, including the report number as the first
- * byte.
- * \param length The length in bytes of the data to send.
- * \returns the actual number of bytes written and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length);
-
-/**
- * Read an Input report from a HID device with timeout.
- *
- * Input reports are returned to the host through the INTERRUPT IN endpoint.
- * The first byte will contain the Report number if the device uses numbered
- * reports.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param data A buffer to put the read data into.
- * \param length The number of bytes to read. For devices with multiple
- * reports, make sure to read an extra byte for the report
- * number.
- * \param milliseconds timeout in milliseconds or -1 for blocking wait.
- * \returns the actual number of bytes read and -1 on error. If no packet was
- * available to be read within the timeout period, this function
- * returns 0.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds);
-
-/**
- * Read an Input report from a HID device.
- *
- * Input reports are returned to the host through the INTERRUPT IN endpoint.
- * The first byte will contain the Report number if the device uses numbered
- * reports.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param data A buffer to put the read data into.
- * \param length The number of bytes to read. For devices with multiple
- * reports, make sure to read an extra byte for the report
- * number.
- * \returns the actual number of bytes read and -1 on error. If no packet was
- * available to be read and the handle is in non-blocking mode, this
- * function returns 0.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length);
-
-/**
- * Set the device handle to be non-blocking.
- *
- * In non-blocking mode calls to SDL_hid_read() will return immediately with a
- * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read()
- * will wait (block) until there is data to read before returning.
- *
- * Nonblocking can be turned on and off at any time.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param nonblock enable or not the nonblocking reads - 1 to enable
- * nonblocking - 0 to disable nonblocking.
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock);
-
-/**
- * Send a Feature report to the device.
- *
- * Feature reports are sent over the Control endpoint as a Set_Report
- * transfer. The first byte of `data` must contain the Report ID. For devices
- * which only support a single report, this must be set to 0x0. The remaining
- * bytes contain the report data. Since the Report ID is mandatory, calls to
- * SDL_hid_send_feature_report() will always contain one more byte than the
- * report contains. For example, if a hid report is 16 bytes long, 17 bytes
- * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for
- * devices which do not use numbered reports), followed by the report data (16
- * bytes). In this example, the length passed in would be 17.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param data The data to send, including the report number as the first
- * byte.
- * \param length The length in bytes of the data to send, including the report
- * number.
- * \returns the actual number of bytes written and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length);
-
-/**
- * Get a feature report from a HID device.
- *
- * Set the first byte of `data` to the Report ID of the report to be read.
- * Make sure to allow space for this extra byte in `data`. Upon return, the
- * first byte will still contain the Report ID, and the report data will start
- * in data[1].
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param data A buffer to put the read data into, including the Report ID.
- * Set the first byte of `data` to the Report ID of the report to
- * be read, or set it to zero if your device does not use numbered
- * reports.
- * \param length The number of bytes to read, including an extra byte for the
- * report ID. The buffer can be longer than the actual report.
- * \returns the number of bytes read plus one for the report ID (which is
- * still in the first byte), or -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length);
-
-/**
- * Close a HID device.
- *
- * \param dev A device handle returned from SDL_hid_open().
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev);
-
-/**
- * Get The Manufacturer String from a HID device.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param string A wide string buffer to put the data into.
- * \param maxlen The length of the buffer in multiples of wchar_t.
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
-
-/**
- * Get The Product String from a HID device.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param string A wide string buffer to put the data into.
- * \param maxlen The length of the buffer in multiples of wchar_t.
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
-
-/**
- * Get The Serial Number String from a HID device.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param string A wide string buffer to put the data into.
- * \param maxlen The length of the buffer in multiples of wchar_t.
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);
-
-/**
- * Get a string from a HID device, based on its string index.
- *
- * \param dev A device handle returned from SDL_hid_open().
- * \param string_index The index of the string to get.
- * \param string A wide string buffer to put the data into.
- * \param maxlen The length of the buffer in multiples of wchar_t.
- * \returns 0 on success and -1 on error.
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen);
-
-/**
- * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers
- *
- * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan
- *
- * \since This function is available since SDL 2.0.18.
- */
-extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_hidapi_h_ */
-
-/* vi: set sts=4 ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_hints.h b/libs/SDL2/include/SDL_hints.h
deleted file mode 100644
index 00beef51e..000000000
--- a/libs/SDL2/include/SDL_hints.h
+++ /dev/null
@@ -1,2624 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_hints.h
- *
- * Official documentation for SDL configuration variables
- *
- * This file contains functions to set and get configuration hints,
- * as well as listing each of them alphabetically.
- *
- * The convention for naming hints is SDL_HINT_X, where "SDL_X" is
- * the environment variable that can be used to override the default.
- *
- * In general these hints are just that - they may or may not be
- * supported or applicable on any given platform, but they provide
- * a way for an application or user to give the library a hint as
- * to how they would like the library to work.
- */
-
-#ifndef SDL_hints_h_
-#define SDL_hints_h_
-
-#include "SDL_stdinc.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief A variable controlling whether the Android / iOS built-in
- * accelerometer should be listed as a joystick device.
- *
- * This variable can be set to the following values:
- * "0" - The accelerometer is not listed as a joystick
- * "1" - The accelerometer is available as a 3 axis joystick (the default).
- */
-#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
-
-/**
- * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed.
- *
- * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed
- * and your window is full-screen. This prevents the user from getting stuck in
- * your application if you've enabled keyboard grab.
- *
- * The variable can be set to the following values:
- * "0" - SDL will not handle Alt+Tab. Your application is responsible
- for handling Alt+Tab while the keyboard is grabbed.
- * "1" - SDL will minimize your window when Alt+Tab is pressed (default)
-*/
-#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
-
-/**
- * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
- * This is a debugging aid for developers and not expected to be used by end users. The default is "1"
- *
- * This variable can be set to the following values:
- * "0" - don't allow topmost
- * "1" - allow topmost
- */
-#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
-
-/**
- * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
-
-/**
- * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
- *
- * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
- *
- * If both hints were set then SDL_RWFromFile() will look into expansion files
- * after a given relative path was not found in the internal storage and assets.
- *
- * By default this hint is not set and the APK expansion files are not searched.
- */
-#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
-
-/**
- * \brief A variable to control whether the event loop will block itself when the app is paused.
- *
- * The variable can be set to the following values:
- * "0" - Non blocking.
- * "1" - Blocking. (default)
- *
- * The value should be set before SDL is initialized.
- */
-#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
-
-/**
- * \brief A variable to control whether SDL will pause audio in background
- * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
- *
- * The variable can be set to the following values:
- * "0" - Non paused.
- * "1" - Paused. (default)
- *
- * The value should be set before SDL is initialized.
- */
-#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"
-
-/**
- * \brief A variable to control whether we trap the Android back button to handle it manually.
- * This is necessary for the right mouse button to work on some Android devices, or
- * to be able to trap the back button for use in your code reliably. If set to true,
- * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of
- * SDL_SCANCODE_AC_BACK.
- *
- * The variable can be set to the following values:
- * "0" - Back button will be handled as usual for system. (default)
- * "1" - Back button will be trapped, allowing you to handle the key press
- * manually. (This will also let right mouse click work on systems
- * where the right mouse button functions as back.)
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
-
-/**
- * \brief Specify an application name.
- *
- * This hint lets you specify the application name sent to the OS when
- * required. For example, this will often appear in volume control applets for
- * audio streams, and in lists of applications which are inhibiting the
- * screensaver. You should use a string that describes your program ("My Game
- * 2: The Revenge")
- *
- * Setting this to "" or leaving it unset will have SDL use a reasonable
- * default: probably the application's name or "SDL Application" if SDL
- * doesn't have any better information.
- *
- * Note that, for audio streams, this can be overridden with
- * SDL_HINT_AUDIO_DEVICE_APP_NAME.
- *
- * On targets where this is not supported, this hint does nothing.
- */
-#define SDL_HINT_APP_NAME "SDL_APP_NAME"
-
-/**
- * \brief A variable controlling whether controllers used with the Apple TV
- * generate UI events.
- *
- * When UI events are generated by controller input, the app will be
- * backgrounded when the Apple TV remote's menu button is pressed, and when the
- * pause or B buttons on gamepads are pressed.
- *
- * More information about properly making use of controllers for the Apple TV
- * can be found here:
- * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
- *
- * This variable can be set to the following values:
- * "0" - Controller input does not generate UI events (the default).
- * "1" - Controller input generates UI events.
- */
-#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
-
-/**
- * \brief A variable controlling whether the Apple TV remote's joystick axes
- * will automatically match the rotation of the remote.
- *
- * This variable can be set to the following values:
- * "0" - Remote orientation does not affect joystick axes (the default).
- * "1" - Joystick axes are based on the orientation of the remote.
- */
-#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
-
-/**
- * \brief A variable controlling the audio category on iOS and Mac OS X
- *
- * This variable can be set to the following values:
- *
- * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
- * "playback" - Use the AVAudioSessionCategoryPlayback category
- *
- * For more information, see Apple's documentation:
- * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
- */
-#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY"
-
-/**
- * \brief Specify an application name for an audio device.
- *
- * Some audio backends (such as PulseAudio) allow you to describe your audio
- * stream. Among other things, this description might show up in a system
- * control panel that lets the user adjust the volume on specific audio
- * streams instead of using one giant master volume slider.
- *
- * This hints lets you transmit that information to the OS. The contents of
- * this hint are used while opening an audio device. You should use a string
- * that describes your program ("My Game 2: The Revenge")
- *
- * Setting this to "" or leaving it unset will have SDL use a reasonable
- * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is
- * set. Otherwise, it'll probably the application's name or "SDL Application"
- * if SDL doesn't have any better information.
- *
- * On targets where this is not supported, this hint does nothing.
- */
-#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME"
-
-/**
- * \brief Specify an application name for an audio device.
- *
- * Some audio backends (such as PulseAudio) allow you to describe your audio
- * stream. Among other things, this description might show up in a system
- * control panel that lets the user adjust the volume on specific audio
- * streams instead of using one giant master volume slider.
- *
- * This hints lets you transmit that information to the OS. The contents of
- * this hint are used while opening an audio device. You should use a string
- * that describes your what your program is playing ("audio stream" is
- * probably sufficient in many cases, but this could be useful for something
- * like "team chat" if you have a headset playing VoIP audio separately).
- *
- * Setting this to "" or leaving it unset will have SDL use a reasonable
- * default: "audio stream" or something similar.
- *
- * On targets where this is not supported, this hint does nothing.
- */
-#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME"
-
-/**
- * \brief Specify an application role for an audio device.
- *
- * Some audio backends (such as Pipewire) allow you to describe the role of
- * your audio stream. Among other things, this description might show up in
- * a system control panel or software for displaying and manipulating media
- * playback/capture graphs.
- *
- * This hints lets you transmit that information to the OS. The contents of
- * this hint are used while opening an audio device. You should use a string
- * that describes your what your program is playing (Game, Music, Movie,
- * etc...).
- *
- * Setting this to "" or leaving it unset will have SDL use a reasonable
- * default: "Game" or something similar.
- *
- * On targets where this is not supported, this hint does nothing.
- */
-#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE"
-
-/**
- * \brief A variable controlling speed/quality tradeoff of audio resampling.
- *
- * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
- * to handle audio resampling. There are different resampling modes available
- * that produce different levels of quality, using more CPU.
- *
- * If this hint isn't specified to a valid setting, or libsamplerate isn't
- * available, SDL will use the default, internal resampling algorithm.
- *
- * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available.
- *
- * This hint is currently only checked at audio subsystem initialization.
- *
- * This variable can be set to the following values:
- *
- * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
- * "1" or "fast" - Use fast, slightly higher quality resampling, if available
- * "2" or "medium" - Use medium quality resampling, if available
- * "3" or "best" - Use high quality resampling, if available
- */
-#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
-
-/**
- * \brief A variable controlling whether SDL updates joystick state when getting input events
- *
- * This variable can be set to the following values:
- *
- * "0" - You'll call SDL_JoystickUpdate() manually
- * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
- *
- * This hint can be toggled on and off at runtime.
- */
-#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
-
-/**
- * \brief A variable controlling whether SDL updates sensor state when getting input events
- *
- * This variable can be set to the following values:
- *
- * "0" - You'll call SDL_SensorUpdate() manually
- * "1" - SDL will automatically call SDL_SensorUpdate() (default)
- *
- * This hint can be toggled on and off at runtime.
- */
-#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
-
-/**
- * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
- *
- * The bitmap header version 4 is required for proper alpha channel support and
- * SDL will use it when required. Should this not be desired, this hint can
- * force the use of the 40 byte header version which is supported everywhere.
- *
- * The variable can be set to the following values:
- * "0" - Surfaces with a colorkey or an alpha channel are saved to a
- * 32-bit BMP file with an alpha mask. SDL will use the bitmap
- * header version 4 and set the alpha mask accordingly.
- * "1" - Surfaces with a colorkey or an alpha channel are saved to a
- * 32-bit BMP file without an alpha mask. The alpha channel data
- * will be in the file, but applications are going to ignore it.
- *
- * The default value is "0".
- */
-#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
-
-/**
- * \brief Override for SDL_GetDisplayUsableBounds()
- *
- * If set, this hint will override the expected results for
- * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
- * to do this, but this allows an embedded system to request that some of the
- * screen be reserved for other uses when paired with a well-behaved
- * application.
- *
- * The contents of this hint must be 4 comma-separated integers, the first
- * is the bounds x, then y, width and height, in that order.
- */
-#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
-
-/**
- * \brief Disable giving back control to the browser automatically
- * when running with asyncify
- *
- * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
- * such as refreshing the screen or polling events.
- *
- * This hint only applies to the emscripten platform
- *
- * The variable can be set to the following values:
- * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
- * "1" - Enable emscripten_sleep calls (the default)
- */
-#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
-
-/**
- * \brief override the binding element for keyboard inputs for Emscripten builds
- *
- * This hint only applies to the emscripten platform
- *
- * The variable can be one of
- * "#window" - The javascript window object (this is the default)
- * "#document" - The javascript document object
- * "#screen" - the javascript window.screen object
- * "#canvas" - the WebGL canvas element
- * any other string without a leading # sign applies to the element on the page with that ID.
- */
-#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
-
-/**
- * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active
- *
- * The variable can be set to the following values:
- * "0" - Do not show the on-screen keyboard
- * "1" - Show the on-screen keyboard
- *
- * The default value is "1". This hint must be set before text input is activated.
- */
-#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD"
-
-/**
- * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
- *
- * The variable can be set to the following values:
- * "0" - Do not scan for Steam Controllers
- * "1" - Scan for Steam Controllers (the default)
- *
- * The default value is "1". This hint must be set before initializing the joystick subsystem.
- */
-#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
-
-/**
- * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue.
- *
- * This variable can be set to the following values, from least to most verbose:
- *
- * "0" - Don't log any events (default)
- * "1" - Log most events (other than the really spammy ones).
- * "2" - Include mouse and finger motion events.
- * "3" - Include SDL_SysWMEvent events.
- *
- * This is generally meant to be used to debug SDL itself, but can be useful
- * for application developers that need better visibility into what is going
- * on in the event queue. Logged events are sent through SDL_Log(), which
- * means by default they appear on stdout on most platforms or maybe
- * OutputDebugString() on Windows, and can be funneled by the app with
- * SDL_LogSetOutputFunction(), etc.
- *
- * This hint can be toggled on and off at runtime, if you only need to log
- * events for a small subset of program execution.
- */
-#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
-
-/**
- * \brief A variable controlling whether raising the window should be done more forcefully
- *
- * This variable can be set to the following values:
- * "0" - No forcing (the default)
- * "1" - Extra level of forcing
- *
- * At present, this is only an issue under MS Windows, which makes it nearly impossible to
- * programmatically move a window to the foreground, for "security" reasons. See
- * http://stackoverflow.com/a/34414846 for a discussion.
- */
-#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW"
-
-/**
- * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
- *
- * SDL can try to accelerate the SDL screen surface by using streaming
- * textures with a 3D rendering engine. This variable controls whether and
- * how this is done.
- *
- * This variable can be set to the following values:
- * "0" - Disable 3D acceleration
- * "1" - Enable 3D acceleration, using the default renderer.
- * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
- *
- * By default SDL tries to make a best guess for each platform whether
- * to use acceleration or not.
- */
-#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
-
-/**
- * \brief A variable that lets you manually hint extra gamecontroller db entries.
- *
- * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
- *
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
-
-/**
- * \brief A variable that lets you provide a file with extra gamecontroller db entries.
- *
- * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
- *
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
- */
-#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
-
-/**
- * \brief A variable that overrides the automatic controller type detection
- *
- * The variable should be comma separated entries, in the form: VID/PID=type
- *
- * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
- *
- * The type should be one of:
- * Xbox360
- * XboxOne
- * PS3
- * PS4
- * PS5
- * SwitchPro
- *
- * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- */
-#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
-
-/**
- * \brief A variable containing a list of devices to skip when scanning for game controllers.
- *
- * The format of the string is a comma separated list of USB VID/PID pairs
- * in hexadecimal form, e.g.
- *
- * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- * The variable can also take the form of @file, in which case the named
- * file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
-
-/**
- * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
- *
- * The format of the string is a comma separated list of USB VID/PID pairs
- * in hexadecimal form, e.g.
- *
- * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
- *
- * The variable can also take the form of @file, in which case the named
- * file will be loaded and interpreted as the value of the variable.
- */
-#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
-
-/**
- * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
- *
- * For example, on Nintendo Switch controllers, normally you'd get:
- *
- * (Y)
- * (X) (B)
- * (A)
- *
- * but if this hint is set, you'll get:
- *
- * (X)
- * (Y) (A)
- * (B)
- *
- * The variable can be set to the following values:
- * "0" - Report the face buttons by position, as though they were on an Xbox controller.
- * "1" - Report the face buttons by label instead of position
- *
- * The default value is "1". This hint may be set at any time.
- */
-#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
-
-/**
- * \brief A variable controlling whether grabbing input grabs the keyboard
- *
- * This variable can be set to the following values:
- * "0" - Grab will affect only the mouse
- * "1" - Grab will affect mouse and keyboard
- *
- * By default SDL will not grab the keyboard so system shortcuts still work.
- */
-#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
-
-/**
- * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate()
- *
- * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might
- * have the string "0x2563/0x0523,0x28de/0x0000"
- */
-#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES"
-
-/**
- * \brief A variable controlling whether the idle timer is disabled on iOS.
- *
- * When an iOS app does not receive touches for some time, the screen is
- * dimmed automatically. For games where the accelerometer is the only input
- * this is problematic. This functionality can be disabled by setting this
- * hint.
- *
- * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
- * accomplish the same thing on iOS. They should be preferred over this hint.
- *
- * This variable can be set to the following values:
- * "0" - Enable idle timer
- * "1" - Disable idle timer
- */
-#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
-
-/**
- * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
- *
- * The variable can be set to the following values:
- * "0" - SDL_TEXTEDITING events are sent, and it is the application's
- * responsibility to render the text from these events and
- * differentiate it somehow from committed text. (default)
- * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
- * and text that is being composed will be rendered in its own UI.
- */
-#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
-
-/**
- * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them.
- *
- * The variable can be set to the following values:
- * "0" - Native UI components are not display. (default)
- * "1" - Native UI components are displayed.
- */
-#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI"
-
-/**
- * \brief A variable to control if extended IME text support is enabled.
- * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise.
- * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated.
- *
- * The variable can be set to the following values:
- * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default)
- * "1" - Modern behavior.
- */
-#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT"
-
-/**
- * \brief A variable controlling whether the home indicator bar on iPhone X
- * should be hidden.
- *
- * This variable can be set to the following values:
- * "0" - The indicator bar is not hidden (default for windowed applications)
- * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
- * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
- */
-#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
-
-/**
- * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
- *
- * The variable can be set to the following values:
- * "0" - Disable joystick & gamecontroller input events when the
- * application is in the background.
- * "1" - Enable joystick & gamecontroller input events when the
- * application is in the background.
- *
- * The default value is "0". This hint may be set at any time.
- */
-#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
-
-/**
- * \brief A variable controlling whether the HIDAPI joystick drivers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI drivers are not used
- * "1" - HIDAPI drivers are used (the default)
- *
- * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE"
-
-/**
- * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement
- * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2)
- * this is useful for applications that need full compatibility for things like ADSR envelopes.
- * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0"
- * Rumble is both at any arbitrary value,
- * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0"
- *
- * This variable can be set to the following values:
- * "0" - Normal rumble behavior is behavior is used (default)
- * "1" - Proper GameCube controller rumble behavior is used
- *
- */
-#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS"
-
-/**
- * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver
- *
- * This variable can be set to the following values:
- * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad
- * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS"
-
-/**
- * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver
- *
- * This variable can be set to the following values:
- * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default)
- * "1" - Left and right Joy-Con controllers will be in vertical mode
- *
- * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms.
- *
- * It is not possible to use this driver on Windows, due to limitations in the default drivers
- * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
-
-/**
- * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
- *
- * This variable can be set to the following values:
- * "0" - extended reports are not enabled (the default)
- * "1" - extended reports
- *
- * Extended input reports allow rumble on Bluetooth PS4 controllers, but
- * break DirectInput handling for applications that don't use SDL.
- *
- * Once extended reports are enabled, they can not be disabled without
- * power cycling the controller.
- *
- * For compatibility with applications written for versions of SDL prior
- * to the introduction of PS5 controller support, this value will also
- * control the state of extended reports on PS5 controllers when the
- * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5"
-
-/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller.
- *
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED"
-
-/**
- * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver.
- *
- * This variable can be set to the following values:
- * "0" - extended reports are not enabled (the default)
- * "1" - extended reports
- *
- * Extended input reports allow rumble on Bluetooth PS5 controllers, but
- * break DirectInput handling for applications that don't use SDL.
- *
- * Once extended reports are enabled, they can not be disabled without
- * power cycling the controller.
- *
- * For compatibility with applications written for versions of SDL prior
- * to the introduction of PS5 controller support, this value defaults to
- * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access
- * and may prompt the user for permission on iOS and Android.
- *
- * The default is "0"
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
-
-/**
- * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened
- *
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
- *
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"
-
-/**
- * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened
- *
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
- *
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED"
-
-/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller.
- *
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII"
-
-/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller.
- *
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360"
-
-/**
- * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller.
- *
- * This variable can be set to the following values:
- * "0" - player LEDs are not enabled
- * "1" - player LEDs are enabled (the default)
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS"
-
-/**
- * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used.
- *
- * This variable can be set to the following values:
- * "0" - HIDAPI driver is not used
- * "1" - HIDAPI driver is used
- *
- * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE"
-
-/**
- * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened
- *
- * This variable can be set to the following values:
- * "0" - home button LED is turned off
- * "1" - home button LED is turned on
- *
- * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4.
- */
-#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED"
-
-/**
- * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
- *
- * This variable can be set to the following values:
- * "0" - RAWINPUT drivers are not used
- * "1" - RAWINPUT drivers are used (the default)
- */
-#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT"
-
-/**
- * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput.
- *
- * This variable can be set to the following values:
- * "0" - RAWINPUT driver will only use data from raw input APIs
- * "1" - RAWINPUT driver will also pull data from XInput, providing
- * better trigger axes, guide button presses, and rumble support
- * for Xbox controllers
- *
- * The default is "1". This hint applies to any joysticks opened after setting the hint.
- */
-#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"
-
-/**
- * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks
- *
- * This variable can be set to the following values:
- * "0" - ROG Chakram mice do not show up as joysticks (the default)
- * "1" - ROG Chakram mice show up as joysticks
- */
-#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM"
-
-/**
- * \brief A variable controlling whether a separate thread should be used
- * for handling joystick detection and raw input messages on Windows
- *
- * This variable can be set to the following values:
- * "0" - A separate thread is not used (the default)
- * "1" - A separate thread is used for handling raw input messages
- *
- */
-#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
-
-/**
- * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling.
- *
- * This variable can be set to the following values:
- * "0" - WGI is not used
- * "1" - WGI is used (the default)
- */
-#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI"
-
-/**
- * \brief Determines whether SDL enforces that DRM master is required in order
- * to initialize the KMSDRM video backend.
- *
- * The DRM subsystem has a concept of a "DRM master" which is a DRM client that
- * has the ability to set planes, set cursor, etc. When SDL is DRM master, it
- * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL
- * is still able to process input and query attributes of attached displays,
- * but it cannot change display state or draw to the screen directly.
- *
- * In some cases, it can be useful to have the KMSDRM backend even if it cannot
- * be used for rendering. An app may want to use SDL for input processing while
- * using another rendering API (such as an MMAL overlay on Raspberry Pi) or
- * using its own code to render to DRM overlays that SDL doesn't support.
- *
- * This hint must be set before initializing the video subsystem.
- *
- * This variable can be set to the following values:
- * "0" - SDL will allow usage of the KMSDRM backend without DRM master
- * "1" - SDL Will require DRM master to use the KMSDRM backend (default)
- */
-#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER"
-
-/**
- * \brief A comma separated list of devices to open as joysticks
- *
- * This variable is currently only used by the Linux joystick driver.
- */
-#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE"
-
-/**
- * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog.
- *
- * This variable can be set to the following values:
- * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default)
- * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats
- */
-#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS"
-
-/**
- * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values.
- *
- * This variable can be set to the following values:
- * "0" - Return digital hat values based on unfiltered input axis values
- * "1" - Return digital hat values with deadzones on the input axes taken into account (the default)
- */
-#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES"
-
-/**
- * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux
- *
- * This variable can be set to the following values:
- * "0" - Use /dev/input/event*
- * "1" - Use /dev/input/js*
- *
- * By default the /dev/input/event* interfaces are used
- */
-#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC"
-
-/**
- * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.
- *
- * This variable can be set to the following values:
- * "0" - Return unfiltered joystick axis values (the default)
- * "1" - Return axis values with deadzones taken into account
- */
-#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
-
-/**
-* \brief When set don't force the SDL app to become a foreground process
-*
-* This hint only applies to Mac OS X.
-*
-*/
-#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP"
-
-/**
- * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
- *
- * If present, holding ctrl while left clicking will generate a right click
- * event when on Mac.
- */
-#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
-
-/**
- * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing
- *
- * This variable can be set to the following values:
- * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default).
- * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution.
- *
- * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread
- * hangs because it's waiting for that background thread, but that background thread is also hanging because it's
- * waiting for the main thread to do an update, this might fix your issue.
- *
- * This hint only applies to macOS.
- *
- * This hint is available since SDL 2.24.0.
- *
- */
-#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH"
-
-/**
- * \brief A variable setting the double click radius, in pixels.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
-
-/**
- * \brief A variable setting the double click time, in milliseconds.
- */
-#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
-
-/**
- * \brief Allow mouse click events when clicking to focus an SDL window
- *
- * This variable can be set to the following values:
- * "0" - Ignore mouse clicks that activate a window
- * "1" - Generate events for mouse clicks that activate a window
- *
- * By default SDL will ignore mouse clicks that activate a window
- */
-#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
-
-/**
- * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
- */
-#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
-
-/**
- * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window
- *
- * This variable can be set to the following values:
- * "0" - Relative mouse mode constrains the mouse to the window
- * "1" - Relative mouse mode constrains the mouse to the center of the window
- *
- * Constraining to the center of the window works better for FPS games and when the
- * application is running over RDP. Constraining to the whole window works better
- * for 2D games and increases the chance that the mouse will be in the correct
- * position when using high DPI mice.
- *
- * By default SDL will constrain the mouse to the center of the window
- */
-#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER"
-
-/**
- * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
- *
- * This variable can be set to the following values:
- * "0" - Relative mouse mode uses raw input
- * "1" - Relative mouse mode uses mouse warping
- *
- * By default SDL will use raw input for relative mouse mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
-
-/**
- * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
- *
- * This variable can be set to the following values:
- * "0" - Relative motion is unaffected by DPI or renderer's logical size
- * "1" - Relative motion is scaled according to DPI scaling and logical size
- *
- * By default relative mouse deltas are affected by DPI and renderer scaling
- */
-#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
-
-/**
- * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
- */
-#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
-
-/**
- * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion.
- *
- * This variable can be set to the following values:
- * "0" - Relative mouse motion will be unscaled (the default)
- * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve.
- *
- * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale.
- */
-#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE"
-
-/**
- * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode.
- *
- * This variable can be set to the following values:
- * "0" - Warping the mouse will not generate a motion event in relative mode
- * "1" - Warping the mouse will generate a motion event in relative mode
- *
- * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping.
- */
-#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION"
-
-/**
- * \brief A variable controlling whether mouse events should generate synthetic touch events
- *
- * This variable can be set to the following values:
- * "0" - Mouse events will not generate touch events (default for desktop platforms)
- * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
- */
-#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
-
-/**
- * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed
- *
- * This variable can be set to the following values:
- * "0" - The mouse is not captured while mouse buttons are pressed
- * "1" - The mouse is captured while mouse buttons are pressed
- *
- * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged
- * outside the window, the application continues to receive mouse events until the button is
- * released.
- */
-#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE"
-
-/**
- * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
- *
- * This hint only applies to Unix-like platforms, and should set before
- * any calls to SDL_Init()
- *
- * The variable can be set to the following values:
- * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
- * catches a signal, convert it into an SDL_QUIT event.
- * "1" - SDL will not install a signal handler at all.
- */
-#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
-
-/**
- * \brief A variable controlling what driver to use for OpenGL ES contexts.
- *
- * On some platforms, currently Windows and X11, OpenGL drivers may support
- * creating contexts with an OpenGL ES profile. By default SDL uses these
- * profiles, when available, otherwise it attempts to load an OpenGL ES
- * library, e.g. that provided by the ANGLE project. This variable controls
- * whether SDL follows this default behaviour or will always load an
- * OpenGL ES library.
- *
- * Circumstances where this is useful include
- * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
- * or emulator, e.g. those from ARM, Imagination or Qualcomm.
- * - Resolving OpenGL ES function addresses at link time by linking with
- * the OpenGL ES library instead of querying them at run time with
- * SDL_GL_GetProcAddress().
- *
- * Caution: for an application to work with the default behaviour across
- * different OpenGL drivers it must query the OpenGL ES function
- * addresses at run time using SDL_GL_GetProcAddress().
- *
- * This variable is ignored on most platforms because OpenGL ES is native
- * or not supported.
- *
- * This variable can be set to the following values:
- * "0" - Use ES profile of OpenGL, if available. (Default when not set.)
- * "1" - Load OpenGL ES library using the default library names.
- *
- */
-#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
-
-/**
- * \brief A variable controlling which orientations are allowed on iOS/Android.
- *
- * In some circumstances it is necessary to be able to explicitly control
- * which UI orientations are allowed.
- *
- * This variable is a space delimited list of the following values:
- * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
- */
-#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
-
-/**
- * \brief A variable controlling the use of a sentinel event when polling the event queue
- *
- * This variable can be set to the following values:
- * "0" - Disable poll sentinels
- * "1" - Enable poll sentinels
- *
- * When polling for events, SDL_PumpEvents is used to gather new events from devices.
- * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will
- * become stuck until the new events stop.
- * This is most noticeable when moving a high frequency mouse.
- *
- * By default, poll sentinels are enabled.
- */
-#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL"
-
-/**
- * \brief Override for SDL_GetPreferredLocales()
- *
- * If set, this will be favored over anything the OS might report for the
- * user's preferred locales. Changing this hint at runtime will not generate
- * a SDL_LOCALECHANGED event (but if you can change the hint, you can push
- * your own event, if you want).
- *
- * The format of this hint is a comma-separated list of language and locale,
- * combined with an underscore, as is a common format: "en_GB". Locale is
- * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
- */
-#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
-
-/**
- * \brief A variable describing the content orientation on QtWayland-based platforms.
- *
- * On QtWayland platforms, windows are rotated client-side to allow for custom
- * transitions. In order to correctly position overlays (e.g. volume bar) and
- * gestures (e.g. events view, close/minimize gestures), the system needs to
- * know in which orientation the application is currently drawing its contents.
- *
- * This does not cause the window to be rotated or resized, the application
- * needs to take care of drawing the content in the right orientation (the
- * framebuffer is always in portrait mode).
- *
- * This variable can be one of the following values:
- * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
- *
- * Since SDL 2.0.22 this variable accepts a comma-separated list of values above.
- */
-#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
-
-/**
- * \brief Flags to set on QtWayland windows to integrate with the native window manager.
- *
- * On QtWayland platforms, this hint controls the flags to set on the windows.
- * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
- *
- * This variable is a space-separated list of the following values (empty = no flags):
- * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
- */
-#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
-
-/**
- * \brief A variable controlling whether the 2D render API is compatible or efficient.
- *
- * This variable can be set to the following values:
- *
- * "0" - Don't use batching to make rendering more efficient.
- * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls.
- *
- * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
- * it batches up draw requests and sends them all to the GPU only when forced
- * to (during SDL_RenderPresent, when changing render targets, by updating a
- * texture that the batch needs, etc). This is significantly more efficient,
- * but it can cause problems for apps that expect to render on top of the
- * render API's output. As such, SDL will disable batching if a specific
- * render backend is requested (since this might indicate that the app is
- * planning to use the underlying graphics API directly). This hint can
- * be used to explicitly request batching in this instance. It is a contract
- * that you will either never use the underlying graphics API directly, or
- * if you do, you will call SDL_RenderFlush() before you do so any current
- * batch goes to the GPU before your work begins. Not following this contract
- * will result in undefined behavior.
- */
-#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING"
-
-/**
- * \brief A variable controlling how the 2D render API renders lines
- *
- * This variable can be set to the following values:
- * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20)
- * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points)
- * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20)
- * "3" - Use the driver geometry API (correct, draws thicker diagonal lines)
- *
- * This variable should be set when the renderer is created.
- */
-#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD"
-
-/**
- * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
- *
- * This variable does not have any effect on the Direct3D 9 based renderer.
- *
- * This variable can be set to the following values:
- * "0" - Disable Debug Layer use
- * "1" - Enable Debug Layer use
- *
- * By default, SDL does not use Direct3D Debug Layer.
- */
-#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
-
-/**
- * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
- *
- * This variable can be set to the following values:
- * "0" - Thread-safety is not enabled (faster)
- * "1" - Thread-safety is enabled
- *
- * By default the Direct3D device is created with thread-safety disabled.
- */
-#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
-
-/**
- * \brief A variable specifying which render driver to use.
- *
- * If the application doesn't pick a specific renderer to use, this variable
- * specifies the name of the preferred renderer. If the preferred renderer
- * can't be initialized, the normal default renderer is used.
- *
- * This variable is case insensitive and can be set to the following values:
- * "direct3d"
- * "direct3d11"
- * "direct3d12"
- * "opengl"
- * "opengles2"
- * "opengles"
- * "metal"
- * "software"
- *
- * The default varies by platform, but it's the first one in the list that
- * is available on the current platform.
- */
-#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
-
-/**
- * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
- *
- * This variable can be set to the following values:
- * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
- * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
- *
- * By default letterbox is used
- */
-#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
-
-/**
- * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
- *
- * This variable can be set to the following values:
- * "0" - Disable shaders
- * "1" - Enable shaders
- *
- * By default shaders are used if OpenGL supports them.
- */
-#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
-
-/**
- * \brief A variable controlling the scaling quality
- *
- * This variable can be set to the following values:
- * "0" or "nearest" - Nearest pixel sampling
- * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
- * "2" or "best" - Currently this is the same as "linear"
- *
- * By default nearest pixel sampling is used
- */
-#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
-
-/**
- * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
- *
- * This variable can be set to the following values:
- * "0" - Disable vsync
- * "1" - Enable vsync
- *
- * By default SDL does not sync screen surface updates with vertical refresh.
- */
-#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
-
-/**
- * \brief A variable controlling whether the Metal render driver select low power device over default one
- *
- * This variable can be set to the following values:
- * "0" - Use the prefered OS device
- * "1" - Select a low power one
- *
- * By default the prefered OS device is used.
- */
-#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE"
-
-/**
- * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS
- *
- * This variable can be set to the following values:
- * "0" - It will be using VSYNC as defined in the main flag. Default
- * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed
- *
- * By default SDL does not enable the automatic VSYNC
- */
-#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC"
-
-/**
- * \brief A variable to control whether the return key on the soft keyboard
- * should hide the soft keyboard on Android and iOS.
- *
- * The variable can be set to the following values:
- * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
- * "1" - The return key will hide the keyboard.
- *
- * The value of this hint is used at runtime, so it can be changed at any time.
- */
-#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
-
-/**
- * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
- *
- * Also known as Z-order. The variable can take a negative or positive value.
- * The default is 10000.
- */
-#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
-
-/**
- * \brief Specify an "activity name" for screensaver inhibition.
- *
- * Some platforms, notably Linux desktops, list the applications which are
- * inhibiting the screensaver or other power-saving features.
- *
- * This hint lets you specify the "activity name" sent to the OS when
- * SDL_DisableScreenSaver() is used (or the screensaver is automatically
- * disabled). The contents of this hint are used when the screensaver is
- * disabled. You should use a string that describes what your program is doing
- * (and, therefore, why the screensaver is disabled). For example, "Playing a
- * game" or "Watching a video".
- *
- * Setting this to "" or leaving it unset will have SDL use a reasonable
- * default: "Playing a game" or something similar.
- *
- * On targets where this is not supported, this hint does nothing.
- */
-#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME"
-
-/**
- * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.
- *
- * On some platforms, like Linux, a realtime priority thread may be subject to restrictions
- * that require special handling by the application. This hint exists to let SDL know that
- * the app is prepared to handle said restrictions.
- *
- * On Linux, SDL will apply the following configuration to any thread that becomes realtime:
- * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
- * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
- * * Exceeding this limit will result in the kernel sending SIGKILL to the app,
- * * Refer to the man pages for more information.
- *
- * This variable can be set to the following values:
- * "0" - default platform specific behaviour
- * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy
- */
-#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
-
-/**
-* \brief A string specifying additional information to use with SDL_SetThreadPriority.
-*
-* By default SDL_SetThreadPriority will make appropriate system changes in order to
-* apply a thread priority. For example on systems using pthreads the scheduler policy
-* is changed automatically to a policy that works well with a given priority.
-* Code which has specific requirements can override SDL's default behavior with this hint.
-*
-* pthread hint values are "current", "other", "fifo" and "rr".
-* Currently no other platform hint values are defined but may be in the future.
-*
-* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro
-* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME
-* after calling SDL_SetThreadPriority().
-*/
-#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY"
-
-/**
-* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
-*
-* Use this hint in case you need to set SDL's threads stack size to other than the default.
-* This is specially useful if you build SDL against a non glibc libc library (such as musl) which
-* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
-* Support for this hint is currently available only in the pthread, Windows, and PSP backend.
-*
-* Instead of this hint, in 2.0.9 and later, you can use
-* SDL_CreateThreadWithStackSize(). This hint only works with the classic
-* SDL_CreateThread().
-*/
-#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE"
-
-/**
- * \brief A variable that controls the timer resolution, in milliseconds.
- *
- * The higher resolution the timer, the more frequently the CPU services
- * timer interrupts, and the more precise delays are, but this takes up
- * power and CPU time. This hint is only used on Windows.
- *
- * See this blog post for more information:
- * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
- *
- * If this variable is set to "0", the system timer resolution is not set.
- *
- * The default value is "1". This hint may be set at any time.
- */
-#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
-
-/**
- * \brief A variable controlling whether touch events should generate synthetic mouse events
- *
- * This variable can be set to the following values:
- * "0" - Touch events will not generate mouse events
- * "1" - Touch events will generate mouse events
- *
- * By default SDL will generate mouse events for touch events
- */
-#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
-
-/**
- * \brief A variable controlling which touchpad should generate synthetic mouse events
- *
- * This variable can be set to the following values:
- * "0" - Only front touchpad should generate mouse events. Default
- * "1" - Only back touchpad should generate mouse events.
- * "2" - Both touchpads should generate mouse events.
- *
- * By default SDL will generate mouse events for all touch devices
- */
-#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE"
-
-/**
- * \brief A variable controlling whether the Android / tvOS remotes
- * should be listed as joystick devices, instead of sending keyboard events.
- *
- * This variable can be set to the following values:
- * "0" - Remotes send enter/escape/arrow key events
- * "1" - Remotes are available as 2 axis, 2 button joysticks (the default).
- */
-#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
-
-/**
- * \brief A variable controlling whether the screensaver is enabled.
- *
- * This variable can be set to the following values:
- * "0" - Disable screensaver
- * "1" - Enable screensaver
- *
- * By default SDL will disable the screensaver.
- */
-#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
-
-/**
- * \brief Tell the video driver that we only want a double buffer.
- *
- * By default, most lowlevel 2D APIs will use a triple buffer scheme that
- * wastes no CPU time on waiting for vsync after issuing a flip, but
- * introduces a frame of latency. On the other hand, using a double buffer
- * scheme instead is recommended for cases where low latency is an important
- * factor because we save a whole frame of latency.
- * We do so by waiting for vsync immediately after issuing a flip, usually just
- * after eglSwapBuffers call in the backend's *_SwapWindow function.
- *
- * Since it's driver-specific, it's only supported where possible and
- * implemented. Currently supported the following drivers:
- *
- * - KMSDRM (kmsdrm)
- * - Raspberry Pi (raspberrypi)
- */
-#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER"
-
-/**
- * \brief A variable controlling whether the EGL window is allowed to be
- * composited as transparent, rather than opaque.
- *
- * Most window systems will always render windows opaque, even if the surface
- * format has an alpha channel. This is not always true, however, so by default
- * SDL will try to enforce opaque composition. To override this behavior, you
- * can set this hint to "1".
- */
-#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY"
-
-/**
- * \brief A variable controlling whether the graphics context is externally managed.
- *
- * This variable can be set to the following values:
- * "0" - SDL will manage graphics contexts that are attached to windows.
- * "1" - Disable graphics context management on windows.
- *
- * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
- * context will be automatically saved and restored when pausing the application. Additionally, some
- * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
- * behavior, which is desireable when the application manages the graphics context, such as
- * an externally managed OpenGL context or attaching a Vulkan surface to the window.
- */
-#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
-
-/**
- * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
- */
-#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
-
-/**
- * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
- *
- * This hint only applies to Mac OS X.
- *
- * The variable can be set to the following values:
- * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
- * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
- * button on their titlebars).
- * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
- * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
- * button on their titlebars).
- *
- * The default value is "1". This hint must be set before any windows are created.
- */
-#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
-
-/**
- * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.
- * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're
- * seeing if "true" causes more problems than it solves in modern times.
- *
- */
-#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
-
-/**
- * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used.
- *
- * This variable can be set to the following values:
- * "0" - libdecor use is disabled.
- * "1" - libdecor use is enabled (default).
- *
- * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
- */
-#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"
-
-/**
- * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations.
- *
- * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is
- * available. (Note that, by default, libdecor will use xdg-decoration itself if available).
- *
- * This variable can be set to the following values:
- * "0" - libdecor is enabled only if server-side decorations are unavailable.
- * "1" - libdecor is always enabled if available.
- *
- * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.
- */
-#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR"
-
-/**
- * \brief A variable controlling whether video mode emulation is enabled under Wayland.
- *
- * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application.
- * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled
- * desktop, the native display resolution.
- *
- * This variable can be set to the following values:
- * "0" - Video mode emulation is disabled.
- * "1" - Video mode emulation is enabled.
- *
- * By default video mode emulation is enabled.
- */
-#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION"
-
-/**
- * \brief Enable or disable mouse pointer warp emulation, needed by some older games.
- *
- * When this hint is set, any SDL will emulate mouse warps using relative mouse mode.
- * This is required for some older games (such as Source engine games), which warp the
- * mouse to the centre of the screen rather than using relative mouse motion. Note that
- * relative mouse mode may have different mouse acceleration behaviour than pointer warps.
- *
- * This variable can be set to the following values:
- * "0" - All mouse warps fail, as mouse warping is not available under wayland.
- * "1" - Some mouse warps will be emulated by forcing relative mouse mode.
- *
- * If not set, this is automatically enabled unless an application uses relative mouse
- * mode directly.
- */
-#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP"
-
-/**
-* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
-*
-* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
-* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
-* created SDL_Window:
-*
-* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
-* needed for example when sharing an OpenGL context across multiple windows.
-*
-* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
-* OpenGL rendering.
-*
-* This variable can be set to the following values:
-* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
-* share a pixel format with.
-*/
-#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
-
-/**
- * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL.
- *
- * This variable can be set to the following values:
- * "0" - Don't add any graphics flags to the SDL_WindowFlags
- * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags
- *
- * By default SDL will not make the foreign window compatible with OpenGL.
- */
-#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL"
-
-/**
- * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan.
- *
- * This variable can be set to the following values:
- * "0" - Don't add any graphics flags to the SDL_WindowFlags
- * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags
- *
- * By default SDL will not make the foreign window compatible with Vulkan.
- */
-#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN"
-
-/**
-* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
-*
-* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
-* can use two different sets of binaries, those compiled by the user from source
-* or those provided by the Chrome browser. In the later case, these binaries require
-* that SDL loads a DLL providing the shader compiler.
-*
-* This variable can be set to the following values:
-* "d3dcompiler_46.dll" - default, best for Vista or later.
-* "d3dcompiler_43.dll" - for XP support.
-* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
-*
-*/
-#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER"
-
-/**
- * \brief A variable controlling whether X11 should use GLX or EGL by default
- *
- * This variable can be set to the following values:
- * "0" - Use GLX
- * "1" - Use EGL
- *
- * By default SDL will use GLX when both are present.
- */
-#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
-
-/**
- * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
- *
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
- * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
- *
- * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
- *
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
-
-/**
- * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
- *
- * This variable can be set to the following values:
- * "0" - Disable _NET_WM_PING
- * "1" - Enable _NET_WM_PING
- *
- * By default SDL will use _NET_WM_PING, but for applications that know they
- * will not always be able to respond to ping requests in a timely manner they can
- * turn it off to avoid the window manager thinking the app is hung.
- * The hint is checked in CreateWindow.
- */
-#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
-
-/**
- * \brief A variable forcing the visual ID chosen for new X11 windows
- *
- */
-#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
-
-/**
- * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used.
- *
- * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11.
- * Now SDL never uses Xinerama, and does not check for this hint at all.
- * The preprocessor define is left here for source compatibility.
- */
-#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
-
-/**
- * \brief A variable controlling whether the X11 XRandR extension should be used.
- *
- * This variable can be set to the following values:
- * "0" - Disable XRandR
- * "1" - Enable XRandR
- *
- * By default SDL will use XRandR.
- */
-#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
-
-/**
- * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used.
- *
- * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11.
- * Now SDL never uses XVidMode, and does not check for this hint at all.
- * The preprocessor define is left here for source compatibility.
- */
-#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
-
-/**
- * \brief Controls how the fact chunk affects the loading of a WAVE file.
- *
- * The fact chunk stores information about the number of samples of a WAVE
- * file. The Standards Update from Microsoft notes that this value can be used
- * to 'determine the length of the data in seconds'. This is especially useful
- * for compressed formats (for which this is a mandatory chunk) if they produce
- * multiple sample frames per block and truncating the block is not allowed.
- * The fact chunk can exactly specify how many sample frames there should be
- * in this case.
- *
- * Unfortunately, most application seem to ignore the fact chunk and so SDL
- * ignores it by default as well.
- *
- * This variable can be set to the following values:
- *
- * "truncate" - Use the number of samples to truncate the wave data if
- * the fact chunk is present and valid
- * "strict" - Like "truncate", but raise an error if the fact chunk
- * is invalid, not present for non-PCM formats, or if the
- * data chunk doesn't have that many samples
- * "ignorezero" - Like "truncate", but ignore fact chunk if the number of
- * samples is zero
- * "ignore" - Ignore fact chunk entirely (default)
- */
-#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
-
-/**
- * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file.
- *
- * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
- * file) is not always reliable. In case the size is wrong, it's possible to
- * just ignore it and step through the chunks until a fixed limit is reached.
- *
- * Note that files that have trailing data unrelated to the WAVE file or
- * corrupt files may slow down the loading process without a reliable boundary.
- * By default, SDL stops after 10000 chunks to prevent wasting time. Use the
- * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
- *
- * This variable can be set to the following values:
- *
- * "force" - Always use the RIFF chunk size as a boundary for the chunk search
- * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default)
- * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB
- * "maximum" - Search for chunks until the end of file (not recommended)
- */
-#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
-
-/**
- * \brief Controls how a truncated WAVE file is handled.
- *
- * A WAVE file is considered truncated if any of the chunks are incomplete or
- * the data chunk size is not a multiple of the block size. By default, SDL
- * decodes until the first incomplete block, as most applications seem to do.
- *
- * This variable can be set to the following values:
- *
- * "verystrict" - Raise an error if the file is truncated
- * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored
- * "dropframe" - Decode until the first incomplete sample frame
- * "dropblock" - Decode until the first incomplete block (default)
- */
-#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
-
-/**
- * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
- * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
- * thread's name, but it tends to cause problems with other debuggers,
- * and the .NET runtime. Note that SDL 2.0.6 and later will still use
- * the (safer) SetThreadDescription API, introduced in the Windows 10
- * Creators Update, if available.
- *
- * The variable can be set to the following values:
- * "0" - SDL will raise the 0x406D1388 Exception to name threads.
- * This is the default behavior of SDL <= 2.0.4.
- * "1" - SDL will not raise this exception, and threads will be unnamed. (default)
- * This is necessary with .NET languages or debuggers that aren't Visual Studio.
- */
-#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
-
-/**
- * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic).
- *
- * If the mnemonics are enabled, then menus can be opened by pressing the Alt
- * key and the corresponding mnemonic (for example, Alt+F opens the File menu).
- * However, in case an invalid mnemonic is pressed, Windows makes an audible
- * beep to convey that nothing happened. This is true even if the window has
- * no menu at all!
- *
- * Because most SDL applications don't have menus, and some want to use the Alt
- * key for other purposes, SDL disables mnemonics (and the beeping) by default.
- *
- * Note: This also affects keyboard events: with mnemonics enabled, when a
- * menu is opened from the keyboard, you will not receive a KEYUP event for
- * the mnemonic key, and *might* not receive one for Alt.
- *
- * This variable can be set to the following values:
- * "0" - Alt+mnemonic does nothing, no beeping. (default)
- * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep.
- */
-#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS"
-
-/**
- * \brief A variable controlling whether the windows message loop is processed by SDL
- *
- * This variable can be set to the following values:
- * "0" - The window message loop is not run
- * "1" - The window message loop is processed in SDL_PumpEvents()
- *
- * By default SDL will process the windows message loop
- */
-#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
-
-/**
- * \brief Force SDL to use Critical Sections for mutexes on Windows.
- * On Windows 7 and newer, Slim Reader/Writer Locks are available.
- * They offer better performance, allocate no kernel ressources and
- * use less memory. SDL will fall back to Critical Sections on older
- * OS versions or if forced to by this hint.
- *
- * This variable can be set to the following values:
- * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default)
- * "1" - Force the use of Critical Sections in all cases.
- *
- */
-#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS"
-
-/**
- * \brief Force SDL to use Kernel Semaphores on Windows.
- * Kernel Semaphores are inter-process and require a context
- * switch on every interaction. On Windows 8 and newer, the
- * WaitOnAddress API is available. Using that and atomics to
- * implement semaphores increases performance.
- * SDL will fall back to Kernel Objects on older OS versions
- * or if forced to by this hint.
- *
- * This variable can be set to the following values:
- * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default)
- * "1" - Force the use of Kernel Objects in all cases.
- *
- */
-#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"
-
-/**
- * \brief A variable to specify custom icon resource id from RC file on Windows platform
- */
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
-#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
-
-/**
- * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
- *
- * The variable can be set to the following values:
- * "0" - SDL will generate a window-close event when it sees Alt+F4.
- * "1" - SDL will only do normal key handling for Alt+F4.
- */
-#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
-
-/**
- * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.
- * Direct3D 9Ex contains changes to state management that can eliminate device
- * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require
- * some changes to your application to cope with the new behavior, so this
- * is disabled by default.
- *
- * This hint must be set before initializing the video subsystem.
- *
- * For more information on Direct3D 9Ex, see:
- * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex
- * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements
- *
- * This variable can be set to the following values:
- * "0" - Use the original Direct3D 9 API (default)
- * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable)
- *
- */
-#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX"
-
-/**
- * \brief Controls whether SDL will declare the process to be DPI aware.
- *
- * This hint must be set before initializing the video subsystem.
- *
- * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with
- * a DPI scale factor.
- *
- * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext)
- * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel
- * even on high-DPI displays.
- *
- * For more information, see:
- * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows
- *
- * This variable can be set to the following values:
- * "" - Do not change the DPI awareness (default).
- * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later).
- * "system" - Request system DPI awareness. (Vista and later).
- * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later).
- * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later).
- * The most visible difference from "permonitor" is that window title bar will be scaled
- * to the visually correct size when dragging between monitors with different scale factors.
- * This is the preferred DPI awareness level.
- *
- * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best
- * available match.
- */
-#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS"
-
-/**
- * \brief Uses DPI-scaled points as the SDL coordinate system on Windows.
- *
- * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere.
- * This means windows will be appropriately sized, even when created on high-DPI displays with scaling.
- *
- * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings,
- * will create a window with an 800x600 client area (in pixels).
- *
- * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary),
- * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows.
- *
- * This variable can be set to the following values:
- * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging
- * between monitors with different scale factors (unless this is performed by
- * Windows itself, which is the case when the process is DPI unaware).
- * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on
- * displays with non-100% scale factors.
- */
-#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING"
-
-/**
- * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
- *
- * This variable can be set to the following values:
- * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
- * "1" - The window frame is interactive when the cursor is hidden
- *
- * By default SDL will allow interaction with the window frame when the cursor is hidden
- */
-#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
-
-/**
-* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called
-*
-* This variable can be set to the following values:
-* "0" - The window is activated when the SDL_ShowWindow function is called
-* "1" - The window is not activated when the SDL_ShowWindow function is called
-*
-* By default SDL will activate the window when the SDL_ShowWindow function is called
-*/
-#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN"
-
-/** \brief Allows back-button-press events on Windows Phone to be marked as handled
- *
- * Windows Phone devices typically feature a Back button. When pressed,
- * the OS will emit back-button-press events, which apps are expected to
- * handle in an appropriate manner. If apps do not explicitly mark these
- * events as 'Handled', then the OS will invoke its default behavior for
- * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
- * terminate the app (and attempt to switch to the previous app, or to the
- * device's home screen).
- *
- * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
- * to mark back-button-press events as Handled, if and when one is sent to
- * the app.
- *
- * Internally, Windows Phone sends back button events as parameters to
- * special back-button-press callback functions. Apps that need to respond
- * to back-button-press events are expected to register one or more
- * callback functions for such, shortly after being launched (during the
- * app's initialization phase). After the back button is pressed, the OS
- * will invoke these callbacks. If the app's callback(s) do not explicitly
- * mark the event as handled by the time they return, or if the app never
- * registers one of these callback, the OS will consider the event
- * un-handled, and it will apply its default back button behavior (terminate
- * the app).
- *
- * SDL registers its own back-button-press callback with the Windows Phone
- * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
- * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
- * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
- * If the hint's value is set to "1", the back button event's Handled
- * property will get set to 'true'. If the hint's value is set to something
- * else, or if it is unset, SDL will leave the event's Handled property
- * alone. (By default, the OS sets this property to 'false', to note.)
- *
- * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
- * back button is pressed, or can set it in direct-response to a back button
- * being pressed.
- *
- * In order to get notified when a back button is pressed, SDL apps should
- * register a callback function with SDL_AddEventWatch(), and have it listen
- * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
- * (Alternatively, SDL_KEYUP events can be listened-for. Listening for
- * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
- * set by such a callback, will be applied to the OS' current
- * back-button-press event.
- *
- * More details on back button behavior in Windows Phone apps can be found
- * at the following page, on Microsoft's developer site:
- * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
- */
-#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
-
-/** \brief Label text for a WinRT app's privacy policy link
- *
- * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
- * Microsoft mandates that this policy be available via the Windows Settings charm.
- * SDL provides code to add a link there, with its label text being set via the
- * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- * Please note that a privacy policy's contents are not set via this hint. A separate
- * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
- * policy.
- *
- * The contents of this hint should be encoded as a UTF8 string.
- *
- * The default value is "Privacy Policy". This hint should only be set during app
- * initialization, preferably before any calls to SDL_Init().
- *
- * For additional information on linking to a privacy policy, see the documentation for
- * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
-
-/**
- * \brief A URL to a WinRT app's privacy policy
- *
- * All network-enabled WinRT apps must make a privacy policy available to its
- * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
- * be available in the Windows Settings charm, as accessed from within the app.
- * SDL provides code to add a URL-based link there, which can point to the app's
- * privacy policy.
- *
- * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * before calling any SDL_Init() functions. The contents of the hint should
- * be a valid URL. For example, "http://www.example.com".
- *
- * The default value is "", which will prevent SDL from adding a privacy policy
- * link to the Settings charm. This hint should only be set during app init.
- *
- * The label text of an app's "Privacy Policy" link may be customized via another
- * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
- *
- * Please note that on Windows Phone, Microsoft does not provide standard UI
- * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
- * will not get used on that platform. Network-enabled phone apps should display
- * their privacy policy through some other, in-app means.
- */
-#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
-
-/**
- * \brief Mark X11 windows as override-redirect.
- *
- * If set, this _might_ increase framerate at the expense of the desktop
- * not working as expected. Override-redirect windows aren't noticed by the
- * window manager at all.
- *
- * You should probably only use this for fullscreen windows, and you probably
- * shouldn't even use it for that. But it's here if you want to try!
- */
-#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
-
-/**
- * \brief A variable that lets you disable the detection and use of Xinput gamepad devices
- *
- * The variable can be set to the following values:
- * "0" - Disable XInput detection (only uses direct input)
- * "1" - Enable XInput detection (the default)
- */
-#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
-
- /**
- * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices
- *
- * The variable can be set to the following values:
- * "0" - Disable DirectInput detection (only uses XInput)
- * "1" - Enable DirectInput detection (the default)
- */
-#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED"
-
-/**
- * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
- *
- * This hint is for backwards compatibility only and will be removed in SDL 2.1
- *
- * The default value is "0". This hint must be set before SDL_Init()
- */
-#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
-
-/**
- * \brief A variable that causes SDL to not ignore audio "monitors"
- *
- * This is currently only used for PulseAudio and ignored elsewhere.
- *
- * By default, SDL ignores audio devices that aren't associated with physical
- * hardware. Changing this hint to "1" will expose anything SDL sees that
- * appears to be an audio source or sink. This will add "devices" to the list
- * that the user probably doesn't want or need, but it can be useful in
- * scenarios where you want to hook up SDL to some sort of virtual device,
- * etc.
- *
- * The default value is "0". This hint must be set before SDL_Init().
- *
- * This hint is available since SDL 2.0.16. Before then, virtual devices are
- * always ignored.
- */
-#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS"
-
-/**
- * \brief A variable that forces X11 windows to create as a custom type.
- *
- * This is currently only used for X11 and ignored elsewhere.
- *
- * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property
- * to report to the window manager the type of window it wants to create.
- * This might be set to various things if SDL_WINDOW_TOOLTIP or
- * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that
- * haven't set a specific type, this hint can be used to specify a custom
- * type. For example, a dock window might set this to
- * "_NET_WM_WINDOW_TYPE_DOCK".
- *
- * If not set or set to "", this hint is ignored. This hint must be set
- * before the SDL_CreateWindow() call that it is intended to affect.
- *
- * This hint is available since SDL 2.0.22.
- */
-#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE"
-
-/**
- * \brief A variable that decides whether to send SDL_QUIT when closing the final window.
- *
- * By default, SDL sends an SDL_QUIT event when there is only one window
- * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most
- * apps would also take the loss of this window as a signal to terminate the
- * program.
- *
- * However, it's not unreasonable in some cases to have the program continue
- * to live on, perhaps to create new windows later.
- *
- * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event
- * when the final window is requesting to close. Note that in this case,
- * there are still other legitimate reasons one might get an SDL_QUIT
- * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c)
- * on Unix, etc.
- *
- * The default value is "1". This hint can be changed at any time.
- *
- * This hint is available since SDL 2.0.22. Before then, you always get
- * an SDL_QUIT event when closing the final window.
- */
-#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE"
-
-
-/**
- * \brief A variable that decides what video backend to use.
- *
- * By default, SDL will try all available video backends in a reasonable
- * order until it finds one that can work, but this hint allows the app
- * or user to force a specific target, such as "x11" if, say, you are
- * on Wayland but want to try talking to the X server instead.
- *
- * This functionality has existed since SDL 2.0.0 (indeed, before that)
- * but before 2.0.22 this was an environment variable only. In 2.0.22,
- * it was upgraded to a full SDL hint, so you can set the environment
- * variable as usual or programatically set the hint with SDL_SetHint,
- * which won't propagate to child processes.
- *
- * The default value is unset, in which case SDL will try to figure out
- * the best video backend on your behalf. This hint needs to be set
- * before SDL_Init() is called to be useful.
- *
- * This hint is available since SDL 2.0.22. Before then, you could set
- * the environment variable to get the same effect.
- */
-#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER"
-
-/**
- * \brief A variable that decides what audio backend to use.
- *
- * By default, SDL will try all available audio backends in a reasonable
- * order until it finds one that can work, but this hint allows the app
- * or user to force a specific target, such as "alsa" if, say, you are
- * on PulseAudio but want to try talking to the lower level instead.
- *
- * This functionality has existed since SDL 2.0.0 (indeed, before that)
- * but before 2.0.22 this was an environment variable only. In 2.0.22,
- * it was upgraded to a full SDL hint, so you can set the environment
- * variable as usual or programatically set the hint with SDL_SetHint,
- * which won't propagate to child processes.
- *
- * The default value is unset, in which case SDL will try to figure out
- * the best audio backend on your behalf. This hint needs to be set
- * before SDL_Init() is called to be useful.
- *
- * This hint is available since SDL 2.0.22. Before then, you could set
- * the environment variable to get the same effect.
- */
-#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER"
-
-/**
- * \brief A variable that decides what KMSDRM device to use.
- *
- * Internally, SDL might open something like "/dev/dri/cardNN" to
- * access KMSDRM functionality, where "NN" is a device index number.
- *
- * SDL makes a guess at the best index to use (usually zero), but the
- * app or user can set this hint to a number between 0 and 99 to
- * force selection.
- *
- * This hint is available since SDL 2.24.0.
- */
-#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX"
-
-
-/**
- * \brief A variable that treats trackpads as touch devices.
- *
- * On macOS (and possibly other platforms in the future), SDL will report
- * touches on a trackpad as mouse input, which is generally what users
- * expect from this device; however, these are often actually full
- * multitouch-capable touch devices, so it might be preferable to some apps
- * to treat them as such.
- *
- * Setting this hint to true will make the trackpad input report as a
- * multitouch device instead of a mouse. The default is false.
- *
- * Note that most platforms don't support this hint. As of 2.24.0, it
- * only supports MacBooks' trackpads on macOS. Others may follow later.
- *
- * This hint is checked during SDL_Init and can not be changed after.
- *
- * This hint is available since SDL 2.24.0.
- */
-#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY"
-
-
-/**
- * \brief An enumeration of hint priorities
- */
-typedef enum
-{
- SDL_HINT_DEFAULT,
- SDL_HINT_NORMAL,
- SDL_HINT_OVERRIDE
-} SDL_HintPriority;
-
-
-/**
- * Set a hint with a specific priority.
- *
- * The priority controls the behavior when setting a hint that already has a
- * value. Hints will replace existing hints of their priority and lower.
- * Environment variables are considered to have override priority.
- *
- * \param name the hint to set
- * \param value the value of the hint variable
- * \param priority the SDL_HintPriority level for the hint
- * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetHint
- * \sa SDL_SetHint
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
- const char *value,
- SDL_HintPriority priority);
-
-/**
- * Set a hint with normal priority.
- *
- * Hints will not be set if there is an existing override hint or environment
- * variable that takes precedence. You can use SDL_SetHintWithPriority() to
- * set the hint with override priority instead.
- *
- * \param name the hint to set
- * \param value the value of the hint variable
- * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetHint
- * \sa SDL_SetHintWithPriority
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
- const char *value);
-
-/**
- * Reset a hint to the default value.
- *
- * This will reset a hint to the value of the environment variable, or NULL if
- * the environment isn't set. Callbacks will be called normally with this
- * change.
- *
- * \param name the hint to set
- * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GetHint
- * \sa SDL_SetHint
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name);
-
-/**
- * Reset all hints to the default values.
- *
- * This will reset all hints to the value of the associated environment
- * variable, or NULL if the environment isn't set. Callbacks will be called
- * normally with this change.
- *
- * \since This function is available since SDL 2.26.0.
- *
- * \sa SDL_GetHint
- * \sa SDL_SetHint
- * \sa SDL_ResetHint
- */
-extern DECLSPEC void SDLCALL SDL_ResetHints(void);
-
-/**
- * Get the value of a hint.
- *
- * \param name the hint to query
- * \returns the string value of a hint or NULL if the hint isn't set.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_SetHint
- * \sa SDL_SetHintWithPriority
- */
-extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
-
-/**
- * Get the boolean value of a hint variable.
- *
- * \param name the name of the hint to get the boolean value from
- * \param default_value the value to return if the hint does not exist
- * \returns the boolean value of a hint or the provided default value if the
- * hint does not exist.
- *
- * \since This function is available since SDL 2.0.5.
- *
- * \sa SDL_GetHint
- * \sa SDL_SetHint
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
-
-/**
- * Type definition of the hint callback function.
- *
- * \param userdata what was passed as `userdata` to SDL_AddHintCallback()
- * \param name what was passed as `name` to SDL_AddHintCallback()
- * \param oldValue the previous hint value
- * \param newValue the new value hint is to be set to
- */
-typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
-
-/**
- * Add a function to watch a particular hint.
- *
- * \param name the hint to watch
- * \param callback An SDL_HintCallback function that will be called when the
- * hint value changes
- * \param userdata a pointer to pass to the callback function
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_DelHintCallback
- */
-extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
- SDL_HintCallback callback,
- void *userdata);
-
-/**
- * Remove a function watching a particular hint.
- *
- * \param name the hint being watched
- * \param callback An SDL_HintCallback function that will be called when the
- * hint value changes
- * \param userdata a pointer being passed to the callback function
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_AddHintCallback
- */
-extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
- SDL_HintCallback callback,
- void *userdata);
-
-/**
- * Clear all hints.
- *
- * This function is automatically called during SDL_Quit(), and deletes all
- * callbacks without calling them and frees all memory associated with hints.
- * If you're calling this from application code you probably want to call
- * SDL_ResetHints() instead.
- *
- * This function will be removed from the API the next time we rev the ABI.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_ResetHints
- */
-extern DECLSPEC void SDLCALL SDL_ClearHints(void);
-
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_hints_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_joystick.h b/libs/SDL2/include/SDL_joystick.h
deleted file mode 100644
index b9b4f6228..000000000
--- a/libs/SDL2/include/SDL_joystick.h
+++ /dev/null
@@ -1,1069 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_joystick.h
- *
- * Include file for SDL joystick event handling
- *
- * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick
- * behind a device_index changing as joysticks are plugged and unplugged.
- *
- * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted
- * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.
- *
- * The term "player_index" is the number assigned to a player on a specific
- * controller. For XInput controllers this returns the XInput user index.
- * Many joysticks will not be able to supply this information.
- *
- * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of
- * the device (a X360 wired controller for example). This identifier is platform dependent.
- */
-
-#ifndef SDL_joystick_h_
-#define SDL_joystick_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_guid.h"
-#include "SDL_mutex.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \file SDL_joystick.h
- *
- * In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
- * for joysticks, and load appropriate drivers.
- *
- * If you would like to receive joystick updates while the application
- * is in the background, you should set the following hint before calling
- * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- */
-
-/**
- * The joystick structure used to identify an SDL joystick
- */
-#ifdef SDL_THREAD_SAFETY_ANALYSIS
-extern SDL_mutex *SDL_joystick_lock;
-#endif
-struct _SDL_Joystick;
-typedef struct _SDL_Joystick SDL_Joystick;
-
-/* A structure that encodes the stable unique id for a joystick device */
-typedef SDL_GUID SDL_JoystickGUID;
-
-/**
- * This is a unique ID for a joystick for the time it is connected to the system,
- * and is never reused for the lifetime of the application. If the joystick is
- * disconnected and reconnected, it will get a new ID.
- *
- * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
- */
-typedef Sint32 SDL_JoystickID;
-
-typedef enum
-{
- SDL_JOYSTICK_TYPE_UNKNOWN,
- SDL_JOYSTICK_TYPE_GAMECONTROLLER,
- SDL_JOYSTICK_TYPE_WHEEL,
- SDL_JOYSTICK_TYPE_ARCADE_STICK,
- SDL_JOYSTICK_TYPE_FLIGHT_STICK,
- SDL_JOYSTICK_TYPE_DANCE_PAD,
- SDL_JOYSTICK_TYPE_GUITAR,
- SDL_JOYSTICK_TYPE_DRUM_KIT,
- SDL_JOYSTICK_TYPE_ARCADE_PAD,
- SDL_JOYSTICK_TYPE_THROTTLE
-} SDL_JoystickType;
-
-typedef enum
-{
- SDL_JOYSTICK_POWER_UNKNOWN = -1,
- SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */
- SDL_JOYSTICK_POWER_LOW, /* <= 20% */
- SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */
- SDL_JOYSTICK_POWER_FULL, /* <= 100% */
- SDL_JOYSTICK_POWER_WIRED,
- SDL_JOYSTICK_POWER_MAX
-} SDL_JoystickPowerLevel;
-
-/* Set max recognized G-force from accelerometer
- See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed
- */
-#define SDL_IPHONE_MAX_GFORCE 5.0
-
-
-/* Function prototypes */
-
-/**
- * Locking for multi-threaded access to the joystick API
- *
- * If you are using the joystick API or handling events from multiple threads
- * you should use these locking functions to protect access to the joysticks.
- *
- * In particular, you are guaranteed that the joystick list won't change, so
- * the API functions that take a joystick index will be valid, and joystick
- * and game controller events will not be delivered.
- *
- * As of SDL 2.26.0, you can take the joystick lock around reinitializing the
- * joystick subsystem, to prevent other threads from seeing joysticks in an
- * uninitialized state. However, all open joysticks will be closed and SDL
- * functions called with them will fail.
- *
- * \since This function is available since SDL 2.0.7.
- */
-extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock);
-
-
-/**
- * Unlocking for multi-threaded access to the joystick API
- *
- * If you are using the joystick API or handling events from multiple threads
- * you should use these locking functions to protect access to the joysticks.
- *
- * In particular, you are guaranteed that the joystick list won't change, so
- * the API functions that take a joystick index will be valid, and joystick
- * and game controller events will not be delivered.
- *
- * \since This function is available since SDL 2.0.7.
- */
-extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock);
-
-/**
- * Count the number of joysticks attached to the system.
- *
- * \returns the number of attached joysticks on success or a negative error
- * code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickName
- * \sa SDL_JoystickPath
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
-
-/**
- * Get the implementation dependent name of a joystick.
- *
- * This can be called before any joysticks are opened.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system)
- * \returns the name of the selected joystick. If no name can be found, this
- * function returns NULL; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickName
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
-
-/**
- * Get the implementation dependent path of a joystick.
- *
- * This can be called before any joysticks are opened.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system)
- * \returns the path of the selected joystick. If no path can be found, this
- * function returns NULL; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_JoystickPath
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index);
-
-/**
- * Get the player index of a joystick, or -1 if it's not available This can be
- * called before any joysticks are opened.
- *
- * \since This function is available since SDL 2.0.9.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
-
-/**
- * Get the implementation-dependent GUID for the joystick at a given device
- * index.
- *
- * This function can be called before any joysticks are opened.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the GUID of the selected joystick. If called on an invalid index,
- * this function returns a zero GUID
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetGUID
- * \sa SDL_JoystickGetGUIDString
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);
-
-/**
- * Get the USB vendor ID of a joystick, if available.
- *
- * This can be called before any joysticks are opened. If the vendor ID isn't
- * available this function returns 0.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the USB vendor ID of the selected joystick. If called on an
- * invalid index, this function returns zero
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
-
-/**
- * Get the USB product ID of a joystick, if available.
- *
- * This can be called before any joysticks are opened. If the product ID isn't
- * available this function returns 0.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the USB product ID of the selected joystick. If called on an
- * invalid index, this function returns zero
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
-
-/**
- * Get the product version of a joystick, if available.
- *
- * This can be called before any joysticks are opened. If the product version
- * isn't available this function returns 0.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the product version of the selected joystick. If called on an
- * invalid index, this function returns zero
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);
-
-/**
- * Get the type of a joystick, if available.
- *
- * This can be called before any joysticks are opened.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the SDL_JoystickType of the selected joystick. If called on an
- * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);
-
-/**
- * Get the instance ID of a joystick.
- *
- * This can be called before any joysticks are opened.
- *
- * \param device_index the index of the joystick to query (the N'th joystick
- * on the system
- * \returns the instance id of the selected joystick. If called on an invalid
- * index, this function returns -1.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);
-
-/**
- * Open a joystick for use.
- *
- * The `device_index` argument refers to the N'th joystick presently
- * recognized by SDL on the system. It is **NOT** the same as the instance ID
- * used to identify the joystick in future events. See
- * SDL_JoystickInstanceID() for more details about instance IDs.
- *
- * The joystick subsystem must be initialized before a joystick can be opened
- * for use.
- *
- * \param device_index the index of the joystick to query
- * \returns a joystick identifier or NULL if an error occurred; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickClose
- * \sa SDL_JoystickInstanceID
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
-
-/**
- * Get the SDL_Joystick associated with an instance id.
- *
- * \param instance_id the instance id to get the SDL_Joystick for
- * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
- * for more information.
- *
- * \since This function is available since SDL 2.0.4.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id);
-
-/**
- * Get the SDL_Joystick associated with a player index.
- *
- * \param player_index the player index to get the SDL_Joystick for
- * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()
- * for more information.
- *
- * \since This function is available since SDL 2.0.12.
- */
-extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index);
-
-/**
- * Attach a new virtual joystick.
- *
- * \returns the joystick's device index, or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,
- int naxes,
- int nbuttons,
- int nhats);
-
-/**
- * The structure that defines an extended virtual joystick description
- *
- * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx()
- * All other elements of this structure are optional and can be left 0.
- *
- * \sa SDL_JoystickAttachVirtualEx
- */
-typedef struct SDL_VirtualJoystickDesc
-{
- Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */
- Uint16 type; /**< `SDL_JoystickType` */
- Uint16 naxes; /**< the number of axes on this joystick */
- Uint16 nbuttons; /**< the number of buttons on this joystick */
- Uint16 nhats; /**< the number of hats on this joystick */
- Uint16 vendor_id; /**< the USB vendor ID of this joystick */
- Uint16 product_id; /**< the USB product ID of this joystick */
- Uint16 padding; /**< unused */
- Uint32 button_mask; /**< A mask of which buttons are valid for this controller
- e.g. (1 << SDL_CONTROLLER_BUTTON_A) */
- Uint32 axis_mask; /**< A mask of which axes are valid for this controller
- e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */
- const char *name; /**< the name of the joystick */
-
- void *userdata; /**< User data pointer passed to callbacks */
- void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */
- void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */
- int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */
- int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */
- int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */
- int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */
-
-} SDL_VirtualJoystickDesc;
-
-/**
- * \brief The current version of the SDL_VirtualJoystickDesc structure
- */
-#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1
-
-/**
- * Attach a new virtual joystick with extended properties.
- *
- * \returns the joystick's device index, or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.24.0.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc);
-
-/**
- * Detach a virtual joystick.
- *
- * \param device_index a value previously returned from
- * SDL_JoystickAttachVirtual()
- * \returns 0 on success, or -1 if an error occurred.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index);
-
-/**
- * Query whether or not the joystick at a given device index is virtual.
- *
- * \param device_index a joystick device index.
- * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);
-
-/**
- * Set values on an opened, virtual-joystick's axis.
- *
- * Please note that values set here will not be applied until the next call to
- * SDL_JoystickUpdate, which can either be called directly, or can be called
- * indirectly through various other SDL APIs, including, but not limited to
- * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
- * SDL_WaitEvent.
- *
- * Note that when sending trigger axes, you should scale the value to the full
- * range of Sint16. For example, a trigger at rest would have the value of
- * `SDL_JOYSTICK_AXIS_MIN`.
- *
- * \param joystick the virtual joystick on which to set state.
- * \param axis the specific axis on the virtual joystick to set.
- * \param value the new value for the specified axis.
- * \returns 0 on success, -1 on error.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value);
-
-/**
- * Set values on an opened, virtual-joystick's button.
- *
- * Please note that values set here will not be applied until the next call to
- * SDL_JoystickUpdate, which can either be called directly, or can be called
- * indirectly through various other SDL APIs, including, but not limited to
- * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
- * SDL_WaitEvent.
- *
- * \param joystick the virtual joystick on which to set state.
- * \param button the specific button on the virtual joystick to set.
- * \param value the new value for the specified button.
- * \returns 0 on success, -1 on error.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value);
-
-/**
- * Set values on an opened, virtual-joystick's hat.
- *
- * Please note that values set here will not be applied until the next call to
- * SDL_JoystickUpdate, which can either be called directly, or can be called
- * indirectly through various other SDL APIs, including, but not limited to
- * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
- * SDL_WaitEvent.
- *
- * \param joystick the virtual joystick on which to set state.
- * \param hat the specific hat on the virtual joystick to set.
- * \param value the new value for the specified hat.
- * \returns 0 on success, -1 on error.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value);
-
-/**
- * Get the implementation dependent name of a joystick.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the name of the selected joystick. If no name can be found, this
- * function returns NULL; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickNameForIndex
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);
-
-/**
- * Get the implementation dependent path of a joystick.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the path of the selected joystick. If no path can be found, this
- * function returns NULL; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_JoystickPathForIndex
- */
-extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick);
-
-/**
- * Get the player index of an opened joystick.
- *
- * For XInput controllers this returns the XInput user index. Many joysticks
- * will not be able to supply this information.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the player index, or -1 if it's not available.
- *
- * \since This function is available since SDL 2.0.9.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);
-
-/**
- * Set the player index of an opened joystick.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \param player_index Player index to assign to this joystick, or -1 to clear
- * the player index and turn off player LEDs.
- *
- * \since This function is available since SDL 2.0.12.
- */
-extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index);
-
-/**
- * Get the implementation-dependent GUID for the joystick.
- *
- * This function requires an open joystick.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the GUID of the given joystick. If called on an invalid index,
- * this function returns a zero GUID; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetDeviceGUID
- * \sa SDL_JoystickGetGUIDString
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick);
-
-/**
- * Get the USB vendor ID of an opened joystick, if available.
- *
- * If the vendor ID isn't available this function returns 0.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the USB vendor ID of the selected joystick, or 0 if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick);
-
-/**
- * Get the USB product ID of an opened joystick, if available.
- *
- * If the product ID isn't available this function returns 0.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the USB product ID of the selected joystick, or 0 if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
-
-/**
- * Get the product version of an opened joystick, if available.
- *
- * If the product version isn't available this function returns 0.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the product version of the selected joystick, or 0 if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick);
-
-/**
- * Get the firmware version of an opened joystick, if available.
- *
- * If the firmware version isn't available this function returns 0.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the firmware version of the selected joystick, or 0 if
- * unavailable.
- *
- * \since This function is available since SDL 2.24.0.
- */
-extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick);
-
-/**
- * Get the serial number of an opened joystick, if available.
- *
- * Returns the serial number of the joystick, or NULL if it is not available.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the serial number of the selected joystick, or NULL if
- * unavailable.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick);
-
-/**
- * Get the type of an opened joystick.
- *
- * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
- * \returns the SDL_JoystickType of the selected joystick.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick);
-
-/**
- * Get an ASCII string representation for a given SDL_JoystickGUID.
- *
- * You should supply at least 33 bytes for pszGUID.
- *
- * \param guid the SDL_JoystickGUID you wish to convert to string
- * \param pszGUID buffer in which to write the ASCII string
- * \param cbGUID the size of pszGUID
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetDeviceGUID
- * \sa SDL_JoystickGetGUID
- * \sa SDL_JoystickGetGUIDFromString
- */
-extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);
-
-/**
- * Convert a GUID string into a SDL_JoystickGUID structure.
- *
- * Performs no error checking. If this function is given a string containing
- * an invalid GUID, the function will silently succeed, but the GUID generated
- * will not be useful.
- *
- * \param pchGUID string containing an ASCII representation of a GUID
- * \returns a SDL_JoystickGUID structure.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetGUIDString
- */
-extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
-
-/**
- * Get the device information encoded in a SDL_JoystickGUID structure
- *
- * \param guid the SDL_JoystickGUID you wish to get info about
- * \param vendor A pointer filled in with the device VID, or 0 if not
- * available
- * \param product A pointer filled in with the device PID, or 0 if not
- * available
- * \param version A pointer filled in with the device version, or 0 if not
- * available
- * \param crc16 A pointer filled in with a CRC used to distinguish different
- * products with the same VID/PID, or 0 if not available
- *
- * \since This function is available since SDL 2.26.0.
- *
- * \sa SDL_JoystickGetDeviceGUID
- */
-extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16);
-
-/**
- * Get the status of a specified joystick.
- *
- * \param joystick the joystick to query
- * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not;
- * call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickClose
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick);
-
-/**
- * Get the instance ID of an opened joystick.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \returns the instance ID of the specified joystick on success or a negative
- * error code on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick);
-
-/**
- * Get the number of general axis controls on a joystick.
- *
- * Often, the directional pad on a game controller will either look like 4
- * separate buttons or a POV hat, and not axes, but all of this is up to the
- * device and platform.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \returns the number of axis controls/number of axes on success or a
- * negative error code on failure; call SDL_GetError() for more
- * information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetAxis
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);
-
-/**
- * Get the number of trackballs on a joystick.
- *
- * Joystick trackballs have only relative motion events associated with them
- * and their state cannot be polled.
- *
- * Most joysticks do not have trackballs.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \returns the number of trackballs on success or a negative error code on
- * failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetBall
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);
-
-/**
- * Get the number of POV hats on a joystick.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \returns the number of POV hats on success or a negative error code on
- * failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetHat
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);
-
-/**
- * Get the number of buttons on a joystick.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \returns the number of buttons on success or a negative error code on
- * failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickGetButton
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick);
-
-/**
- * Update the current state of the open joysticks.
- *
- * This is called automatically by the event loop if any joystick events are
- * enabled.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickEventState
- */
-extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
-
-/**
- * Enable/disable joystick event polling.
- *
- * If joystick events are disabled, you must call SDL_JoystickUpdate()
- * yourself and manually check the state of the joystick when you want
- * joystick information.
- *
- * It is recommended that you leave joystick event handling enabled.
- *
- * **WARNING**: Calling this function may delete all events currently in SDL's
- * event queue.
- *
- * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`
- * \returns 1 if enabled, 0 if disabled, or a negative error code on failure;
- * call SDL_GetError() for more information.
- *
- * If `state` is `SDL_QUERY` then the current state is returned,
- * otherwise the new processing state is returned.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GameControllerEventState
- */
-extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
-
-#define SDL_JOYSTICK_AXIS_MAX 32767
-#define SDL_JOYSTICK_AXIS_MIN -32768
-
-/**
- * Get the current state of an axis control on a joystick.
- *
- * SDL makes no promises about what part of the joystick any given axis refers
- * to. Your game should have some sort of configuration UI to let users
- * specify what each axis should be bound to. Alternately, SDL's higher-level
- * Game Controller API makes a great effort to apply order to this lower-level
- * interface, so you know that a specific axis is the "left thumb stick," etc.
- *
- * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to
- * 32767) representing the current position of the axis. It may be necessary
- * to impose certain tolerances on these values to account for jitter.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param axis the axis to query; the axis indices start at index 0
- * \returns a 16-bit signed integer representing the current position of the
- * axis or 0 on failure; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickNumAxes
- */
-extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick,
- int axis);
-
-/**
- * Get the initial state of an axis control on a joystick.
- *
- * The state is a value ranging from -32768 to 32767.
- *
- * The axis indices start at index 0.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param axis the axis to query; the axis indices start at index 0
- * \param state Upon return, the initial value is supplied here.
- * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.6.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick,
- int axis, Sint16 *state);
-
-/**
- * \name Hat positions
- */
-/* @{ */
-#define SDL_HAT_CENTERED 0x00
-#define SDL_HAT_UP 0x01
-#define SDL_HAT_RIGHT 0x02
-#define SDL_HAT_DOWN 0x04
-#define SDL_HAT_LEFT 0x08
-#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP)
-#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN)
-#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP)
-#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN)
-/* @} */
-
-/**
- * Get the current state of a POV hat on a joystick.
- *
- * The returned value will be one of the following positions:
- *
- * - `SDL_HAT_CENTERED`
- * - `SDL_HAT_UP`
- * - `SDL_HAT_RIGHT`
- * - `SDL_HAT_DOWN`
- * - `SDL_HAT_LEFT`
- * - `SDL_HAT_RIGHTUP`
- * - `SDL_HAT_RIGHTDOWN`
- * - `SDL_HAT_LEFTUP`
- * - `SDL_HAT_LEFTDOWN`
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param hat the hat index to get the state from; indices start at index 0
- * \returns the current hat position.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickNumHats
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,
- int hat);
-
-/**
- * Get the ball axis change since the last poll.
- *
- * Trackballs can only return relative motion since the last call to
- * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`.
- *
- * Most joysticks do not have trackballs.
- *
- * \param joystick the SDL_Joystick to query
- * \param ball the ball index to query; ball indices start at index 0
- * \param dx stores the difference in the x axis position since the last poll
- * \param dy stores the difference in the y axis position since the last poll
- * \returns 0 on success or a negative error code on failure; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickNumBalls
- */
-extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick,
- int ball, int *dx, int *dy);
-
-/**
- * Get the current state of a button on a joystick.
- *
- * \param joystick an SDL_Joystick structure containing joystick information
- * \param button the button index to get the state from; indices start at
- * index 0
- * \returns 1 if the specified button is pressed, 0 otherwise.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickNumButtons
- */
-extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,
- int button);
-
-/**
- * Start a rumble effect.
- *
- * Each call to this function cancels any previous rumble effect, and calling
- * it with 0 intensity stops any rumbling.
- *
- * \param joystick The joystick to vibrate
- * \param low_frequency_rumble The intensity of the low frequency (left)
- * rumble motor, from 0 to 0xFFFF
- * \param high_frequency_rumble The intensity of the high frequency (right)
- * rumble motor, from 0 to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if rumble isn't supported on this joystick
- *
- * \since This function is available since SDL 2.0.9.
- *
- * \sa SDL_JoystickHasRumble
- */
-extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
-
-/**
- * Start a rumble effect in the joystick's triggers
- *
- * Each call to this function cancels any previous trigger rumble effect, and
- * calling it with 0 intensity stops any rumbling.
- *
- * Note that this is rumbling of the _triggers_ and not the game controller as
- * a whole. This is currently only supported on Xbox One controllers. If you
- * want the (more common) whole-controller rumble, use SDL_JoystickRumble()
- * instead.
- *
- * \param joystick The joystick to vibrate
- * \param left_rumble The intensity of the left trigger rumble motor, from 0
- * to 0xFFFF
- * \param right_rumble The intensity of the right trigger rumble motor, from 0
- * to 0xFFFF
- * \param duration_ms The duration of the rumble effect, in milliseconds
- * \returns 0, or -1 if trigger rumble isn't supported on this joystick
- *
- * \since This function is available since SDL 2.0.14.
- *
- * \sa SDL_JoystickHasRumbleTriggers
- */
-extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
-
-/**
- * Query whether a joystick has an LED.
- *
- * An example of a joystick LED is the light on the back of a PlayStation 4's
- * DualShock 4 controller.
- *
- * \param joystick The joystick to query
- * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);
-
-/**
- * Query whether a joystick has rumble support.
- *
- * \param joystick The joystick to query
- * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_JoystickRumble
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick);
-
-/**
- * Query whether a joystick has rumble support on triggers.
- *
- * \param joystick The joystick to query
- * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise.
- *
- * \since This function is available since SDL 2.0.18.
- *
- * \sa SDL_JoystickRumbleTriggers
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick);
-
-/**
- * Update a joystick's LED color.
- *
- * An example of a joystick LED is the light on the back of a PlayStation 4's
- * DualShock 4 controller.
- *
- * \param joystick The joystick to update
- * \param red The intensity of the red LED
- * \param green The intensity of the green LED
- * \param blue The intensity of the blue LED
- * \returns 0 on success, -1 if this joystick does not have a modifiable LED
- *
- * \since This function is available since SDL 2.0.14.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue);
-
-/**
- * Send a joystick specific effect packet
- *
- * \param joystick The joystick to affect
- * \param data The data to send to the joystick
- * \param size The size of the data to send to the joystick
- * \returns 0, or -1 if this joystick or driver doesn't support effect packets
- *
- * \since This function is available since SDL 2.0.16.
- */
-extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size);
-
-/**
- * Close a joystick previously opened with SDL_JoystickOpen().
- *
- * \param joystick The joystick device to close
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_JoystickOpen
- */
-extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);
-
-/**
- * Get the battery level of a joystick as SDL_JoystickPowerLevel.
- *
- * \param joystick the SDL_Joystick to query
- * \returns the current battery level as SDL_JoystickPowerLevel on success or
- * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown
- *
- * \since This function is available since SDL 2.0.4.
- */
-extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_joystick_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_keyboard.h b/libs/SDL2/include/SDL_keyboard.h
deleted file mode 100644
index 86a37ad1a..000000000
--- a/libs/SDL2/include/SDL_keyboard.h
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_keyboard.h
- *
- * Include file for SDL keyboard event handling
- */
-
-#ifndef SDL_keyboard_h_
-#define SDL_keyboard_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_error.h"
-#include "SDL_keycode.h"
-#include "SDL_video.h"
-
-#include "begin_code.h"
-/* Set up for C function definitions, even when using C++ */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \brief The SDL keysym structure, used in key events.
- *
- * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event.
- */
-typedef struct SDL_Keysym
-{
- SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */
- SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */
- Uint16 mod; /**< current key modifiers */
- Uint32 unused;
-} SDL_Keysym;
-
-/* Function prototypes */
-
-/**
- * Query the window which currently has keyboard focus.
- *
- * \returns the window with keyboard focus.
- *
- * \since This function is available since SDL 2.0.0.
- */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
-
-/**
- * Get a snapshot of the current state of the keyboard.
- *
- * The pointer returned is a pointer to an internal SDL array. It will be
- * valid for the whole lifetime of the application and should not be freed by
- * the caller.
- *
- * A array element with a value of 1 means that the key is pressed and a value
- * of 0 means that it is not. Indexes into this array are obtained by using
- * SDL_Scancode values.
- *
- * Use SDL_PumpEvents() to update the state array.
- *
- * This function gives you the current state after all events have been
- * processed, so if a key or button has been pressed and released before you
- * process events, then the pressed state will never show up in the
- * SDL_GetKeyboardState() calls.
- *
- * Note: This function doesn't take into account whether shift has been
- * pressed or not.
- *
- * \param numkeys if non-NULL, receives the length of the returned array
- * \returns a pointer to an array of key states.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_PumpEvents
- * \sa SDL_ResetKeyboard
- */
-extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
-
-/**
- * Clear the state of the keyboard
- *
- * This function will generate key up events for all pressed keys.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GetKeyboardState
- */
-extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void);
-
-/**
- * Get the current key modifier state for the keyboard.
- *
- * \returns an OR'd combination of the modifier keys for the keyboard. See
- * SDL_Keymod for details.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyboardState
- * \sa SDL_SetModState
- */
-extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
-
-/**
- * Set the current key modifier state for the keyboard.
- *
- * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose
- * modifier key states on your application. Simply pass your desired modifier
- * states into `modstate`. This value may be a bitwise, OR'd combination of
- * SDL_Keymod values.
- *
- * This does not change the keyboard state, only the key modifier flags that
- * SDL reports.
- *
- * \param modstate the desired SDL_Keymod for the keyboard
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetModState
- */
-extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
-
-/**
- * Get the key code corresponding to the given scancode according to the
- * current keyboard layout.
- *
- * See SDL_Keycode for details.
- *
- * \param scancode the desired SDL_Scancode to query
- * \returns the SDL_Keycode that corresponds to the given SDL_Scancode.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyName
- * \sa SDL_GetScancodeFromKey
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
-
-/**
- * Get the scancode corresponding to the given key code according to the
- * current keyboard layout.
- *
- * See SDL_Scancode for details.
- *
- * \param key the desired SDL_Keycode to query
- * \returns the SDL_Scancode that corresponds to the given SDL_Keycode.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyFromScancode
- * \sa SDL_GetScancodeName
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);
-
-/**
- * Get a human-readable name for a scancode.
- *
- * See SDL_Scancode for details.
- *
- * **Warning**: The returned name is by design not stable across platforms,
- * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left
- * Windows" under Microsoft Windows, and some scancodes like
- * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even
- * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and
- * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore
- * unsuitable for creating a stable cross-platform two-way mapping between
- * strings and scancodes.
- *
- * \param scancode the desired SDL_Scancode to query
- * \returns a pointer to the name for the scancode. If the scancode doesn't
- * have a name this function returns an empty string ("").
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetScancodeFromKey
- * \sa SDL_GetScancodeFromName
- */
-extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);
-
-/**
- * Get a scancode from a human-readable name.
- *
- * \param name the human-readable scancode name
- * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't
- * recognized; call SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyFromName
- * \sa SDL_GetScancodeFromKey
- * \sa SDL_GetScancodeName
- */
-extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);
-
-/**
- * Get a human-readable name for a key.
- *
- * See SDL_Scancode and SDL_Keycode for details.
- *
- * \param key the desired SDL_Keycode to query
- * \returns a pointer to a UTF-8 string that stays valid at least until the
- * next call to this function. If you need it around any longer, you
- * must copy it. If the key doesn't have a name, this function
- * returns an empty string ("").
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyFromName
- * \sa SDL_GetKeyFromScancode
- * \sa SDL_GetScancodeFromKey
- */
-extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);
-
-/**
- * Get a key code from a human-readable name.
- *
- * \param name the human-readable key name
- * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call
- * SDL_GetError() for more information.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_GetKeyFromScancode
- * \sa SDL_GetKeyName
- * \sa SDL_GetScancodeFromName
- */
-extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
-
-/**
- * Start accepting Unicode text input events.
- *
- * This function will start accepting Unicode text input events in the focused
- * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and
- * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in
- * pair with SDL_StopTextInput().
- *
- * On some platforms using this function activates the screen keyboard.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_SetTextInputRect
- * \sa SDL_StopTextInput
- */
-extern DECLSPEC void SDLCALL SDL_StartTextInput(void);
-
-/**
- * Check whether or not Unicode text input events are enabled.
- *
- * \returns SDL_TRUE if text input events are enabled else SDL_FALSE.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_StartTextInput
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
-
-/**
- * Stop receiving any text input events.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_StartTextInput
- */
-extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
-
-/**
- * Dismiss the composition window/IME without disabling the subsystem.
- *
- * \since This function is available since SDL 2.0.22.
- *
- * \sa SDL_StartTextInput
- * \sa SDL_StopTextInput
- */
-extern DECLSPEC void SDLCALL SDL_ClearComposition(void);
-
-/**
- * Returns if an IME Composite or Candidate window is currently shown.
- *
- * \since This function is available since SDL 2.0.22.
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
-
-/**
- * Set the rectangle used to type Unicode text inputs.
- *
- * To start text input in a given location, this function is intended to be
- * called before SDL_StartTextInput, although some platforms support moving
- * the rectangle even while text input (and a composition) is active.
- *
- * Note: If you want to use the system native IME window, try setting hint
- * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you
- * any feedback.
- *
- * \param rect the SDL_Rect structure representing the rectangle to receive
- * text (ignored if NULL)
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_StartTextInput
- */
-extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect);
-
-/**
- * Check whether the platform has screen keyboard support.
- *
- * \returns SDL_TRUE if the platform has some screen keyboard support or
- * SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_StartTextInput
- * \sa SDL_IsScreenKeyboardShown
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);
-
-/**
- * Check whether the screen keyboard is shown for given window.
- *
- * \param window the window for which screen keyboard should be queried
- * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not.
- *
- * \since This function is available since SDL 2.0.0.
- *
- * \sa SDL_HasScreenKeyboardSupport
- */
-extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);
-
-/* Ends C function definitions when using C++ */
-#ifdef __cplusplus
-}
-#endif
-#include "close_code.h"
-
-#endif /* SDL_keyboard_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_keycode.h b/libs/SDL2/include/SDL_keycode.h
deleted file mode 100644
index 710622302..000000000
--- a/libs/SDL2/include/SDL_keycode.h
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-
-/**
- * \file SDL_keycode.h
- *
- * Defines constants which identify keyboard keys and modifiers.
- */
-
-#ifndef SDL_keycode_h_
-#define SDL_keycode_h_
-
-#include "SDL_stdinc.h"
-#include "SDL_scancode.h"
-
-/**
- * \brief The SDL virtual key representation.
- *
- * Values of this type are used to represent keyboard keys using the current
- * layout of the keyboard. These values include Unicode values representing
- * the unmodified character that would be generated by pressing the key, or
- * an SDLK_* constant for those keys that do not generate characters.
- *
- * A special exception is the number keys at the top of the keyboard which
- * map to SDLK_0...SDLK_9 on AZERTY layouts.
- */
-typedef Sint32 SDL_Keycode;
-
-#define SDLK_SCANCODE_MASK (1<<30)
-#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK)
-
-typedef enum
-{
- SDLK_UNKNOWN = 0,
-
- SDLK_RETURN = '\r',
- SDLK_ESCAPE = '\x1B',
- SDLK_BACKSPACE = '\b',
- SDLK_TAB = '\t',
- SDLK_SPACE = ' ',
- SDLK_EXCLAIM = '!',
- SDLK_QUOTEDBL = '"',
- SDLK_HASH = '#',
- SDLK_PERCENT = '%',
- SDLK_DOLLAR = '$',
- SDLK_AMPERSAND = '&',
- SDLK_QUOTE = '\'',
- SDLK_LEFTPAREN = '(',
- SDLK_RIGHTPAREN = ')',
- SDLK_ASTERISK = '*',
- SDLK_PLUS = '+',
- SDLK_COMMA = ',',
- SDLK_MINUS = '-',
- SDLK_PERIOD = '.',
- SDLK_SLASH = '/',
- SDLK_0 = '0',
- SDLK_1 = '1',
- SDLK_2 = '2',
- SDLK_3 = '3',
- SDLK_4 = '4',
- SDLK_5 = '5',
- SDLK_6 = '6',
- SDLK_7 = '7',
- SDLK_8 = '8',
- SDLK_9 = '9',
- SDLK_COLON = ':',
- SDLK_SEMICOLON = ';',
- SDLK_LESS = '<',
- SDLK_EQUALS = '=',
- SDLK_GREATER = '>',
- SDLK_QUESTION = '?',
- SDLK_AT = '@',
-
- /*
- Skip uppercase letters
- */
-
- SDLK_LEFTBRACKET = '[',
- SDLK_BACKSLASH = '\\',
- SDLK_RIGHTBRACKET = ']',
- SDLK_CARET = '^',
- SDLK_UNDERSCORE = '_',
- SDLK_BACKQUOTE = '`',
- SDLK_a = 'a',
- SDLK_b = 'b',
- SDLK_c = 'c',
- SDLK_d = 'd',
- SDLK_e = 'e',
- SDLK_f = 'f',
- SDLK_g = 'g',
- SDLK_h = 'h',
- SDLK_i = 'i',
- SDLK_j = 'j',
- SDLK_k = 'k',
- SDLK_l = 'l',
- SDLK_m = 'm',
- SDLK_n = 'n',
- SDLK_o = 'o',
- SDLK_p = 'p',
- SDLK_q = 'q',
- SDLK_r = 'r',
- SDLK_s = 's',
- SDLK_t = 't',
- SDLK_u = 'u',
- SDLK_v = 'v',
- SDLK_w = 'w',
- SDLK_x = 'x',
- SDLK_y = 'y',
- SDLK_z = 'z',
-
- SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),
-
- SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),
- SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),
- SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),
- SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),
- SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),
- SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),
- SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),
- SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),
- SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),
- SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),
- SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),
- SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),
-
- SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),
- SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),
- SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),
- SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),
- SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),
- SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),
- SDLK_DELETE = '\x7F',
- SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),
- SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),
- SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),
- SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),
- SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),
- SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),
-
- SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),
- SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),
- SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),
- SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),
- SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),
- SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),
- SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),
- SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),
- SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),
- SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),
- SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),
- SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),
- SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),
- SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),
- SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),
- SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),
- SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),
-
- SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),
- SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),
- SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),
- SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),
- SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),
- SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),
- SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),
- SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),
- SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),
- SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),
- SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),
- SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),
- SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),
- SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),
- SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),
- SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),
- SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),
- SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),
- SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),
- SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),
- SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),
- SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),
- SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),
- SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),
- SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),
- SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),
- SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),
- SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),
- SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),
- SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),
- SDLK_KP_EQUALSAS400 =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),
-
- SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),
- SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),
- SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),
- SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),
- SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),
- SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),
- SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),
- SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),
- SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),
- SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),
- SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),
- SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),
-
- SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),
- SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),
- SDLK_THOUSANDSSEPARATOR =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),
- SDLK_DECIMALSEPARATOR =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),
- SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),
- SDLK_CURRENCYSUBUNIT =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),
- SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),
- SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),
- SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),
- SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),
- SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),
- SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),
- SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),
- SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),
- SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),
- SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),
- SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),
- SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),
- SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),
- SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),
- SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),
- SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),
- SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),
- SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),
- SDLK_KP_DBLAMPERSAND =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),
- SDLK_KP_VERTICALBAR =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),
- SDLK_KP_DBLVERTICALBAR =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),
- SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),
- SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),
- SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),
- SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),
- SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),
- SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),
- SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),
- SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),
- SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),
- SDLK_KP_MEMSUBTRACT =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),
- SDLK_KP_MEMMULTIPLY =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),
- SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),
- SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),
- SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),
- SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),
- SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),
- SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),
- SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),
- SDLK_KP_HEXADECIMAL =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),
-
- SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),
- SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),
- SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),
- SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),
- SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),
- SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),
- SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),
- SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),
-
- SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),
-
- SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),
- SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),
- SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),
- SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),
- SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),
- SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),
- SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),
- SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),
- SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),
- SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),
- SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),
- SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),
- SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),
- SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),
- SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),
- SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),
- SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),
-
- SDLK_BRIGHTNESSDOWN =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),
- SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),
- SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),
- SDLK_KBDILLUMTOGGLE =
- SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),
- SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
- SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
- SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
- SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
- SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
- SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
-
- SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
- SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD),
-
- SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT),
- SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT),
- SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL),
- SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL)
-} SDL_KeyCode;
-
-/**
- * \brief Enumeration of valid key mods (possibly OR'd together).
- */
-typedef enum
-{
- KMOD_NONE = 0x0000,
- KMOD_LSHIFT = 0x0001,
- KMOD_RSHIFT = 0x0002,
- KMOD_LCTRL = 0x0040,
- KMOD_RCTRL = 0x0080,
- KMOD_LALT = 0x0100,
- KMOD_RALT = 0x0200,
- KMOD_LGUI = 0x0400,
- KMOD_RGUI = 0x0800,
- KMOD_NUM = 0x1000,
- KMOD_CAPS = 0x2000,
- KMOD_MODE = 0x4000,
- KMOD_SCROLL = 0x8000,
-
- KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL,
- KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT,
- KMOD_ALT = KMOD_LALT | KMOD_RALT,
- KMOD_GUI = KMOD_LGUI | KMOD_RGUI,
-
- KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */
-} SDL_Keymod;
-
-#endif /* SDL_keycode_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/libs/SDL2/include/SDL_loadso.h b/libs/SDL2/include/SDL_loadso.h
deleted file mode 100644
index ca59b681c..000000000
--- a/libs/SDL2/include/SDL_loadso.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2023 Sam Lantinga