Compare commits

..

29 Commits

Author SHA1 Message Date
Sam Lantinga
55b03c7493 Updated to version 2.24.2 for point release 2022-11-01 05:47:12 -07:00
Anonymous Maarten
beeac60227 cmake: fix finding wayland-libdecor
It was broken in 11d53c84a7
(cherry-picked from commit 0823b5973a)
2022-10-24 20:37:00 +03:00
Anonymous Maarten
214258660f cmake: use pkg-config's library dirs as hint for finding a shared library
(cherry-picked from commit 11d53c84a7)
2022-10-24 20:37:00 +03:00
Sam Lantinga
08f83f953c Don't use RAWINPUT joystick driver on Windows XP
Fixes https://github.com/libsdl-org/SDL/issues/6400
(cherry-picked from commit 5025f24033)
2022-10-24 20:37:00 +03:00
Sam Lantinga
d1dcbfe9e9 Only check to see if the ICC profile changes when the display changes or we gain focus
Fixes https://github.com/libsdl-org/SDL/issues/6366
(cherry-picked from commit 61b5360e17)
2022-10-24 20:37:00 +03:00
Sam Lantinga
c0d1f73247 d3d12: actually execute the pending commands before processing resize
This makes sure all the resources are in the expected state

Fix the D3D12 case in https://github.com/libsdl-org/SDL/issues/6376
(cherry-picked from commit df1bd07dee)
2022-10-24 20:37:00 +03:00
Sam Lantinga
923ab93969 d3d12: fixed window resize handling
Fixes https://github.com/libsdl-org/SDL/issues/6355
(cherry-picked from commit f99fc3268e)
2022-10-24 20:37:00 +03:00
Sam Lantinga
1f82b4a96f d3d12: reset the vertex buffer size when it is released
(cherry-picked from commit 490c20f93f)
2022-10-24 20:37:00 +03:00
GNQG
a053211a2a fix SDL_SendEditingText when long composition text is enabled and strlen(text) == SDL_TEXTEDITINGEVENT_TEXT_SIZE
(cherry-picked from commit 965ba1e097)
2022-10-24 20:15:00 +03:00
Sam Lantinga
2d580f8f45 Define _USE_MATH_DEFINES for Visual Studio (thanks @pionere!)
Fixes https://github.com/libsdl-org/SDL/issues/3790
(cherry-picked from commit c6e8961979)
2022-10-24 20:04:21 +03:00
Anonymous Maarten
b8c6d3d7e1 cmake: mark hidapi as disabled when not found
(cherry-picked from commit 19b13aab98)
(cherry-picked from commit c3495ec6ea)
(cherry-picked from commit 6dfd7a17e1)
2022-10-24 20:04:21 +03:00
Anonymous Maarten
1e5daf1bef cmake: fix build with SDL_WAYLAND_SHARED=OFF
(cherry-picked from commit 711846c1f4)
2022-10-24 20:04:21 +03:00
Simon McVittie
21e23ef913 testevdev: Explain why the test data is encoded the way it is
Signed-off-by: Simon McVittie <smcv@collabora.com>

(cherry-picked from commit 7d230af51d)
2022-10-24 20:04:21 +03:00
Simon McVittie
4a0ad650d0 testevdev: Add a static assertion for supported sizeof(long)
If this assertion fails on some platform (unlikely), we will need a
third implementation for SwapLongLE().

Signed-off-by: Simon McVittie <smcv@collabora.com>

(cherry-picked from commit 81dee31949)
2022-10-24 20:04:21 +03:00
Helge Deller
e07f106760 testevdev: Fix detection of word size
The check for whether to use a 32- or 64-bit swap for an array of long
values always took the 64-bit path, because <limits.h> wasn't included
and therefore ULONG_MAX wasn't defined. Turn this into a runtime check,
which a reasonable compiler will optimize into a constant.

This fixes testevdev failures on 32-bit big-endian platforms such as hppa
and older powerpc. Little-endian and/or 64-bit platforms are unaffected.

[smcv: Added commit message]
Bug-Debian: https://bugs.debian.org/1021310
Co-authored-by: Simon McVittie <smcv@collabora.com>

(cherry-picked from commit fb32effd15)
2022-10-24 20:04:20 +03:00
Sam Lantinga
88e64108f5 Clarified that GNU sort isn't required, we just need the -V option to be supported
(cherry-picked from commit f687cbd4c6)
2022-10-24 20:04:20 +03:00
Sam Lantinga
1b5bf2ac65 GNU sort isn't available on older macOS and some BSD systems
Don't prevent building entirely, just warn that we won't be able to find dynamic libraries in this case.

Fixes https://github.com/libsdl-org/SDL/pull/6338
(cherry-picked from commit 8c587636dc)
2022-10-24 20:04:20 +03:00
Ozkan Sezer
679d33ab44 updated VS project file
(cherry-picked from commit e3b2830f99)
2022-10-24 20:04:20 +03:00
Ozkan Sezer
9e72ec4ed9 Makefile.w32: no need for the description field, we have a *.res already
(cherry-picked from commit 1b52145bad)
2022-10-24 20:04:20 +03:00
Ozkan Sezer
8104992064 testhaptic: fix watcom "&array may not produce intended result" warning
(cherry-picked from commit d022039529)
2022-10-24 20:04:20 +03:00
Ozkan Sezer
51958da000 loadso, dlsym, SDL_LoadFunction: cleanup the underscored name path.
- strlcpy was passed a wrong buffer length parameter. has worked so
  far by luck.
- use memcpy instead of strlcpy for simplicity.
- 'append' has been a typo: should be 'prepend'.

(cherry-picked from commit 3d415bc5d6)
2022-10-22 20:04:20 +03:00
Ozkan Sezer
b435252b29 hidapi, libusb: remove os/2 symbol load hack after os/2 loadso updates
(cherry-picked from commit 65a38a4015)
2022-10-22 20:04:20 +03:00
Ozkan Sezer
eb43d57880 os2 loadso improvements:
- SDL_LoadObject: upon failure, strip the .dll extension and retry,
  but only if module name has no path.
- SDL_LoadFunction: upon failure, retry with an underscore prepended,
  e.g. for gcc-built dlls.

(cherry-picked from commit 3f1b5efcca)
2022-10-22 20:04:20 +03:00
Ozkan Sezer
92937ff5e0 os2: fix error message for SDL_LoadObject()
(cherry-picked from commit 4264c0b674)
2022-10-22 20:04:20 +03:00
Anonymous Maarten
36b987dabe cmake: else() does not need an argument 2022-10-20 13:30:37 +02:00
Ryan C. Gordon
266ca2c933 coreaudio: Dispose of AudioQueue before waiting on the thread.
Otherwise the thread might block for a long time (more than 10 seconds!).
It's not clear to me why this happens, or why its safe to do this with a
resource that's still in use, but we have, until recently, always
disposed of the AudioQueue first, so changing back is probably okay.

Also changed the disposal to allow in-flight buffers to reach hardware;
otherwise you lose the last little bit of audio that's already been queued
but not played, which you can hear clearly in the loopwave test program.

Fixes #6377.
(cherry picked from commit e7ab581d79)
2022-10-19 20:29:24 +03:00
Ethan Lee
b7e8e6f3b8 wayland: Check for the input handle before checking the keyboard handle
(cherry picked from commit be2cb00066)
2022-10-11 08:31:49 -07:00
Sam Lantinga
30579c8cd7 Don't try to create a semaphore for the mutex implementation if threads are disabled
Fixes https://github.com/libsdl-org/SDL/issues/6344

(cherry picked from commit 17b43b0fdd)
2022-10-10 14:35:30 -07:00
Ozkan Sezer
4726270ead WIN_GetDrawableSize: avoid NULL pointer dereference
Fixes https://github.com/libsdl-org/SDL/issues/6356
2022-10-08 23:01:28 +03:00
27 changed files with 160 additions and 100 deletions

View File

@@ -82,7 +82,7 @@ endif()
# See docs/release_checklist.md
set(SDL_MAJOR_VERSION 2)
set(SDL_MINOR_VERSION 24)
set(SDL_MICRO_VERSION 1)
set(SDL_MICRO_VERSION 2)
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
# Set defaults preventing destination file conflicts
@@ -483,7 +483,7 @@ endforeach()
set_option(SDL_WAYLAND "Use Wayland video driver" ${UNIX_SYS})
dep_option(SDL_WAYLAND_SHARED "Dynamically load Wayland support" ON "SDL_WAYLAND" OFF)
dep_option(SDL_WAYLAND_LIBDECOR "Use client-side window decorations on Wayland" ON "SDL_WAYLAND" OFF)
dep_option(SDL_WAYLAND_LIBDECOR_SHARED "Dynamically load libdecor support" ON "SDL_WAYLAND_LIBDECOR" OFF)
dep_option(SDL_WAYLAND_LIBDECOR_SHARED "Dynamically load libdecor support" ON "SDL_WAYLAND_LIBDECOR;SDL_WAYLAND_SHARED" OFF)
dep_option(SDL_WAYLAND_QT_TOUCH "QtWayland server support for Wayland video driver" ON "SDL_WAYLAND" OFF)
set_option(SDL_RPI "Use Raspberry Pi video driver" ${UNIX_SYS})
set_option(SDL_COCOA "Use Cocoa video driver" ${APPLE})

View File

@@ -13,7 +13,7 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 24
MICRO_VERSION = 1
MICRO_VERSION = 2
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
DESCRIPTION = Simple DirectMedia Layer 2

View File

@@ -4,9 +4,8 @@
LIBNAME = SDL2
MAJOR_VERSION = 2
MINOR_VERSION = 24
MICRO_VERSION = 1
MICRO_VERSION = 2
VERSION = $(MAJOR_VERSION).$(MINOR_VERSION).$(MICRO_VERSION)
DESCRIPTION = Simple DirectMedia Layer 2
LIBHOME = .
DLLFILE = $(LIBHOME)/$(LIBNAME).dll
@@ -20,6 +19,8 @@ INCPATH+= -I"src/video/khronos"
LIBM = SDL2libm.lib
TLIB = SDL2test.lib
# user32.lib, gdi32.lib, ole32.lib and oleaut32.lib are actually
# among the default libraries in wlink.lnk for nt_dll linkage...
LIBS = user32.lib gdi32.lib winmm.lib imm32.lib ole32.lib oleaut32.lib shell32.lib setupapi.lib version.lib uuid.lib dxguid.lib $(LIBM)
CFLAGS = -bt=nt -d0 -q -bm -5s -fp5 -fpi87 -sg -oeatxhn -ei
@@ -253,7 +254,6 @@ $(LNKFILE): Makefile.w32
@%append $@ OPTION QUIET
@%append $@ OPTION IMPF=$(EXPFILE)
@%append $@ OPTION MAP=$(LIBHOME)/$^&.map
@%append $@ OPTION DESCRIPTION '@$#libsdl org:$(VERSION)$#@$(DESCRIPTION)'
@%append $@ OPTION ELIMINATE
@%append $@ OPTION SHOWDEAD

View File

@@ -495,9 +495,6 @@
<ClInclude Include="..\..\src\haptic\SDL_haptic_c.h">
<Filter>haptic</Filter>
</ClInclude>
<ClInclude Include="..\..\src\hidapi\SDL_hidapi.h">
<Filter>hidapi</Filter>
</ClInclude>
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h">
<Filter>joystick</Filter>
</ClInclude>
@@ -835,6 +832,7 @@
<ClInclude Include="..\..\src\render\direct3d12\SDL_shaders_d3d12.h">
<Filter>render\direct3d12</Filter>
</ClInclude>
<ClInclude Include="..\..\src\hidapi\SDL_hidapi_c.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\audio\wasapi\SDL_wasapi.c" />
@@ -1351,6 +1349,7 @@
<ClCompile Include="..\..\src\render\direct3d12\SDL_shaders_d3d12.c">
<Filter>render\direct3d12</Filter>
</ClCompile>
<ClCompile Include="..\..\src\stdlib\SDL_mslibc.c" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\src\main\windows\version.rc" />

View File

@@ -19,10 +19,10 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.24.1</string>
<string>2.24.2</string>
<key>CFBundleSignature</key>
<string>SDLX</string>
<key>CFBundleVersion</key>
<string>2.24.1</string>
<string>2.24.2</string>
</dict>
</plist>

View File

@@ -9397,7 +9397,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES;
DYLIB_COMPATIBILITY_VERSION = 2401.0.0;
DYLIB_CURRENT_VERSION = 2401.1.0;
DYLIB_CURRENT_VERSION = 2401.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_ALTIVEC_EXTENSIONS = YES;
@@ -9482,7 +9482,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 2401.0.0;
DYLIB_CURRENT_VERSION = 2401.1.0;
DYLIB_CURRENT_VERSION = 2401.2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;

View File

@@ -1,8 +1,11 @@
include(CMakeParseArguments)
macro(FindLibraryAndSONAME _LIB)
cmake_parse_arguments(FLAS "" "" "LIBDIRS" ${ARGN})
string(TOUPPER ${_LIB} _UPPERLNAME)
string(REGEX REPLACE "\\-" "_" _LNAME "${_UPPERLNAME}")
find_library(${_LNAME}_LIB ${_LIB})
find_library(${_LNAME}_LIB ${_LIB} PATHS ${FLAS_LIBDIRS})
if(${_LNAME}_LIB)
# reduce the library name for shared linking
@@ -131,7 +134,7 @@ macro(CheckPipewire)
if(SDL_PIPEWIRE_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic Pipewire loading")
endif()
FindLibraryAndSONAME("pipewire-0.3")
FindLibraryAndSONAME("pipewire-0.3" LIBDIRS ${PKG_PIPEWIRE_LIBRARY_DIRS})
if(SDL_PIPEWIRE_SHARED AND PIPEWIRE_0.3_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC "\"${PIPEWIRE_0.3_LIB_SONAME}\"")
set(HAVE_PIPEWIRE_SHARED TRUE)
@@ -160,7 +163,7 @@ macro(CheckPulseAudio)
if(SDL_PULSEAUDIO_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic PulseAudio loading")
endif()
FindLibraryAndSONAME("pulse-simple")
FindLibraryAndSONAME("pulse-simple" LIBDIRS ${PKG_PULSEAUDIO_LIBRARY_DIRS})
if(SDL_PULSEAUDIO_SHARED AND PULSE_SIMPLE_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${PULSE_SIMPLE_LIB_SONAME}\"")
set(HAVE_PULSEAUDIO_SHARED TRUE)
@@ -189,7 +192,7 @@ macro(CheckJACK)
if(SDL_JACK_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic JACK audio loading")
endif()
FindLibraryAndSONAME("jack")
FindLibraryAndSONAME("jack" LIBDIRS ${PKG_JACK_LIBRARY_DIRS})
if(SDL_JACK_SHARED AND JACK_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_JACK_DYNAMIC "\"${JACK_LIB_SONAME}\"")
set(HAVE_JACK_SHARED TRUE)
@@ -218,7 +221,7 @@ macro(CheckESD)
if(SDL_ESD_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic ESD loading")
endif()
FindLibraryAndSONAME(esd)
FindLibraryAndSONAME(esd LIBDIRS ${PKG_ESD_LIBRARY_DIRS})
if(SDL_ESD_SHARED AND ESD_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${ESD_LIB_SONAME}\"")
set(HAVE_ESD_SHARED TRUE)
@@ -312,7 +315,7 @@ macro(CheckSNDIO)
if(SDL_SNDIO_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic sndio loading")
endif()
FindLibraryAndSONAME("sndio")
FindLibraryAndSONAME("sndio" LIBDIRS ${PKG_SNDIO_LIBRARY_DIRS})
if(SDL_SNDIO_SHARED AND SNDIO_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${SNDIO_LIB_SONAME}\"")
set(HAVE_SNDIO_SHARED TRUE)
@@ -341,7 +344,7 @@ macro(CheckFusionSound)
if(FUSIONSOUND_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic FusionSound loading")
endif()
FindLibraryAndSONAME("fusionsound")
FindLibraryAndSONAME("fusionsound" LIBDIRS ${PKG_FUSIONSOUND_LIBRARY_DIRS})
if(FUSIONSOUND_SHARED AND FUSIONSOUND_LIB AND HAVE_SDL_LOADSO)
set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${FUSIONSOUND_LIB_SONAME}\"")
set(HAVE_FUSIONSOUND_SHARED TRUE)
@@ -637,9 +640,11 @@ endmacro()
# - HAVE_SDL_LOADSO opt
macro(CheckWayland)
if(SDL_WAYLAND)
pkg_check_modules(WAYLAND "wayland-client>=1.18" wayland-egl wayland-cursor egl "xkbcommon>=0.5.0")
set(WAYLAND_FOUND FALSE)
pkg_check_modules(PKG_WAYLAND "wayland-client>=1.18" wayland-egl wayland-cursor egl "xkbcommon>=0.5.0")
if(WAYLAND_FOUND)
if(PKG_WAYLAND_FOUND)
set(WAYLAND_FOUND TRUE)
find_program(WAYLAND_SCANNER NAMES wayland-scanner REQUIRED)
execute_process(
COMMAND ${WAYLAND_SCANNER} --version
@@ -662,8 +667,8 @@ macro(CheckWayland)
endif()
if(WAYLAND_FOUND)
target_link_directories(sdl-build-options INTERFACE "${WAYLAND_LIBRARY_DIRS}")
target_include_directories(sdl-build-options INTERFACE "${WAYLAND_INCLUDE_DIRS}")
target_link_directories(sdl-build-options INTERFACE "${PKG_WAYLAND_LIBRARY_DIRS}")
target_include_directories(sdl-build-options INTERFACE "${PKG_WAYLAND_INCLUDE_DIRS}")
set(HAVE_WAYLAND TRUE)
set(HAVE_SDL_VIDEO TRUE)
@@ -689,10 +694,10 @@ macro(CheckWayland)
if(SDL_WAYLAND_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic Wayland loading")
endif()
FindLibraryAndSONAME(wayland-client)
FindLibraryAndSONAME(wayland-egl)
FindLibraryAndSONAME(wayland-cursor)
FindLibraryAndSONAME(xkbcommon)
FindLibraryAndSONAME(wayland-client LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
FindLibraryAndSONAME(wayland-egl LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
FindLibraryAndSONAME(wayland-cursor LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
FindLibraryAndSONAME(xkbcommon LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
if(SDL_WAYLAND_SHARED AND WAYLAND_CLIENT_LIB AND WAYLAND_EGL_LIB AND WAYLAND_CURSOR_LIB AND XKBCOMMON_LIB AND HAVE_SDL_LOADSO)
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC "\"${WAYLAND_CLIENT_LIB_SONAME}\"")
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL "\"${WAYLAND_EGL_LIB_SONAME}\"")
@@ -700,25 +705,25 @@ macro(CheckWayland)
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON "\"${XKBCOMMON_LIB_SONAME}\"")
set(HAVE_WAYLAND_SHARED TRUE)
else()
list(APPEND EXTRA_LIBS ${WAYLAND_LIBRARIES})
list(APPEND EXTRA_LIBS ${PKG_WAYLAND_LIBRARIES})
endif()
if(SDL_WAYLAND_LIBDECOR)
pkg_check_modules(LIBDECOR libdecor-0)
if(LIBDECOR_FOUND)
pkg_check_modules(PKG_LIBDECOR libdecor-0)
if(PKG_LIBDECOR_FOUND)
set(HAVE_WAYLAND_LIBDECOR TRUE)
set(HAVE_LIBDECOR_H 1)
target_link_directories(sdl-build-options INTERFACE "${LIBDECOR_LIBRARY_DIRS}")
target_include_directories(sdl-build-options INTERFACE "${LIBDECOR_INCLUDE_DIRS}")
target_link_directories(sdl-build-options INTERFACE "${PKG_LIBDECOR_LIBRARY_DIRS}")
target_include_directories(sdl-build-options INTERFACE "${PKG_LIBDECOR_INCLUDE_DIRS}")
if(SDL_WAYLAND_LIBDECOR_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic libdecor loading")
endif()
FindLibraryAndSONAME(decor-0)
FindLibraryAndSONAME(decor-0 LIBDIRS ${PKG_LIBDECOR_LIBRARY_DIRS})
if(SDL_WAYLAND_LIBDECOR_SHARED AND DECOR_0_LIB AND HAVE_SDL_LOADSO)
set(HAVE_LIBDECOR_SHARED TRUE)
set(HAVE_WAYLAND_LIBDECOR_SHARED TRUE)
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR "\"${DECOR_0_LIB_SONAME}\"")
else()
list(APPEND EXTRA_LIBS ${LIBDECOR_LIBRARIES})
list(APPEND EXTRA_LIBS ${PKG_LIBDECOR_LIBRARIES})
endif()
endif()
endif()
@@ -764,7 +769,7 @@ macro(CheckDirectFB)
if(SDL_DIRECTFB_SHARED AND NOT HAVE_SDL_LOADSO)
message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading")
endif()
FindLibraryAndSONAME("directfb")
FindLibraryAndSONAME("directfb" LIBDIRS ${PKG_DIRECTFB_LIBRARY_DIRS})
if(SDL_DIRECTFB_SHARED AND DIRECTFB_LIB AND HAVE_SDL_LOADSO)
set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${DIRECTFB_LIB_SONAME}\"")
set(HAVE_DIRECTFB_SHARED TRUE)
@@ -1170,19 +1175,19 @@ macro(CheckHIDAPI)
if(SDL_HIDAPI)
if(SDL_HIDAPI_LIBUSB)
set(HAVE_LIBUSB FALSE)
pkg_check_modules(LIBUSB libusb-1.0)
if(LIBUSB_FOUND)
check_include_file(libusb.h HAVE_LIBUSB_H ${LIBUSB_CFLAGS})
pkg_check_modules(PKG_LIBUSB libusb-1.0)
if(PKG_LIBUSB_FOUND)
check_include_file(libusb.h HAVE_LIBUSB_H ${PKG_LIBUSB_CFLAGS})
if(HAVE_LIBUSB_H)
set(HAVE_LIBUSB TRUE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PKG_LIBUSB_CFLAGS}")
if(HIDAPI_ONLY_LIBUSB)
list(APPEND EXTRA_LIBS ${LIBUSB_LIBRARIES})
list(APPEND EXTRA_LIBS ${PKG_LIBUSB_LIBRARIES})
elseif(OS2)
set(SDL_LIBUSB_DYNAMIC "\"usb100.dll\"")
else()
# libusb is loaded dynamically, so don't add it to EXTRA_LIBS
FindLibraryAndSONAME("usb-1.0")
FindLibraryAndSONAME("usb-1.0" LIBDIRS ${PKG_LIBUSB_LIBRARY_DIRS})
if(USB_1.0_LIB)
set(SDL_LIBUSB_DYNAMIC "\"${USB_1.0_LIB_SONAME}\"")
endif()
@@ -1192,6 +1197,7 @@ macro(CheckHIDAPI)
if(HIDAPI_ONLY_LIBUSB AND NOT HAVE_LIBUSB)
set(HAVE_HIDAPI FALSE)
endif()
set(HAVE_HIDAPI_LIBUSB ${HAVE_LIBUSB})
endif()
if(HAVE_HIDAPI)
@@ -1211,6 +1217,8 @@ macro(CheckHIDAPI)
file(GLOB HIDAPI_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/hidapi/*.c)
list(APPEND SOURCE_FILES ${HIDAPI_JOYSTICK_SOURCES})
endif()
else()
set(SDL_HIDAPI_DISABLED 1)
endif()
else()
set(SDL_HIDAPI_DISABLED 1)
@@ -1265,19 +1273,17 @@ endmacro()
# - HAVE_SDL_LOADSO opt
macro(CheckKMSDRM)
if(SDL_KMSDRM)
pkg_check_modules(KMSDRM libdrm gbm egl)
if(KMSDRM_FOUND AND HAVE_OPENGL_EGL)
link_directories(
${KMSDRM_LIBRARY_DIRS}
)
target_include_directories(sdl-build-options INTERFACE "${KMSDRM_INCLUDE_DIRS}")
pkg_check_modules(PKG_KMSDRM libdrm gbm egl)
if(PKG_KMSDRM_FOUND AND HAVE_OPENGL_EGL)
target_link_directories(sdl-build-options INTERFACE ${PKG_KMSDRM_LIBRARY_DIRS})
target_include_directories(sdl-build-options INTERFACE "${PKG_KMSDRM_INCLUDE_DIRS}")
set(HAVE_KMSDRM TRUE)
set(HAVE_SDL_VIDEO TRUE)
file(GLOB KMSDRM_SOURCES ${SDL2_SOURCE_DIR}/src/video/kmsdrm/*.c)
list(APPEND SOURCE_FILES ${KMSDRM_SOURCES})
list(APPEND EXTRA_CFLAGS ${KMSDRM_CFLAGS})
list(APPEND EXTRA_CFLAGS ${PKG_KMSDRM_CFLAGS})
set(SDL_VIDEO_DRIVER_KMSDRM 1)
@@ -1285,13 +1291,13 @@ macro(CheckKMSDRM)
message_warn("You must have SDL_LoadObject() support for dynamic KMS/DRM loading")
endif()
if(SDL_KMSDRM_SHARED AND HAVE_SDL_LOADSO)
FindLibraryAndSONAME(drm)
FindLibraryAndSONAME(gbm)
FindLibraryAndSONAME(drm LIBDIRS ${PKG_KMSDRM_LIBRARY_DIRS})
FindLibraryAndSONAME(gbm LIBDIRS ${PKG_KMSDRM_LIBRARY_DIRS})
set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC "\"${DRM_LIB_SONAME}\"")
set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM "\"${GBM_LIB_SONAME}\"")
set(HAVE_KMSDRM_SHARED TRUE)
else()
list(APPEND EXTRA_LIBS ${KMSDRM_LIBRARIES})
list(APPEND EXTRA_LIBS ${PKG_KMSDRM_LIBRARIES})
endif()
endif()
endif()

5
configure vendored
View File

@@ -3438,7 +3438,7 @@ orig_CFLAGS="$CFLAGS"
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=24
SDL_MICRO_VERSION=1
SDL_MICRO_VERSION=2
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
@@ -17952,7 +17952,8 @@ test -n "$SORT" || SORT="false"
if ! "$SORT" -V </dev/null >/dev/null
then :
as_fn_error $? "GNU sort(1) is required" "$LINENO" 5
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: sort(1) that supports the -V option is required to find dynamic libraries" >&5
printf "%s\n" "$as_me: WARNING: sort(1) that supports the -V option is required to find dynamic libraries" >&2;}
fi
# Check whether --enable-largefile was given.

View File

@@ -13,7 +13,7 @@ dnl Set various version strings - taken gratefully from the GTk sources
# See docs/release_checklist.md
SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=24
SDL_MICRO_VERSION=1
SDL_MICRO_VERSION=2
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
SDL_BINARY_AGE=`expr $SDL_MINOR_VERSION \* 100 + $SDL_MICRO_VERSION`
@@ -71,7 +71,7 @@ if [ test -z "$AWK" ]; then
fi
AC_CHECK_PROGS([SORT], [gsort sort], [false])
AS_IF([! "$SORT" -V </dev/null >/dev/null], [AC_MSG_ERROR([GNU sort(1) is required])])
AS_IF([! "$SORT" -V </dev/null >/dev/null], [AC_MSG_WARN([sort(1) that supports the -V option is required to find dynamic libraries])])
dnl 64-bit file offsets if possible unless --disable-largefile is specified
AC_SYS_LARGEFILE

View File

@@ -80,9 +80,9 @@
# include <ctype.h>
#endif
#ifdef HAVE_MATH_H
# if defined(__WINRT__)
# if defined(_MSC_VER)
/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
for more information.
*/
# define _USE_MATH_DEFINES

View File

@@ -59,7 +59,7 @@ typedef struct SDL_version
*/
#define SDL_MAJOR_VERSION 2
#define SDL_MINOR_VERSION 24
#define SDL_PATCHLEVEL 1
#define SDL_PATCHLEVEL 2
/**
* Macro to determine SDL version program was compiled against.

View File

@@ -5,7 +5,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(sdl2_config_path "${CMAKE_CURRENT_LIST_DIR}/../i686-w64-mingw32/lib/cmake/SDL2/sdl2-config-version.cmake")
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(sdl2_config_path "${CMAKE_CURRENT_LIST_DIR}/../x86_64-w64-mingw32/lib/cmake/SDL2/sdl2-config-version.cmake")
else("${CMAKE_SIZEOF_VOID_P}" STREQUAL "")
else()
set(PACKAGE_VERSION_UNSUITABLE TRUE)
return()
endif()

View File

@@ -5,7 +5,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(sdl2_config_path "${CMAKE_CURRENT_LIST_DIR}/../i686-w64-mingw32/lib/cmake/SDL2/sdl2-config.cmake")
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(sdl2_config_path "${CMAKE_CURRENT_LIST_DIR}/../x86_64-w64-mingw32/lib/cmake/SDL2/sdl2-config.cmake")
else("${CMAKE_SIZEOF_VOID_P}" STREQUAL "")
else()
set(SDL2_FOUND FALSE)
return()
endif()

View File

@@ -704,6 +704,11 @@ COREAUDIO_CloseDevice(_THIS)
/* if callback fires again, feed silence; don't call into the app. */
SDL_AtomicSet(&this->paused, 1);
/* dispose of the audio queue before waiting on the thread, or it might stall for a long time! */
if (this->hidden->audioQueue) {
AudioQueueDispose(this->hidden->audioQueue, 0);
}
if (this->hidden->thread) {
SDL_assert(SDL_AtomicGet(&this->shutdown) != 0); /* should have been set by SDL_audio.c */
SDL_WaitThread(this->hidden->thread, NULL);
@@ -733,10 +738,6 @@ COREAUDIO_CloseDevice(_THIS)
open_devices = NULL;
}
if (this->hidden->audioQueue) {
AudioQueueDispose(this->hidden->audioQueue, 1);
}
if (this->hidden->ready_semaphore) {
SDL_DestroySemaphore(this->hidden->ready_semaphore);
}

View File

@@ -947,7 +947,7 @@ SDL_SendEditingText(const char *text, int start, int length)
SDL_utf8strlcpy(event.edit.text, text, SDL_arraysize(event.edit.text));
if (SDL_GetHintBoolean(SDL_HINT_IME_SUPPORT_EXTENDED_TEXT, SDL_FALSE) &&
SDL_strlen(text) > SDL_arraysize(event.text.text)) {
SDL_strlen(text) >= SDL_arraysize(event.text.text)) {
event.editExt.type = SDL_TEXTEDITING_EXT;
event.editExt.windowID = keyboard->focus ? keyboard->focus->id : 0;
event.editExt.text = text ? SDL_strdup(text) : NULL;

View File

@@ -1078,13 +1078,8 @@ int SDL_hid_init(void)
if (libusb_ctx.libhandle != NULL) {
SDL_bool loaded = SDL_TRUE;
#ifdef SDL_LIBUSB_DYNAMIC
#ifdef __OS2__
#define LOAD_LIBUSB_SYMBOL(func) \
if (!(libusb_ctx.func = SDL_LoadFunction(libusb_ctx.libhandle,"_libusb_" #func))) {loaded = SDL_FALSE;}
#else
#define LOAD_LIBUSB_SYMBOL(func) \
if (!(libusb_ctx.func = SDL_LoadFunction(libusb_ctx.libhandle, "libusb_" #func))) {loaded = SDL_FALSE;}
#endif
#else
#define LOAD_LIBUSB_SYMBOL(func) \
libusb_ctx.func = libusb_##func;

View File

@@ -874,6 +874,11 @@ RAWINPUT_JoystickInit(void)
SDL_assert(!SDL_RAWINPUT_inited);
if (!WIN_IsWindowsVistaOrGreater()) {
/* According to bug 6400, this doesn't work on Windows XP */
return -1;
}
if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT, SDL_TRUE)) {
return -1;
}

View File

@@ -60,12 +60,12 @@ SDL_LoadFunction(void *handle, const char *name)
{
void *symbol = dlsym(handle, name);
if (symbol == NULL) {
/* append an underscore for platforms that need that. */
/* prepend an underscore for platforms that need that. */
SDL_bool isstack;
size_t len = 1 + SDL_strlen(name) + 1;
char *_name = SDL_small_alloc(char, len, &isstack);
size_t len = SDL_strlen(name) + 1;
char *_name = SDL_small_alloc(char, len + 1, &isstack);
_name[0] = '_';
SDL_strlcpy(&_name[1], name, len);
SDL_memcpy(&_name[1], name, len);
symbol = dlsym(handle, _name);
SDL_small_free(_name, isstack);
if (symbol == NULL) {

View File

@@ -47,11 +47,20 @@ SDL_LoadObject(const char *sofile)
pszModName = OS2_UTF8ToSys(sofile);
ulRC = DosLoadModule(acError, sizeof(acError), pszModName, &hModule);
SDL_free(pszModName);
if (ulRC != NO_ERROR) {
SDL_SetError("Failed loading %s (E%u)", acError, ulRC);
return NULL;
if (ulRC != NO_ERROR && !SDL_strrchr(pszModName, '\\') && !SDL_strrchr(pszModName, '/')) {
/* strip .dll extension and retry only if name has no path. */
size_t len = SDL_strlen(pszModName);
if (len > 4 && SDL_strcasecmp(&pszModName[len - 4], ".dll") == 0) {
pszModName[len - 4] = '\0';
ulRC = DosLoadModule(acError, sizeof(acError), pszModName, &hModule);
}
}
if (ulRC != NO_ERROR) {
SDL_SetError("Failed loading %s: %s (E%u)", sofile, acError, ulRC);
hModule = NULLHANDLE;
}
SDL_free(pszModName);
return (void *)hModule;
}
@@ -63,6 +72,16 @@ SDL_LoadFunction(void *handle, const char *name)
PFN pFN;
ulRC = DosQueryProcAddr((HMODULE)handle, 0, name, &pFN);
if (ulRC != NO_ERROR) {
/* retry with an underscore prepended, e.g. for gcc-built dlls. */
SDL_bool isstack;
size_t len = SDL_strlen(name) + 1;
char *_name = SDL_small_alloc(char, len + 1, &isstack);
_name[0] = '_';
SDL_memcpy(&_name[1], name, len);
ulRC = DosQueryProcAddr((HMODULE)handle, 0, _name, &pFN);
SDL_small_free(_name, isstack);
}
if (ulRC != NO_ERROR) {
SDL_SetError("Failed loading procedure %s (E%u)", name, ulRC);
return NULL;

View File

@@ -9,8 +9,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,24,1,0
PRODUCTVERSION 2,24,1,0
FILEVERSION 2,24,2,0
PRODUCTVERSION 2,24,2,0
FILEFLAGSMASK 0x3fL
FILEFLAGS 0x0L
FILEOS 0x40004L
@@ -23,12 +23,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "SDL\0"
VALUE "FileVersion", "2, 24, 1, 0\0"
VALUE "FileVersion", "2, 24, 2, 0\0"
VALUE "InternalName", "SDL\0"
VALUE "LegalCopyright", "Copyright (C) 2022 Sam Lantinga\0"
VALUE "OriginalFilename", "SDL2.dll\0"
VALUE "ProductName", "Simple DirectMedia Layer\0"
VALUE "ProductVersion", "2, 24, 1, 0\0"
VALUE "ProductVersion", "2, 24, 2, 0\0"
END
END
BLOCK "VarFileInfo"

View File

@@ -173,6 +173,7 @@ typedef struct
ID3D12CommandQueue *commandQueue;
ID3D12GraphicsCommandList2 *commandList;
DXGI_SWAP_EFFECT swapEffect;
UINT swapFlags;
/* Descriptor heaps */
ID3D12DescriptorHeap* rtvDescriptorHeap;
@@ -352,9 +353,11 @@ D3D12_ReleaseAll(SDL_Renderer * renderer)
for (i = 0; i < SDL_D3D12_NUM_VERTEX_BUFFERS; ++i) {
SAFE_RELEASE(data->vertexBuffers[i].resource);
data->vertexBuffers[i].size = 0;
}
data->swapEffect = (DXGI_SWAP_EFFECT) 0;
data->swapFlags = 0;
data->currentRenderTargetView.ptr = 0;
data->currentSampler.ptr = 0;
@@ -1232,6 +1235,7 @@ D3D12_CreateSwapChain(SDL_Renderer * renderer, int w, int h)
}
data->swapEffect = swapChainDesc.SwapEffect;
data->swapFlags = swapChainDesc.Flags;
done:
SAFE_RELEASE(swapChain);
@@ -1282,10 +1286,15 @@ D3D12_CreateWindowSizeDependentResources(SDL_Renderer * renderer)
D3D12_RENDER_TARGET_VIEW_DESC rtvDesc;
D3D12_CPU_DESCRIPTOR_HANDLE rtvDescriptor;
/* Release resources in the current command list */
D3D12_IssueBatch(data);
D3D_CALL(data->commandList, OMSetRenderTargets, 0, NULL, FALSE, NULL);
/* Release render targets */
for (i = 0; i < SDL_D3D12_NUM_BUFFERS; ++i) {
SAFE_RELEASE(data->renderTargets[i]);
}
/* The width and height of the swap chain must be based on the display's
* non-rotated size.
*/
@@ -1304,7 +1313,7 @@ D3D12_CreateWindowSizeDependentResources(SDL_Renderer * renderer)
0,
w, h,
DXGI_FORMAT_UNKNOWN,
0
data->swapFlags
);
if (result == DXGI_ERROR_DEVICE_REMOVED) {
/* If the device was removed for any reason, a new device and swap chain will need to be created. */

View File

@@ -40,7 +40,9 @@ SDL_CreateMutex(void)
SDL_mutex *mutex;
/* Allocate mutex memory */
mutex = (SDL_mutex *) SDL_malloc(sizeof(*mutex));
mutex = (SDL_mutex *) SDL_calloc(1, sizeof(*mutex));
#if !SDL_THREADS_DISABLED
if (mutex) {
/* Create the mutex semaphore, with initial value 1 */
mutex->sem = SDL_CreateSemaphore(1);
@@ -53,6 +55,8 @@ SDL_CreateMutex(void)
} else {
SDL_OutOfMemory();
}
#endif /* !SDL_THREADS_DISABLED */
return mutex;
}

View File

@@ -145,8 +145,9 @@ Wayland_HasScreenKeyboardSupport(_THIS)
* input protocol, make sure we don't have any physical keyboards either.
*/
SDL_VideoData *driverdata = _this->driverdata;
return (driverdata->input->keyboard == NULL &&
driverdata->text_input_manager != NULL);
SDL_bool haskeyboard = (driverdata->input != NULL) && (driverdata->input->keyboard != NULL);
SDL_bool hastextmanager = (driverdata->text_input_manager != NULL);
return (!haskeyboard && hastextmanager);
}
#endif /* SDL_VIDEO_DRIVER_WAYLAND */

View File

@@ -445,6 +445,7 @@ WIN_UpdateFocus(SDL_Window *window, SDL_bool expect_focus)
SDL_ToggleModState(KMOD_NUM, (GetKeyState(VK_NUMLOCK) & 0x0001) != 0);
SDL_ToggleModState(KMOD_SCROLL, (GetKeyState(VK_SCROLL) & 0x0001) != 0);
WIN_UpdateWindowICCProfile(data->window, SDL_TRUE);
} else {
RECT rect;
@@ -693,7 +694,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
actually being the foreground window, but this appears to get called in all cases where
the global foreground window changes to and from this window. */
WIN_UpdateFocus(data->window, !!wParam);
WIN_UpdateWindowICCProfile(data->window, SDL_TRUE);
}
break;
@@ -1163,6 +1163,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
RECT rect;
int x, y;
int w, h;
int display_index = data->window->display_index;
if (data->initializing || data->in_border_change) {
break;
@@ -1203,7 +1204,10 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
/* Forces a WM_PAINT event */
InvalidateRect(hwnd, NULL, FALSE);
WIN_UpdateWindowICCProfile(data->window, SDL_TRUE);
if (data->window->display_index != display_index) {
/* Display changed, check ICC profile */
WIN_UpdateWindowICCProfile(data->window, SDL_TRUE);
}
}
break;

View File

@@ -1408,10 +1408,16 @@ WIN_SetWindowOpacity(_THIS, SDL_Window * window, float opacity)
void
WIN_GetDrawableSize(const SDL_Window *window, int *w, int *h)
{
const SDL_WindowData *data = ((SDL_WindowData *)window->driverdata);
HWND hwnd = data->hwnd;
HWND hwnd;
RECT rect;
if (!window || !(window->driverdata)) {
*w = 0;
*h = 0;
return;
}
hwnd = ((SDL_WindowData *)window->driverdata)->hwnd;
if (GetClientRect(hwnd, &rect)) {
*w = rect.right;
*h = rect.bottom;

View File

@@ -1,6 +1,6 @@
/*
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 2020 Collabora Ltd.
Copyright (C) 2020-2022 Collabora Ltd.
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -935,12 +935,22 @@ static const GuessTest guess_tests[] =
}
};
#if ULONG_MAX == 0xFFFFFFFFUL
# define SwapLongLE(X) SDL_SwapLE32(X)
#else
/* assume 64-bit */
# define SwapLongLE(X) SDL_SwapLE64(X)
#endif
/* The Linux kernel provides capability info in EVIOCGBIT and in /sys
* as an array of unsigned long in native byte order, rather than an array
* of bytes, an array of native-endian 32-bit words or an array of
* native-endian 64-bit words like you might have reasonably expected.
* The order of words in the array is always lowest-valued first: for
* instance, the first unsigned long in abs[] contains the bit representing
* absolute axis 0 (ABS_X).
*
* The constant arrays above provide test data in little-endian, because
* that's the easiest representation for hard-coding into a test like this.
* On a big-endian platform we need to byteswap it, one unsigned long at a
* time, to match what the kernel would produce. This requires us to choose
* an appropriate byteswapping function for the architecture's word size. */
SDL_COMPILE_TIME_ASSERT(sizeof_long, sizeof(unsigned long) == 4 || sizeof(unsigned long) == 8);
#define SwapLongLE(X) \
((sizeof(unsigned long) == 4) ? SDL_SwapLE32(X) : SDL_SwapLE64(X))
static int
run_test(void)

View File

@@ -106,7 +106,7 @@ main(int argc, char **argv)
SDL_ClearError();
/* Create effects. */
SDL_memset(&efx, 0, sizeof(efx));
SDL_memset(efx, 0, sizeof(efx));
nefx = 0;
supported = SDL_HapticQuery(haptic);