From 044aa1b0b00f141d3a2f5883c294ea424c84c275 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Mon, 8 Jan 2024 22:35:24 +0300
Subject: [PATCH] updates from latest SDL2 and SDL3
---
include/SDL2/SDL_atomic.h | 2 +-
include/SDL2/SDL_gamecontroller.h | 13 ++++++++++---
include/SDL2/SDL_hints.h | 16 ++++++++++++++++
src/sdl3_include_wrapper.h | 10 +++++-----
src/test/SDL_test_harness.c | 2 +-
test/testautomation_render.c | 7 ++++++-
6 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/include/SDL2/SDL_atomic.h b/include/SDL2/SDL_atomic.h
index 99cdb89..1fa18f4 100644
--- a/include/SDL2/SDL_atomic.h
+++ b/include/SDL2/SDL_atomic.h
@@ -209,7 +209,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
diff --git a/include/SDL2/SDL_gamecontroller.h b/include/SDL2/SDL_gamecontroller.h
index c27e453..281fa35 100644
--- a/include/SDL2/SDL_gamecontroller.h
+++ b/include/SDL2/SDL_gamecontroller.h
@@ -613,7 +613,9 @@ extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
* 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
{
@@ -702,8 +704,13 @@ 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).
+ *
+ * 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_GetJoystickAxis(), which normally uses
+ * the full range.
*
* \param gamecontroller a game controller
* \param axis an axis index (one of the SDL_GameControllerAxis values)
diff --git a/include/SDL2/SDL_hints.h b/include/SDL2/SDL_hints.h
index d78659b..7356bf4 100644
--- a/include/SDL2/SDL_hints.h
+++ b/include/SDL2/SDL_hints.h
@@ -2666,6 +2666,22 @@ extern "C" {
*/
#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
diff --git a/src/sdl3_include_wrapper.h b/src/sdl3_include_wrapper.h
index 5448478..cb78cca 100644
--- a/src/sdl3_include_wrapper.h
+++ b/src/sdl3_include_wrapper.h
@@ -345,7 +345,6 @@
#define SDL_GetTextureAlphaMod IGNORE_THIS_VERSION_OF_SDL_GetTextureAlphaMod
#define SDL_GetTextureBlendMode IGNORE_THIS_VERSION_OF_SDL_GetTextureBlendMode
#define SDL_GetTextureColorMod IGNORE_THIS_VERSION_OF_SDL_GetTextureColorMod
-#define SDL_GetRendererFromTexture IGNORE_THIS_VERSION_OF_SDL_GetRendererFromTexture
#define SDL_GetTextureScaleMode IGNORE_THIS_VERSION_OF_SDL_GetTextureScaleMode
#define SDL_GetThreadID IGNORE_THIS_VERSION_OF_SDL_GetThreadID
#define SDL_GetThreadName IGNORE_THIS_VERSION_OF_SDL_GetThreadName
@@ -987,6 +986,7 @@
#define SDL_wcsnstr IGNORE_THIS_VERSION_OF_SDL_wcsnstr
#define SDL_SyncWindow IGNORE_THIS_VERSION_OF_SDL_SyncWindow
#define SDL_GetGamepadSteamHandle IGNORE_THIS_VERSION_OF_SDL_GetGamepadSteamHandle
+#define SDL_GetRendererFromTexture IGNORE_THIS_VERSION_OF_SDL_GetRendererFromTexture
#define SDL_FUNCTION_POINTER_IS_VOID_POINTER 1
@@ -2283,10 +2283,6 @@
#undef SDL_GetTextureColorMod
#endif
-#ifdef SDL_GetRendererFromTexture
-#undef SDL_GetRendererFromTexture
-#endif
-
#ifdef SDL_GetTextureScaleMode
#undef SDL_GetTextureScaleMode
#endif
@@ -4851,6 +4847,10 @@
#undef SDL_GetGamepadSteamHandle
#endif
+#ifdef SDL_GetRendererFromTexture
+#undef SDL_GetRendererFromTexture
+#endif
+
/* undefine these macros, too: redefine as SDL3_xxx, if needed. */
#ifdef SDL_enabled_assert
diff --git a/src/test/SDL_test_harness.c b/src/test/SDL_test_harness.c
index db3d2a2..460e694 100644
--- a/src/test/SDL_test_harness.c
+++ b/src/test/SDL_test_harness.c
@@ -494,7 +494,7 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
/* Within each suite, loop over all test cases to check if we have a filter match */
for (testCounter = 0; testSuite->testCases[testCounter]; ++testCounter) {
testCase = testSuite->testCases[testCounter];
- SDLTest_Log(" test: %s", testCase->name);
+ SDLTest_Log(" test: %s%s", testCase->name, testCase->enabled ? "" : " (disabled)");
}
}
SDLTest_Log("Exit code: 2");
diff --git a/test/testautomation_render.c b/test/testautomation_render.c
index 9cf48ef..45198a8 100644
--- a/test/testautomation_render.c
+++ b/test/testautomation_render.c
@@ -43,6 +43,7 @@ static int _isSupported(int code);
void InitCreateRenderer(void *arg)
{
int posX = 100, posY = 100, width = 320, height = 240;
+ int renderer_flags = SDL_RENDERER_ACCELERATED;
renderer = NULL;
window = SDL_CreateWindow("render_testCreateRenderer", posX, posY, width, height, 0);
SDLTest_AssertPass("SDL_CreateWindow()");
@@ -51,7 +52,11 @@ void InitCreateRenderer(void *arg)
return;
}
- renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
+ if (SDL_strcmp(SDL_GetCurrentVideoDriver(), "dummy") == 0) {
+ renderer_flags = 0;
+ }
+
+ renderer = SDL_CreateRenderer(window, -1, renderer_flags);
SDLTest_AssertPass("SDL_CreateRenderer()");
SDLTest_AssertCheck(renderer != NULL, "Check SDL_CreateRenderer result");
if (renderer == NULL) {