Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sdl2-compat for openSUSE:Factory checked in at 2026-09-04 12:36:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sdl2-compat (Old) and /work/SRC/openSUSE:Factory/.sdl2-compat.new.1265 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sdl2-compat" Fri Sep 4 12:36:51 2026 rev:12 rq:1375561 version:2.32.72 Changes: -------- --- /work/SRC/openSUSE:Factory/sdl2-compat/sdl2-compat.changes 2026-06-10 15:44:46.555889256 +0200 +++ /work/SRC/openSUSE:Factory/.sdl2-compat.new.1265/sdl2-compat.changes 2026-09-04 12:37:44.832972383 +0200 @@ -1,0 +2,12 @@ +Thu Sep 3 07:58:22 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 2.32.72 + * Fixed a crash during the menu transition in Super Mario War. + * Fixed menu rendering in The Ur-Quan Masters. + * Fixed loading screen flickering in Payday 2. + * Fixed the pointer position in Augustus when screen scaling is + enabled. + * Fixed an out of bounds exception in the OBS plugin + "input-overlay" when using the new Steam Controller. + +------------------------------------------------------------------- Old: ---- sdl2-compat-2.32.70.tar.gz sdl2-compat-2.32.70.tar.gz.sig New: ---- sdl2-compat-2.32.72.tar.gz sdl2-compat-2.32.72.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sdl2-compat.spec ++++++ --- /var/tmp/diff_new_pack.oGqf12/_old 2026-09-04 12:37:45.523996658 +0200 +++ /var/tmp/diff_new_pack.oGqf12/_new 2026-09-04 12:37:45.524996693 +0200 @@ -19,7 +19,7 @@ %define lname libSDL2-2_0-0 %global _lto_cflags %_lto_cflags -ffat-lto-objects Name: sdl2-compat -Version: 2.32.70 +Version: 2.32.72 Release: 0 Summary: SDL-2.0 Compatibility Layer for Simple DirectMedia Layer 3.0 License: Zlib @@ -43,9 +43,12 @@ %package -n %lname Summary: SDL-2.0 Compatibility Layer for Simple DirectMedia Layer 3.0 Group: System/Libraries -Requires: libSDL3-0 >= 3.2.10 -# "sdl2-compat 2.32.54: SDL3 library is too old (have 3.2.8, but -# need at least 3.2.10). Segmentation fault (core dumped)" +# There is a runtime check for an appropraite SDL3 base +%ifarch %x86_64 %arm64 %loongarch64 %mips64 %power64 %sparc64 %riscv64 +Requires: libSDL3.so.0()(64bit) >= 3.2.12 +%else +Requires: libSDL3.so.0 >= 3.2.12 +%endif %description -n %lname This is the "Simple DirectMedia Layer" library built from sdl2-compat. ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.oGqf12/_old 2026-09-04 12:37:45.556997817 +0200 +++ /var/tmp/diff_new_pack.oGqf12/_new 2026-09-04 12:37:45.558997887 +0200 @@ -1,5 +1,5 @@ -mtime: 1780932727 -commit: 91ebf83a888e03df469315bba6a1c1bcad7c698d98db4d8c9d68352e5f6a09ba +mtime: 1788422702 +commit: 22abfb00574e82c881ff9f15de1a20a2a7cf9cee577ec2fd52b3414f82eb5ae9 url: https://src.opensuse.org/jengelh/sdl2-compat revision: master ++++++ sdl2-compat-2.32.70.tar.gz -> sdl2-compat-2.32.72.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/.git-hash new/sdl2-compat-2.32.72/.git-hash --- old/sdl2-compat-2.32.70/.git-hash 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/.git-hash 2026-09-02 18:25:35.000000000 +0200 @@ -1 +1 @@ -a53b6ad90ecd2d0ccfe01d5cfd2059793acf8c12 +50b45c4417f6c9cab3168a74df59ff1e8c4125ae diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/CMakeLists.txt new/sdl2-compat-2.32.72/CMakeLists.txt --- old/sdl2-compat-2.32.70/CMakeLists.txt 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/CMakeLists.txt 2026-09-02 18:25:35.000000000 +0200 @@ -3,7 +3,7 @@ # cmake -DSDL3_INCLUDE_DIRS=/opt/SDL3/include [other stuff ....] cmake_minimum_required(VERSION 3.0...4.1) -project(sdl2_compat VERSION 2.32.70 LANGUAGES C) +project(sdl2_compat VERSION 2.32.72 LANGUAGES C) if(POLICY CMP0074) # CMP0074: find_package() uses <PackageName>_ROOT variables. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/REVISION.txt new/sdl2-compat-2.32.72/REVISION.txt --- old/sdl2-compat-2.32.70/REVISION.txt 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/REVISION.txt 2026-09-02 18:25:35.000000000 +0200 @@ -1 +1 @@ -release-2.32.70-0-ga53b6ad +release-2.32.72-0-g50b45c4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_assert.h new/sdl2-compat-2.32.72/include/SDL2/SDL_assert.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_assert.h 2026-01-01 19:03:02.000000000 +0100 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_assert.h 2026-07-14 01:39:50.000000000 +0200 @@ -84,11 +84,16 @@ #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 +sizeof ((x) ? 1 : 0) 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, +expensive checks at run time, just the constant size of what int would be, which presumably gets optimized out as unused. + +(The `? 1 : 0` is so this always dithers down to `sizeof (int)`...otherwise +you'll have problems when bitfields are used as the condition, since the +compiler will error out on the sizeof.) + This also solves the problem of... int somevalue = blah(); @@ -107,7 +112,7 @@ #endif #define SDL_disabled_assert(condition) \ - do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + do { (void) sizeof ((condition) ? 1 : 0); } while (SDL_NULL_WHILE_LOOP_CONDITION) typedef enum { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_gamecontroller.h new/sdl2-compat-2.32.72/include/SDL2/SDL_gamecontroller.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_gamecontroller.h 2026-01-01 19:03:02.000000000 +0100 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_gamecontroller.h 2026-06-27 22:51:50.000000000 +0200 @@ -79,6 +79,19 @@ SDL_CONTROLLER_TYPE_MAX } SDL_GameControllerType; +/** + * Types of game controller control bindings. + * + * A game controller is a collection of bindings that map arbitrary joystick + * buttons, axes and hat switches to specific positions on a generic + * console-style gamepad. + * + * \since This enum is available since SDL 2.0.0. + * + * \sa SDL_GameControllerButtonBind + * \sa SDL_GameControllerGetBindForAxis + * \sa SDL_GameControllerGetBindForButton + */ typedef enum SDL_GameControllerBindType { SDL_CONTROLLER_BINDTYPE_NONE = 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_locale.h new/sdl2-compat-2.32.72/include/SDL2/SDL_locale.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_locale.h 2026-01-01 19:03:02.000000000 +0100 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_locale.h 2026-06-27 22:51:50.000000000 +0200 @@ -39,13 +39,25 @@ /* *INDENT-ON* */ #endif - +/** + * A struct to provide locale data. + * + * Locale data is split into a spoken language, like English, and an optional + * country, like Canada. The language will be in ISO-639 format (so English + * would be "en"), and the country, if not NULL, will be an ISO-3166 country + * code (so Canada would be "CA"). + * + * \since This struct is available since SDL 2.0.14. + * + * \sa SDL_GetPreferredLocales + */ typedef struct SDL_Locale { const char *language; /**< A language name, like "en" for English. */ const char *country; /**< A country, like "US" for America. Can be NULL. */ } SDL_Locale; + /** * Report the user's preferred locale. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_revision.h new/sdl2-compat-2.32.72/include/SDL2/SDL_revision.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_revision.h 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_revision.h 2026-09-02 18:25:35.000000000 +0200 @@ -1,6 +1,6 @@ #ifdef SDL_VENDOR_INFO -#define SDL_REVISION "release-2.32.70-0-ga53b6ad (" SDL_VENDOR_INFO ")" +#define SDL_REVISION "release-2.32.72-0-g50b45c4 (" SDL_VENDOR_INFO ")" #else -#define SDL_REVISION "release-2.32.70-0-ga53b6ad" +#define SDL_REVISION "release-2.32.72-0-g50b45c4" #endif #define SDL_REVISION_NUMBER 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_stdinc.h new/sdl2-compat-2.32.72/include/SDL2/SDL_stdinc.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_stdinc.h 2026-01-01 19:03:02.000000000 +0100 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_stdinc.h 2026-06-27 22:51:50.000000000 +0200 @@ -178,12 +178,18 @@ /* @{ */ #ifdef __CC_ARM +#ifndef SDL_WIKI_DOCUMENTATION_SECTION /* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ #define SDL_FALSE 0 #define SDL_TRUE 1 typedef int SDL_bool; +#endif #else -typedef enum + +/** + * A boolean (true/false) type. + */ +typedef enum SDL_bool { SDL_FALSE = 0, SDL_TRUE = 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/include/SDL2/SDL_version.h new/sdl2-compat-2.32.72/include/SDL2/SDL_version.h --- old/sdl2-compat-2.32.70/include/SDL2/SDL_version.h 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/include/SDL2/SDL_version.h 2026-09-02 18:25:35.000000000 +0200 @@ -58,7 +58,7 @@ */ #define SDL_MAJOR_VERSION 2 #define SDL_MINOR_VERSION 32 -#define SDL_PATCHLEVEL 70 +#define SDL_PATCHLEVEL 72 /** * Macro to determine SDL version program was compiled against. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/Makefile.darwin new/sdl2-compat-2.32.72/src/Makefile.darwin --- old/sdl2-compat-2.32.70/src/Makefile.darwin 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/src/Makefile.darwin 2026-09-02 18:25:35.000000000 +0200 @@ -20,7 +20,7 @@ LDFLAGS = -dynamiclib -Wl,-undefined,error -Wl,-single_module #LDFLAGS+= -Wl,-headerpad_max_install_names LDFLAGS+= -Wl,-install_name,"/usr/local/lib/$(DYLIB)" -LDFLAGS+= -Wl,-compatibility_version,3201.0 -Wl,-current_version,3201.70 +LDFLAGS+= -Wl,-compatibility_version,3201.0 -Wl,-current_version,3201.72 LDLIBS = -Wl,-framework,AppKit # this is needed for x86_64 - cross-gcc might not add it. #LDLIBS += -Wl,-lbundle1.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/Makefile.linux new/sdl2-compat-2.32.72/src/Makefile.linux --- old/sdl2-compat-2.32.70/src/Makefile.linux 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/src/Makefile.linux 2026-09-02 18:25:35.000000000 +0200 @@ -13,7 +13,7 @@ LDFLAGS+= -Wl,--no-undefined LDLIBS = -ldl -SHLIB = libSDL2-2.0.so.0.3200.70 +SHLIB = libSDL2-2.0.so.0.3200.72 OBJ = sdl2_compat.o dynapi/SDL_dynapi.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/sdl2_compat.c new/sdl2-compat-2.32.72/src/sdl2_compat.c --- old/sdl2-compat-2.32.70/src/sdl2_compat.c 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/src/sdl2_compat.c 2026-09-02 18:25:35.000000000 +0200 @@ -58,7 +58,7 @@ * The number might increment past 90 if there are a ton of releases. */ #define SDL2_COMPAT_VERSION_MINOR 32 -#define SDL2_COMPAT_VERSION_PATCH 70 +#define SDL2_COMPAT_VERSION_PATCH 72 #ifndef SDL2COMPAT_REVISION #define SDL2COMPAT_REVISION "SDL-2." STRINGIFY(SDL2_COMPAT_VERSION_MINOR) "." STRINGIFY(SDL2_COMPAT_VERSION_PATCH) "-no-vcs" @@ -270,18 +270,27 @@ } /* you can use SDL3_strlen once we're past startup. */ -static int SDL2Compat_strlen(const char *str) +static size_t SDL2Compat_strlen(const char *str) { - volatile int retval = 0; /* volatile prevents gcc from optimizing this into strlen() */ - while (str[retval]) { - retval++; +#ifdef SDL_PLATFORM_WINDOWS + /* volatile prevents gcc from optimizing this into a call to the + * strlen() library function, which we are intentionally avoiding on + * Windows: see #340 */ + volatile const char *ptr = str; + while (*ptr) { + ++ptr; } - return retval; + return (size_t)(ptr - str); +#else + /* On other platforms we rely on libc */ + return strlen (str); +#endif } /* you can use SDL3_strcmp once we're past startup. */ static bool SDL2Compat_strequal(const char *a, const char *b) { +#ifdef SDL_PLATFORM_WINDOWS while (true) { const char cha = *a; if (cha != *b) { @@ -293,11 +302,15 @@ b++; } return true; +#else + return (strcmp (a, b) == 0); +#endif } /* you can use SDL3_strrchr once we're past startup. */ static char *SDL2Compat_strrchr(const char *string, int c) { +#ifdef SDL_PLATFORM_WINDOWS const char *bufp = string + SDL2Compat_strlen(string); while (bufp >= string) { if (*bufp == c) { @@ -306,6 +319,9 @@ --bufp; } return NULL; +#else + return (char *) strrchr (string, c); +#endif } /* log a string using platform-specific code for before SDL3 is fully available. */ @@ -385,11 +401,11 @@ /* I don't know if this is the _right_ order to try, but this seems reasonable */ static const char * const dylib_locations[] = { "@loader_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3.dylib */ - "@loader_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL2.framework */ + "@loader_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3.framework */ "@executable_path/" SDL3_LIBNAME, /* MyApp.app/Contents/MacOS/libSDL3.dylib */ - "@executable_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL2.framework */ - NULL, /* /Users/username/Library/Frameworks/SDL2.framework */ - "/Library/Frameworks" SDL3_FRAMEWORK, /* /Library/Frameworks/SDL2.framework */ + "@executable_path/../Frameworks/" SDL3_FRAMEWORK, /* MyApp.app/Contents/Frameworks/SDL3.framework */ + NULL, /* /Users/username/Library/Frameworks/SDL3.framework */ + "/Library/Frameworks/" SDL3_FRAMEWORK, /* /Library/Frameworks/SDL3.framework */ SDL3_LIBNAME /* oh well, anywhere the system can see the .dylib (/usr/local/lib or whatever) */ }; @@ -425,6 +441,7 @@ } #elif defined(SDL_PLATFORM_UNIX) #include <dlfcn.h> + #include <SDL3/SDL_dlopennote.h> #ifdef __ANDROID__ #define SDL3_LIBNAME "libSDL3.so" #else @@ -434,6 +451,14 @@ #define LoadSDL3Library() ((Loaded_SDL3 = dlopen(SDL3_LIBNAME, RTLD_LOCAL|RTLD_NOW)) != NULL) #define LookupSDL3Sym(sym) dlsym(Loaded_SDL3, sym) #define CloseSDL3Library() { if (Loaded_SDL3) { dlclose(Loaded_SDL3); Loaded_SDL3 = NULL; } } + #ifdef SDL_ELF_NOTE_DLOPEN + SDL_ELF_NOTE_DLOPEN( + "SDL3", + "sdl2-compat translates SDL2 API calls into equivalent SDL3 calls", + SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED, + SDL3_LIBNAME + ) + #endif #else #error Please define your platform. #endif @@ -543,6 +568,11 @@ /* X4: Foundations assumes X11 and exits with an error otherwise * https://github.com/libsdl-org/sdl2-compat/issues/555 */ {"X4", SDL_HINT_VIDEO_DRIVER, "x11"}, + + /* Payday 2 wants to do most of its video subsystem stuff from a background thread, including + * CreateWindow, PollEvent, and GL_SwapWindow, and this upsets Wayland. + * https://github.com/libsdl-org/sdl2-compat/issues/537 */ + {"payday2_release", SDL_HINT_VIDEO_DRIVER, "x11"}, #endif }; @@ -895,7 +925,7 @@ if (WantDebugLogging) { const char *lead = "sdl2-compat: This app appears to be named:"; char msg[256]; - if ((SDL2Compat_strlen(lead) + SDL2Compat_strlen(exe_name) + 2) <= (int) (sizeof (msg))) { + if (SDL2Compat_strlen(exe_name) <= sizeof (msg) - (SDL2Compat_strlen(lead) + 2)) { char *p = msg; p = SDL2COMPAT_stpcpy(p, lead); p = SDL2COMPAT_stpcpy(p, " "); @@ -2306,22 +2336,18 @@ case SDL_EVENT_MOUSE_MOTION: renderer = SDL3_GetRenderer(SDL3_GetWindowFromID(event3->motion.windowID)); if (renderer) { - SDL_RendererLogicalPresentation mode = SDL_LOGICAL_PRESENTATION_DISABLED; - SDL3_GetRenderLogicalPresentation(renderer, NULL, NULL, &mode); - if (mode != SDL_LOGICAL_PRESENTATION_DISABLED) { - SDL3_memcpy(&cvtevent3, event3, sizeof (SDL_Event)); - SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); - if (SDL3_GetBooleanProperty(SDL3_GetRendererProperties(renderer), PROP_RENDERER_RELATIVE_SCALING, true)) { - /* Accumulate scaled relative motion */ - residual_motion_x = SDL3_modff(residual_motion_x + cvtevent3.motion.xrel, &cvtevent3.motion.xrel); - residual_motion_y = SDL3_modff(residual_motion_y + cvtevent3.motion.yrel, &cvtevent3.motion.yrel); - } else { - /* Undo the relative scaling that SDL_ConvertEventToRenderCoordinates() performed */ - cvtevent3.motion.xrel = event3->motion.xrel; - cvtevent3.motion.yrel = event3->motion.yrel; - } - event3 = &cvtevent3; + SDL3_memcpy(&cvtevent3, event3, sizeof (SDL_Event)); + SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); + if (SDL3_GetBooleanProperty(SDL3_GetRendererProperties(renderer), PROP_RENDERER_RELATIVE_SCALING, true)) { + /* Accumulate scaled relative motion */ + residual_motion_x = SDL3_modff(residual_motion_x + cvtevent3.motion.xrel, &cvtevent3.motion.xrel); + residual_motion_y = SDL3_modff(residual_motion_y + cvtevent3.motion.yrel, &cvtevent3.motion.yrel); + } else { + /* Undo the relative scaling that SDL_ConvertEventToRenderCoordinates() performed */ + cvtevent3.motion.xrel = event3->motion.xrel; + cvtevent3.motion.yrel = event3->motion.yrel; } + event3 = &cvtevent3; } if (UseSDL2PrereleaseEvents) { SDL2PRERELEASE_MouseMotionEvent *motion = (SDL2PRERELEASE_MouseMotionEvent *)&event2->motion; @@ -2342,13 +2368,9 @@ case SDL_EVENT_MOUSE_BUTTON_UP: renderer = SDL3_GetRenderer(SDL3_GetWindowFromID(event3->button.windowID)); if (renderer) { - SDL_RendererLogicalPresentation mode = SDL_LOGICAL_PRESENTATION_DISABLED; - SDL3_GetRenderLogicalPresentation(renderer, NULL, NULL, &mode); - if (mode != SDL_LOGICAL_PRESENTATION_DISABLED) { - SDL3_memcpy(&cvtevent3, event3, sizeof (SDL_Event)); - SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); - event3 = &cvtevent3; - } + SDL3_memcpy(&cvtevent3, event3, sizeof(SDL_Event)); + SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); + event3 = &cvtevent3; } if (UseSDL2PrereleaseEvents) { SDL2PRERELEASE_MouseButtonEvent *button = (SDL2PRERELEASE_MouseButtonEvent *)&event2->button; @@ -2365,13 +2387,9 @@ case SDL_EVENT_MOUSE_WHEEL: renderer = SDL3_GetRenderer(SDL3_GetWindowFromID(event3->wheel.windowID)); if (renderer) { - SDL_RendererLogicalPresentation mode = SDL_LOGICAL_PRESENTATION_DISABLED; - SDL3_GetRenderLogicalPresentation(renderer, NULL, NULL, &mode); - if (mode != SDL_LOGICAL_PRESENTATION_DISABLED) { - SDL3_memcpy(&cvtevent3, event3, sizeof (SDL_Event)); - SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); - event3 = &cvtevent3; - } + SDL3_memcpy(&cvtevent3, event3, sizeof(SDL_Event)); + SDL3_ConvertEventToRenderCoordinates(renderer, &cvtevent3); + event3 = &cvtevent3; } if (UseSDL2PrereleaseEvents) { SDL2PRERELEASE_MouseWheelEvent *wheel = (SDL2PRERELEASE_MouseWheelEvent *)&event2->wheel; @@ -2802,6 +2820,14 @@ case SDL_EVENT_CAMERA_DEVICE_DENIED: case SDL_EVENT_RENDER_DEVICE_LOST: return false; + case SDL_EVENT_GAMEPAD_BUTTON_DOWN: + case SDL_EVENT_GAMEPAD_BUTTON_UP: + if (event3->gbutton.button >= SDL_CONTROLLER_BUTTON_MAX) { + return false; + } + break; + default: + break; } GestureProcessEvent(event3); /* this might need to generate new gesture events from touch input. */ @@ -4550,6 +4576,7 @@ SDL_Surface *dst = Surface2to3(dst2); int result = SDL3_BlitSurfaceUnchecked(src, srcrect, dst, dstrect) ? 0 : -1; SynchronizeSurface3to2(src, src2); + SynchronizeSurface3to2(dst, dst2); return result; } @@ -4720,6 +4747,7 @@ SDL_Surface *dst = Surface2to3(dst2); int result = SDL3_BlitSurfaceUncheckedScaled(src, srcrect, dst, dstrect, SDL_SCALEMODE_NEAREST) ? 0 : -1; SynchronizeSurface3to2(src, src2); + SynchronizeSurface3to2(dst, dst2); return result; } @@ -10341,7 +10369,14 @@ SDL_DECLSPEC int SDLCALL SDL_GetColorKey(SDL2_Surface *surface, Uint32 *key) { - return SDL3_GetSurfaceColorKey(Surface2to3(surface), key) ? 0 : -1; + Uint32 local_key; + if (SDL3_GetSurfaceColorKey(Surface2to3(surface), &local_key)) { + if (key) { + *key = local_key; + } + return 0; + } + return -1; } SDL_DECLSPEC int SDLCALL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/sdl2_compat.h new/sdl2-compat-2.32.72/src/sdl2_compat.h --- old/sdl2-compat-2.32.70/src/sdl2_compat.h 2026-01-01 19:03:02.000000000 +0100 +++ new/sdl2-compat-2.32.72/src/sdl2_compat.h 2026-06-12 23:53:37.000000000 +0200 @@ -179,6 +179,33 @@ SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR } SDL_GameControllerType; +typedef enum SDL2_GameControllerButton +{ + 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 +} SDL2_GameControllerButton; + typedef SDL_Gamepad SDL_GameController; /* since they're opaque types, for simplicity we just typedef it here and use the old types in sdl3_syms.h */ typedef SDL_GamepadAxis SDL_GameControllerAxis; typedef SDL_GamepadButton SDL_GameControllerButton; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/sdl3_include_wrapper.h new/sdl2-compat-2.32.72/src/sdl3_include_wrapper.h --- old/sdl2-compat-2.32.70/src/sdl3_include_wrapper.h 2026-05-17 07:25:30.000000000 +0200 +++ new/sdl2-compat-2.32.72/src/sdl3_include_wrapper.h 2026-07-14 01:39:32.000000000 +0200 @@ -1322,6 +1322,20 @@ #define SDL_LoadJPG_IO IGNORE_THIS_VERSION_OF_SDL_LoadJPG_IO #define SDL_LoadJPG IGNORE_THIS_VERSION_OF_SDL_LoadJPG #define SDL_HasSVE2 IGNORE_THIS_VERSION_OF_SDL_HasSVE2 +#define SDL_GamepadHasCapSense IGNORE_THIS_VERSION_OF_SDL_GamepadHasCapSense +#define SDL_GetGamepadCapSense IGNORE_THIS_VERSION_OF_SDL_GetGamepadCapSense +#define SDL_aligned_alloc_zero IGNORE_THIS_VERSION_OF_SDL_aligned_alloc_zero +#define SDL_wcstoul IGNORE_THIS_VERSION_OF_SDL_wcstoul +#define SDL_wcstoll IGNORE_THIS_VERSION_OF_SDL_wcstoll +#define SDL_wcstoull IGNORE_THIS_VERSION_OF_SDL_wcstoull +#define SDL_RequestNotificationPermission IGNORE_THIS_VERSION_OF_SDL_RequestNotificationPermission +#define SDL_ShowNotificationWithProperties IGNORE_THIS_VERSION_OF_SDL_ShowNotificationWithProperties +#define SDL_ShowNotification IGNORE_THIS_VERSION_OF_SDL_ShowNotification +#define SDL_RemoveNotification IGNORE_THIS_VERSION_OF_SDL_RemoveNotification +#define SDL_GetDeviceFormFactor IGNORE_THIS_VERSION_OF_SDL_GetDeviceFormFactor +#define SDL_GetDeviceFormFactorName IGNORE_THIS_VERSION_OF_SDL_GetDeviceFormFactorName +#define SDL_IsUbuntuTouch IGNORE_THIS_VERSION_OF_SDL_IsUbuntuTouch +#define SDL_GetNumProperties IGNORE_THIS_VERSION_OF_SDL_GetNumProperties #define SDL_FUNCTION_POINTER_IS_VOID_POINTER 1 @@ -6504,6 +6518,62 @@ #undef SDL_HasSVE2 #endif +#ifdef SDL_GamepadHasCapSense +#undef SDL_GamepadHasCapSense +#endif + +#ifdef SDL_GetGamepadCapSense +#undef SDL_GetGamepadCapSense +#endif + +#ifdef SDL_aligned_alloc_zero +#undef SDL_aligned_alloc_zero +#endif + +#ifdef SDL_wcstoul +#undef SDL_wcstoul +#endif + +#ifdef SDL_wcstoll +#undef SDL_wcstoll +#endif + +#ifdef SDL_wcstoull +#undef SDL_wcstoull +#endif + +#ifdef SDL_RequestNotificationPermission +#undef SDL_RequestNotificationPermission +#endif + +#ifdef SDL_ShowNotificationWithProperties +#undef SDL_ShowNotificationWithProperties +#endif + +#ifdef SDL_ShowNotification +#undef SDL_ShowNotification +#endif + +#ifdef SDL_RemoveNotification +#undef SDL_RemoveNotification +#endif + +#ifdef SDL_GetDeviceFormFactor +#undef SDL_GetDeviceFormFactor +#endif + +#ifdef SDL_GetDeviceFormFactorName +#undef SDL_GetDeviceFormFactorName +#endif + +#ifdef SDL_IsUbuntuTouch +#undef SDL_IsUbuntuTouch +#endif + +#ifdef SDL_GetNumProperties +#undef SDL_GetNumProperties +#endif + /* see at top. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sdl2-compat-2.32.70/src/version.rc new/sdl2-compat-2.32.72/src/version.rc --- old/sdl2-compat-2.32.70/src/version.rc 2026-06-08 17:01:06.000000000 +0200 +++ new/sdl2-compat-2.32.72/src/version.rc 2026-09-02 18:25:35.000000000 +0200 @@ -3,8 +3,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,32,70,0 - PRODUCTVERSION 2,32,70,0 + FILEVERSION 2,32,72,0 + PRODUCTVERSION 2,32,72,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x40004L @@ -17,12 +17,12 @@ BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "SDL\0" - VALUE "FileVersion", "2, 32, 70, 0\0" + VALUE "FileVersion", "2, 32, 72, 0\0" VALUE "InternalName", "SDL\0" VALUE "LegalCopyright", "Copyright (C) 2026 Sam Lantinga\0" VALUE "OriginalFilename", "SDL2.dll\0" VALUE "ProductName", "Simple DirectMedia Layer 2.0 wrapper\0" - VALUE "ProductVersion", "2, 32, 70, 0\0" + VALUE "ProductVersion", "2, 32, 72, 0\0" END END BLOCK "VarFileInfo"
