early-access version 1988

This commit is contained in:
pineappleEA 2021-08-12 01:07:27 +02:00
parent e37f82ce96
commit 24ddfcbb39
265 changed files with 68343 additions and 5348 deletions

View File

@ -376,7 +376,7 @@ if (ENABLE_SDL2)
if (YUZU_USE_BUNDLED_SDL2) if (YUZU_USE_BUNDLED_SDL2)
# Detect toolchain and platform # Detect toolchain and platform
if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1930) AND ARCHITECTURE_x86_64) if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1930) AND ARCHITECTURE_x86_64)
set(SDL2_VER "SDL2-2.0.15-prerelease") set(SDL2_VER "SDL2-2.0.16")
else() else()
message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable YUZU_USE_BUNDLED_SDL2 and provide your own.") message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable YUZU_USE_BUNDLED_SDL2 and provide your own.")
endif() endif()
@ -396,7 +396,7 @@ if (ENABLE_SDL2)
elseif (YUZU_USE_EXTERNAL_SDL2) elseif (YUZU_USE_EXTERNAL_SDL2)
message(STATUS "Using SDL2 from externals.") message(STATUS "Using SDL2 from externals.")
else() else()
find_package(SDL2 2.0.15 REQUIRED) find_package(SDL2 2.0.16 REQUIRED)
# Some installations don't set SDL2_LIBRARIES # Some installations don't set SDL2_LIBRARIES
if("${SDL2_LIBRARIES}" STREQUAL "") if("${SDL2_LIBRARIES}" STREQUAL "")
@ -518,6 +518,10 @@ set(FFmpeg_COMPONENTS
avutil avutil
swscale) swscale)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
Include(FindPkgConfig REQUIRED)
pkg_check_modules(LIBVA libva)
endif()
if (NOT YUZU_USE_BUNDLED_FFMPEG) if (NOT YUZU_USE_BUNDLED_FFMPEG)
# Use system installed FFmpeg # Use system installed FFmpeg
find_package(FFmpeg QUIET COMPONENTS ${FFmpeg_COMPONENTS}) find_package(FFmpeg QUIET COMPONENTS ${FFmpeg_COMPONENTS})
@ -540,6 +544,9 @@ endif()
if (YUZU_USE_BUNDLED_FFMPEG) if (YUZU_USE_BUNDLED_FFMPEG)
if (NOT WIN32) if (NOT WIN32)
# TODO(lat9nq): Move this to externals/ffmpeg/CMakeLists.txt (and move externals/ffmpeg to
# externals/ffmpeg/ffmpeg)
# Build FFmpeg from externals # Build FFmpeg from externals
message(STATUS "Using FFmpeg from externals") message(STATUS "Using FFmpeg from externals")
@ -579,20 +586,23 @@ if (YUZU_USE_BUNDLED_FFMPEG)
CACHE PATH "Paths to FFmpeg libraries" FORCE) CACHE PATH "Paths to FFmpeg libraries" FORCE)
endforeach() endforeach()
set(FFmpeg_INCLUDE_DIR
"${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR}"
CACHE PATH "Path to FFmpeg headers" FORCE)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
Include(FindPkgConfig REQUIRED) Include(FindPkgConfig REQUIRED)
pkg_check_modules(LIBVA libva) pkg_check_modules(LIBVA libva)
endif() pkg_check_modules(CUDA cuda)
pkg_check_modules(FFNVCODEC ffnvcodec)
pkg_check_modules(VDPAU vdpau)
set(FFmpeg_HWACCEL_LIBRARIES)
set(FFmpeg_HWACCEL_FLAGS)
set(FFmpeg_HWACCEL_INCLUDE_DIRS)
set(FFmpeg_HWACCEL_LDFLAGS)
if(LIBVA_FOUND) if(LIBVA_FOUND)
pkg_check_modules(LIBDRM libdrm REQUIRED) pkg_check_modules(LIBDRM libdrm REQUIRED)
find_package(X11 REQUIRED) find_package(X11 REQUIRED)
pkg_check_modules(LIBVA-DRM libva-drm REQUIRED) pkg_check_modules(LIBVA-DRM libva-drm REQUIRED)
pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED) pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED)
set(FFmpeg_LIBVA_LIBRARIES list(APPEND FFmpeg_HWACCEL_LIBRARIES
${LIBDRM_LIBRARIES} ${LIBDRM_LIBRARIES}
${X11_LIBRARIES} ${X11_LIBRARIES}
${LIBVA-DRM_LIBRARIES} ${LIBVA-DRM_LIBRARIES}
@ -602,11 +612,57 @@ if (YUZU_USE_BUNDLED_FFMPEG)
--enable-hwaccel=h264_vaapi --enable-hwaccel=h264_vaapi
--enable-hwaccel=vp9_vaapi --enable-hwaccel=vp9_vaapi
--enable-libdrm) --enable-libdrm)
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
${LIBDRM_INCLUDE_DIRS}
${X11_INCLUDE_DIRS}
${LIBVA-DRM_INCLUDE_DIRS}
${LIBVA-X11_INCLUDE_DIRS}
${LIBVA_INCLUDE_DIRS}
)
message(STATUS "VA-API found") message(STATUS "VA-API found")
else() else()
set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) set(FFmpeg_HWACCEL_FLAGS --disable-vaapi)
endif() endif()
if (FFNVCODEC_FOUND AND CUDA_FOUND)
list(APPEND FFmpeg_HWACCEL_FLAGS
--enable-cuvid
--enable-ffnvcodec
--enable-nvdec
--enable-cuda-llvm
--enable-hwaccel=h264_nvdec
--enable-hwaccel=vp9_nvdec
--extra-cflags=-I${CUDA_INCLUDE_DIRS}
)
list(APPEND FFmpeg_HWACCEL_LIBRARIES
${FFNVCODEC_LIBRARIES}
${CUDA_LIBRARIES}
)
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
${FFNVCODEC_INCLUDE_DIRS}
${CUDA_INCLUDE_DIRS}
)
list(APPEND FFmpeg_HWACCEL_LDFLAGS
${FFNVCODEC_LDFLAGS}
${CUDA_LDFLAGS}
)
message(STATUS "ffnvcodec libraries version ${FFNVCODEC_VERSION} found")
endif()
if (VDPAU_FOUND)
list(APPEND FFmpeg_HWACCEL_FLAGS
--enable-vdpau
--enable-hwaccel=h264_vdpau
--enable-hwaccel=vp9_vdpau
)
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES})
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS})
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS})
message(STATUS "vdpau libraries version ${VDPAU_VERSION} found")
else()
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau)
endif()
# `configure` parameters builds only exactly what yuzu needs from FFmpeg # `configure` parameters builds only exactly what yuzu needs from FFmpeg
# `--disable-vdpau` is needed to avoid linking issues # `--disable-vdpau` is needed to avoid linking issues
add_custom_command( add_custom_command(
@ -624,7 +680,6 @@ if (YUZU_USE_BUNDLED_FFMPEG)
--disable-network --disable-network
--disable-postproc --disable-postproc
--disable-swresample --disable-swresample
--disable-vdpau
--enable-decoder=h264 --enable-decoder=h264
--enable-decoder=vp9 --enable-decoder=vp9
--cc="${CMAKE_C_COMPILER}" --cc="${CMAKE_C_COMPILER}"
@ -653,15 +708,26 @@ if (YUZU_USE_BUNDLED_FFMPEG)
${FFmpeg_BUILD_DIR} ${FFmpeg_BUILD_DIR}
) )
set(FFmpeg_INCLUDE_DIR
"${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR};${FFmpeg_HWACCEL_INCLUDE_DIRS}"
CACHE PATH "Path to FFmpeg headers" FORCE)
set(FFmpeg_LDFLAGS
"${FFmpeg_HWACCEL_LDFLAGS}"
CACHE STRING "FFmpeg linker flags" FORCE)
# ALL makes this custom target build every time # ALL makes this custom target build every time
# but it won't actually build if the DEPENDS parameter is up to date # but it won't actually build if the DEPENDS parameter is up to date
add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE}) add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE})
add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure) add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure)
link_libraries(${FFmpeg_LIBVA_LIBRARIES}) link_libraries(${FFmpeg_LIBVA_LIBRARIES})
set(FFmpeg_LIBRARIES ${FFmpeg_LIBVA_LIBRARIES} ${FFmpeg_BUILD_LIBRARIES} set(FFmpeg_LIBRARIES ${FFmpeg_BUILD_LIBRARIES} ${FFmpeg_HWACCEL_LIBRARIES}
CACHE PATH "Paths to FFmpeg libraries" FORCE) CACHE PATH "Paths to FFmpeg libraries" FORCE)
unset(FFmpeg_BUILD_LIBRARIES) unset(FFmpeg_BUILD_LIBRARIES)
unset(FFmpeg_LIBVA_LIBRARIES) unset(FFmpeg_HWACCEL_FLAGS)
unset(FFmpeg_HWACCEL_INCLUDE_DIRS)
unset(FFmpeg_HWACCEL_LDFLAGS)
unset(FFmpeg_HWACCEL_LIBRARIES)
if (FFmpeg_FOUND) if (FFmpeg_FOUND)
message(STATUS "Found FFmpeg version ${FFmpeg_VERSION}") message(STATUS "Found FFmpeg version ${FFmpeg_VERSION}")
@ -670,12 +736,13 @@ if (YUZU_USE_BUNDLED_FFMPEG)
endif() endif()
else() # WIN32 else() # WIN32
# Use yuzu FFmpeg binaries # Use yuzu FFmpeg binaries
set(FFmpeg_EXT_NAME "ffmpeg-4.3.1") set(FFmpeg_EXT_NAME "ffmpeg-4.4")
set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}")
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "")
set(FFmpeg_FOUND YES) set(FFmpeg_FOUND YES)
set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE)
set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE) set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE)
set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE)
set(FFmpeg_DLL_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg dll's" FORCE) set(FFmpeg_DLL_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg dll's" FORCE)
set(FFmpeg_LIBRARIES set(FFmpeg_LIBRARIES
${FFmpeg_LIBRARY_DIR}/swscale.lib ${FFmpeg_LIBRARY_DIR}/swscale.lib

View File

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 1986. This is the source code for early-access 1988.
## Legal Notice ## Legal Notice

14
externals/SDL/.github/workflows/android.yml vendored Executable file
View File

@ -0,0 +1,14 @@
name: Build (Android)
on: [push, pull_request]
jobs:
android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: nttld/setup-ndk@v1
with:
ndk-version: r21e
- name: Build
run: ./build-scripts/androidbuildlibs.sh

View File

@ -9,7 +9,9 @@ jobs:
strategy: strategy:
matrix: matrix:
platform: platform:
- { name: Windows, os: windows-latest } - { name: Windows (x64), os: windows-latest, flags: -A x64 }
- { name: Windows (x86), os: windows-latest, flags: -A Win32 }
- { name: Windows (ARM64), os: windows-latest, flags: -A ARM64 }
- { name: Linux, os: ubuntu-20.04, flags: -GNinja } - { name: Linux, os: ubuntu-20.04, flags: -GNinja }
- { name: MacOS, os: macos-latest } - { name: MacOS, os: macos-latest }
steps: steps:
@ -48,7 +50,14 @@ jobs:
libxxf86vm-dev \ libxxf86vm-dev \
libdrm-dev \ libdrm-dev \
libgbm-dev\ libgbm-dev\
libpulse-dev libpulse-dev \
libpango1.0-dev
sudo apt install meson
git clone --depth 1 https://gitlab.gnome.org/jadahl/libdecor.git --branch 0.1.0
cd libdecor
meson build --buildtype release -Ddemo=false -Ddbus=disabled
ninja -C build
sudo meson install -C build
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Configure CMake - name: Configure CMake
run: cmake -B build ${{ matrix.platform.flags }} run: cmake -B build ${{ matrix.platform.flags }}

View File

@ -68,18 +68,24 @@ Release
*.ncb *.ncb
*.suo *.suo
*.sdf *.sdf
VisualC/tests/controllermap/axis.bmp
VisualC/tests/controllermap/button.bmp
VisualC/tests/controllermap/controllermap.bmp
VisualC/tests/controllermap/controllermap_back.bmp
VisualC/tests/loopwave/sample.wav VisualC/tests/loopwave/sample.wav
VisualC/tests/testautomation/CompareSurfaces0001_Reference.bmp VisualC/tests/testautomation/CompareSurfaces0001_Reference.bmp
VisualC/tests/testautomation/CompareSurfaces0001_TestOutput.bmp VisualC/tests/testautomation/CompareSurfaces0001_TestOutput.bmp
VisualC/tests/testgamecontroller/axis.bmp VisualC/tests/testgamecontroller/axis.bmp
VisualC/tests/testgamecontroller/button.bmp VisualC/tests/testgamecontroller/button.bmp
VisualC/tests/testgamecontroller/controllermap.bmp VisualC/tests/testgamecontroller/controllermap.bmp
VisualC/tests/testgamecontroller/controllermap_back.bmp
VisualC/tests/testoverlay2/moose.dat VisualC/tests/testoverlay2/moose.dat
VisualC/tests/testrendertarget/icon.bmp VisualC/tests/testrendertarget/icon.bmp
VisualC/tests/testrendertarget/sample.bmp VisualC/tests/testrendertarget/sample.bmp
VisualC/tests/testscale/icon.bmp VisualC/tests/testscale/icon.bmp
VisualC/tests/testscale/sample.bmp VisualC/tests/testscale/sample.bmp
VisualC/tests/testsprite2/icon.bmp VisualC/tests/testsprite2/icon.bmp
VisualC/tests/testyuv/testyuv.bmp
VisualC/visualtest/icon.bmp VisualC/visualtest/icon.bmp
VisualC/visualtest/testquit.actions VisualC/visualtest/testquit.actions
VisualC/visualtest/testquit.config VisualC/visualtest/testquit.config
@ -94,6 +100,7 @@ VisualC/visualtest/testsprite2_sample.parameters
android-project/local.properties android-project/local.properties
test/checkkeys test/checkkeys
test/checkkeysthreads
test/controllermap test/controllermap
test/loopwave test/loopwave
test/loopwavequeue test/loopwavequeue

View File

@ -1,5 +1,5 @@
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the SDL source code and call cmake from there") message(FATAL_ERROR "Prevented in-tree build. Please create a build directory outside of the SDL source code and run \"cmake -S ${CMAKE_SOURCE_DIR} -B .\" from there")
endif() endif()
cmake_minimum_required(VERSION 3.0.0) cmake_minimum_required(VERSION 3.0.0)
@ -10,6 +10,10 @@ if(WINDOWS_STORE)
add_definitions(-DSDL_BUILDING_WINRT=1 -ZW) add_definitions(-DSDL_BUILDING_WINRT=1 -ZW)
endif() endif()
if (HAIKU)
set(LINKER_LANGUAGE CXX)
endif()
# !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property # !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property
# !!! FIXME: for the SDL2 shared library (so you get an # !!! FIXME: for the SDL2 shared library (so you get an
# !!! FIXME: install_name ("soname") of "@rpath/libSDL-whatever.dylib" # !!! FIXME: install_name ("soname") of "@rpath/libSDL-whatever.dylib"
@ -47,12 +51,12 @@ include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake)
# set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0. # set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0.
set(SDL_MAJOR_VERSION 2) set(SDL_MAJOR_VERSION 2)
set(SDL_MINOR_VERSION 0) set(SDL_MINOR_VERSION 0)
set(SDL_MICRO_VERSION 15) set(SDL_MICRO_VERSION 16)
set(SDL_INTERFACE_AGE 1) set(SDL_INTERFACE_AGE 0)
set(SDL_BINARY_AGE 15) set(SDL_BINARY_AGE 16)
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}") set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
# the following should match the versions in Xcode project file: # the following should match the versions in Xcode project file:
set(DYLIB_CURRENT_VERSION 15.1.0) set(DYLIB_CURRENT_VERSION 17.0.0)
set(DYLIB_COMPATIBILITY_VERSION 1.0.0) set(DYLIB_COMPATIBILITY_VERSION 1.0.0)
# Set defaults preventing destination file conflicts # Set defaults preventing destination file conflicts
@ -204,7 +208,7 @@ if(APPLE OR ARCH_64)
set(OPT_DEF_SSEMATH ON) set(OPT_DEF_SSEMATH ON)
endif() endif()
endif() endif()
if(UNIX OR MINGW OR MSYS OR USE_CLANG OR VITA) if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA)
set(OPT_DEF_LIBC ON) set(OPT_DEF_LIBC ON)
endif() endif()
@ -388,6 +392,8 @@ set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" O
set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS}) set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS})
set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS}) set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS})
dep_option(WAYLAND_SHARED "Dynamically load Wayland support" ON "VIDEO_WAYLAND" OFF) dep_option(WAYLAND_SHARED "Dynamically load Wayland support" ON "VIDEO_WAYLAND" OFF)
dep_option(WAYLAND_LIBDECOR "Use client-side window decorations on Wayland" ON "VIDEO_WAYLAND" ON)
dep_option(LIBDECOR_SHARED "Dynamically load libdecor support" ON "WAYLAND_LIBDECOR" OFF)
dep_option(VIDEO_WAYLAND_QT_TOUCH "QtWayland server support for Wayland video driver" ON "VIDEO_WAYLAND" OFF) dep_option(VIDEO_WAYLAND_QT_TOUCH "QtWayland server support for Wayland video driver" ON "VIDEO_WAYLAND" OFF)
set_option(VIDEO_RPI "Use Raspberry Pi video driver" ${UNIX_SYS}) set_option(VIDEO_RPI "Use Raspberry Pi video driver" ${UNIX_SYS})
dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF) dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF)
@ -420,6 +426,10 @@ set(SDL_STATIC ${SDL_STATIC_ENABLED_BY_DEFAULT} CACHE BOOL "Build a static versi
dep_option(SDL_STATIC_PIC "Static version of the library should be built with Position Independent Code" OFF "SDL_STATIC" OFF) dep_option(SDL_STATIC_PIC "Static version of the library should be built with Position Independent Code" OFF "SDL_STATIC" OFF)
set_option(SDL_TEST "Build the test directory" OFF) set_option(SDL_TEST "Build the test directory" OFF)
if(VITA)
set_option(VIDEO_VITA_PIB "Build with PSVita piglet gles2 support" OFF)
endif()
# General source files # General source files
file(GLOB SOURCE_FILES file(GLOB SOURCE_FILES
${SDL2_SOURCE_DIR}/src/*.c ${SDL2_SOURCE_DIR}/src/*.c
@ -769,6 +779,7 @@ if(ASSEMBLY)
set(HAVE_SSE TRUE) set(HAVE_SSE TRUE)
set(HAVE_SSE2 TRUE) set(HAVE_SSE2 TRUE)
set(HAVE_SSE3 TRUE) set(HAVE_SSE3 TRUE)
check_include_file("immintrin.h" HAVE_IMMINTRIN_H)
set(SDL_ASSEMBLY_ROUTINES 1) set(SDL_ASSEMBLY_ROUTINES 1)
endif() endif()
endif() endif()
@ -1166,7 +1177,7 @@ elseif(EMSCRIPTEN)
CheckPTHREAD() CheckPTHREAD()
elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS) elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS AND NOT HAIKU)
if(SDL_AUDIO) if(SDL_AUDIO)
if(SYSV5 OR SOLARIS OR HPUX) if(SYSV5 OR SOLARIS OR HPUX)
set(SDL_AUDIO_DRIVER_SUNAUDIO 1) set(SDL_AUDIO_DRIVER_SUNAUDIO 1)
@ -1680,6 +1691,9 @@ elseif(WINDOWS)
if(HAVE_HIDAPI) if(HAVE_HIDAPI)
set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/hidapi/windows/hid.c) set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/hidapi/windows/hid.c)
endif() endif()
if(NOT WINDOWS_STORE)
set(SDL_JOYSTICK_RAWINPUT 1)
endif()
file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/windows/*.c) file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/windows/*.c)
set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES})
if(HAVE_DINPUT_H) if(HAVE_DINPUT_H)
@ -1899,7 +1913,7 @@ elseif(APPLE)
#import <Metal/Metal.h> #import <Metal/Metal.h>
#import <QuartzCore/CAMetalLayer.h> #import <QuartzCore/CAMetalLayer.h>
#if TARGET_OS_SIMULATOR || (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64) #if (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64)
#error Metal doesn't work on this configuration #error Metal doesn't work on this configuration
#endif #endif
int main() int main()
@ -2018,30 +2032,46 @@ elseif(APPLE)
CheckPTHREAD() CheckPTHREAD()
elseif(HAIKU) elseif(HAIKU)
if(SDL_AUDIO)
set(SDL_AUDIO_DRIVER_HAIKU 1)
file(GLOB HAIKU_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_AUDIO_SOURCES})
set(HAVE_SDL_AUDIO TRUE)
endif()
if(SDL_JOYSTICK)
set(SDL_JOYSTICK_HAIKU 1)
file(GLOB HAIKU_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_JOYSTICK_SOURCES})
set(HAVE_SDL_JOYSTICK TRUE)
endif()
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/haiku/*.cc) file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${MISC_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${MISC_SOURCES})
set(HAVE_SDL_MISC TRUE) set(HAVE_SDL_MISC TRUE)
if(SDL_VIDEO) if(SDL_VIDEO)
set(SDL_VIDEO_DRIVER_HAIKU 1) set(SDL_VIDEO_DRIVER_HAIKU 1)
file(GLOB HAIKUVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/haiku/*.c) file(GLOB HAIKUVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKUVIDEO_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${HAIKUVIDEO_SOURCES})
set(HAVE_SDL_VIDEO TRUE) set(HAVE_SDL_VIDEO TRUE)
if(VIDEO_OPENGL) if(VIDEO_OPENGL)
# TODO: Use FIND_PACKAGE(OpenGL) instead # TODO: Use FIND_PACKAGE(OpenGL) instead
set(SDL_VIDEO_OPENGL 1) set(SDL_VIDEO_OPENGL 1)
set(SDL_VIDEO_OPENGL_BGL 1) set(SDL_VIDEO_OPENGL_HAIKU 1)
set(SDL_VIDEO_RENDER_OGL 1) set(SDL_VIDEO_RENDER_OGL 1)
list(APPEND EXTRA_LIBS GL) list(APPEND EXTRA_LIBS GL)
set(HAVE_VIDEO_OPENGL TRUE) set(HAVE_VIDEO_OPENGL TRUE)
endif() endif()
endif() endif()
if(SDL_FILESYSTEM)
set(SDL_FILESYSTEM_HAIKU 1) set(SDL_FILESYSTEM_HAIKU 1)
file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/haiku/*.cc) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES})
set(HAVE_SDL_FILESYSTEM TRUE) set(HAVE_SDL_FILESYSTEM TRUE)
endif()
if(SDL_TIMERS) if(SDL_TIMERS)
set(SDL_TIMER_HAIKU 1) set(SDL_TIMER_HAIKU 1)
@ -2050,13 +2080,24 @@ elseif(HAIKU)
set(HAVE_SDL_TIMERS TRUE) set(HAVE_SDL_TIMERS TRUE)
endif() endif()
if(SDL_POWER)
set(SDL_POWER_HAIKU 1)
file(GLOB HAIKU_POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/haiku/*.c)
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_POWER_SOURCES})
set(HAVE_SDL_POWER TRUE)
endif()
if(SDL_LOCALE) if(SDL_LOCALE)
file(GLOB LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/haiku/*.cc) file(GLOB LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${LOCALE_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${LOCALE_SOURCES})
set(HAVE_SDL_LOCALE TRUE) set(HAVE_SDL_LOCALE TRUE)
endif() endif()
file(GLOB MAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/haiku/*.cc)
set(SOURCE_FILES ${SOURCE_FILES} ${MAIN_SOURCES})
CheckPTHREAD() CheckPTHREAD()
list(APPEND EXTRA_LIBS root be media game device textencoding)
elseif(RISCOS) elseif(RISCOS)
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/riscos/*.c) file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/riscos/*.c)
@ -2142,16 +2183,22 @@ elseif(VITA)
set(SOURCE_FILES ${SOURCE_FILES} ${VITA_VIDEO_SOURCES}) set(SOURCE_FILES ${SOURCE_FILES} ${VITA_VIDEO_SOURCES})
set(HAVE_SDL_VIDEO TRUE) set(HAVE_SDL_VIDEO TRUE)
check_include_file(pib.h HAVE_PIGS_IN_BLANKET_H)
if(VIDEO_VITA_PIB)
check_include_file(pib.h HAVE_PIGS_IN_BLANKET_H)
if(HAVE_PIGS_IN_BLANKET_H) if(HAVE_PIGS_IN_BLANKET_H)
set(SDL_VIDEO_OPENGL_ES2 1) set(SDL_VIDEO_OPENGL_ES2 1)
list(APPEND EXTRA_LIBS list(APPEND EXTRA_LIBS
pib pib
) )
set(HAVE_VIDEO_VITA_PIB ON)
set(SDL_VIDEO_VITA_PIB 1)
else()
set(HAVE_VIDEO_VITA_PIB OFF)
endif() endif()
endif()
set(SDL_VIDEO_RENDER_VITA_GXM 1) set(SDL_VIDEO_RENDER_VITA_GXM 1)
list(APPEND EXTRA_LIBS list(APPEND EXTRA_LIBS
@ -2168,8 +2215,18 @@ elseif(VITA)
SceTouch_stub SceTouch_stub
SceHid_stub SceHid_stub
SceMotion_stub SceMotion_stub
ScePower_stub
m m
) )
if(HAVE_VIDEO_VITA_PIB)
list(PREPEND EXTRA_LIBS
pib
libScePiglet_stub
SceShaccCg_stub
taihen_stub
)
endif()
endif() endif()
set(HAVE_ARMSIMD TRUE) set(HAVE_ARMSIMD TRUE)
@ -2291,14 +2348,14 @@ if(NOT CMAKE_HOST_WIN32)
execute_process(COMMAND sh ${SDL2_SOURCE_DIR}/build-scripts/updaterev.sh execute_process(COMMAND sh ${SDL2_SOURCE_DIR}/build-scripts/updaterev.sh
WORKING_DIRECTORY ${SDL2_BINARY_DIR}) WORKING_DIRECTORY ${SDL2_BINARY_DIR})
endif() endif()
if(NOT WINDOWS OR CYGWIN) if(NOT WINDOWS OR CYGWIN OR MINGW)
set(prefix ${CMAKE_INSTALL_PREFIX}) set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}") set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}") set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
set(bindir "\${exec_prefix}/bin") set(bindir "${CMAKE_INSTALL_FULL_BINDIR}")
set(includedir "\${prefix}/include") set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
if(SDL_STATIC) if(SDL_STATIC)
set(ENABLE_STATIC_TRUE "") set(ENABLE_STATIC_TRUE "")
set(ENABLE_STATIC_FALSE "#") set(ENABLE_STATIC_FALSE "#")
@ -2488,7 +2545,7 @@ if(NOT WINDOWS_STORE)
add_library(SDL2main STATIC ${SDLMAIN_SOURCES}) add_library(SDL2main STATIC ${SDLMAIN_SOURCES})
# alias target for in-tree builds # alias target for in-tree builds
add_library(SDL2::SDL2main ALIAS SDL2main) add_library(SDL2::SDL2main ALIAS SDL2main)
target_include_directories(SDL2main PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include/SDL2>) target_include_directories(SDL2main PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
set(_INSTALL_LIBS "SDL2main") set(_INSTALL_LIBS "SDL2main")
if (NOT ANDROID) if (NOT ANDROID)
set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}") set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}")
@ -2510,7 +2567,7 @@ if(SDL_SHARED)
elseif(UNIX AND NOT ANDROID) elseif(UNIX AND NOT ANDROID)
set_target_properties(SDL2 PROPERTIES set_target_properties(SDL2 PROPERTIES
VERSION ${LT_VERSION} VERSION ${LT_VERSION}
SOVERSION ${LT_REVISION} SOVERSION ${LT_MAJOR}
OUTPUT_NAME "SDL2-${LT_RELEASE}") OUTPUT_NAME "SDL2-${LT_RELEASE}")
else() else()
if(WINDOWS OR CYGWIN) if(WINDOWS OR CYGWIN)
@ -2532,7 +2589,7 @@ if(SDL_SHARED)
endif() endif()
set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS}) set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS})
target_link_libraries(SDL2 PRIVATE ${EXTRA_LIBS} ${EXTRA_LDFLAGS}) target_link_libraries(SDL2 PRIVATE ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
target_include_directories(SDL2 PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include/SDL2>) target_include_directories(SDL2 PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
if(ANDROID) if(ANDROID)
target_include_directories(SDL2 PRIVATE ${ANDROID_NDK}/sources/android/cpufeatures) target_include_directories(SDL2 PRIVATE ${ANDROID_NDK}/sources/android/cpufeatures)
else() else()
@ -2540,7 +2597,6 @@ if(SDL_SHARED)
endif() endif()
if(IOS OR TVOS) if(IOS OR TVOS)
set_property(TARGET SDL2 APPEND_STRING PROPERTY COMPILE_FLAGS "-fobjc-arc") set_property(TARGET SDL2 APPEND_STRING PROPERTY COMPILE_FLAGS "-fobjc-arc")
target_compile_definitions(SDL2 PRIVATE IOS_DYLIB=1)
endif() endif()
endif() endif()
@ -2606,15 +2662,15 @@ endif()
##### Installation targets ##### ##### Installation targets #####
install(TARGETS ${_INSTALL_LIBS} EXPORT SDL2Targets install(TARGETS ${_INSTALL_LIBS} EXPORT SDL2Targets
LIBRARY DESTINATION "lib${LIB_SUFFIX}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}"
ARCHIVE DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}"
RUNTIME DESTINATION bin) RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
##### Export files ##### ##### Export files #####
if (WINDOWS) if (WINDOWS)
set(PKG_PREFIX "cmake") set(PKG_PREFIX "cmake")
else () else ()
set(PKG_PREFIX "lib${LIB_SUFFIX}/cmake/SDL2") set(PKG_PREFIX "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}/cmake/SDL2")
endif () endif ()
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
@ -2643,7 +2699,7 @@ foreach(_FNAME ${BIN_INCLUDE_FILES})
list(REMOVE_ITEM INCLUDE_FILES ${SDL2_SOURCE_DIR}/include/${_INCNAME}) list(REMOVE_ITEM INCLUDE_FILES ${SDL2_SOURCE_DIR}/include/${_INCNAME})
endforeach() endforeach()
list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES}) list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES})
install(FILES ${INCLUDE_FILES} DESTINATION include/SDL2) install(FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SDL2)
string(TOUPPER "${CMAKE_BUILD_TYPE}" UPPER_BUILD_TYPE) string(TOUPPER "${CMAKE_BUILD_TYPE}" UPPER_BUILD_TYPE)
if (UPPER_BUILD_TYPE MATCHES DEBUG) if (UPPER_BUILD_TYPE MATCHES DEBUG)
@ -2652,7 +2708,7 @@ else()
set(SOPOSTFIX "") set(SOPOSTFIX "")
endif() endif()
if(NOT (WINDOWS OR CYGWIN)) if(NOT (WINDOWS OR CYGWIN OR MINGW))
if(SDL_SHARED) if(SDL_SHARED)
set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc. set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
get_target_property(SONAME SDL2 OUTPUT_NAME) get_target_property(SONAME SDL2 OUTPUT_NAME)
@ -2661,7 +2717,7 @@ if(NOT (WINDOWS OR CYGWIN))
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
\"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\" \"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\"
WORKING_DIRECTORY \"${SDL2_BINARY_DIR}\")") WORKING_DIRECTORY \"${SDL2_BINARY_DIR}\")")
install(FILES ${SDL2_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "lib${LIB_SUFFIX}") install(FILES ${SDL2_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}")
endif() endif()
endif() endif()
if(FREEBSD) if(FREEBSD)
@ -2669,9 +2725,9 @@ if(NOT (WINDOWS OR CYGWIN))
install(FILES ${SDL2_BINARY_DIR}/sdl2.pc DESTINATION "libdata/pkgconfig") install(FILES ${SDL2_BINARY_DIR}/sdl2.pc DESTINATION "libdata/pkgconfig")
else() else()
install(FILES ${SDL2_BINARY_DIR}/sdl2.pc install(FILES ${SDL2_BINARY_DIR}/sdl2.pc
DESTINATION "lib${LIB_SUFFIX}/pkgconfig") DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}/pkgconfig")
endif() endif()
install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION bin) install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION "${CMAKE_INSTALL_BINDIR}")
# TODO: what about the .spec file? Is it only needed for RPM creation? # TODO: what about the .spec file? Is it only needed for RPM creation?
install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/aclocal") install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/aclocal")
endif() endif()

View File

@ -29,6 +29,8 @@ INSTALL = @INSTALL@
AR = @AR@ AR = @AR@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
RC = @RC@ RC = @RC@
LINKER = @LINKER@
LIBTOOLLINKERTAG = @LIBTOOLLINKERTAG@
TARGET = libSDL2.la TARGET = libSDL2.la
OBJECTS = @OBJECTS@ OBJECTS = @OBJECTS@
@ -47,7 +49,7 @@ WAYLAND_SCANNER_CODE_MODE = @WAYLAND_SCANNER_CODE_MODE@
INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@ INSTALL_SDL2_CONFIG = @INSTALL_SDL2_CONFIG@
SRC_DIST = *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac debian docs include Makefile.* sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake src test VisualC VisualC-WinRT Xcode Xcode-iOS wayland-protocols SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac debian docs include Makefile.* sdl2-config.cmake.in sdl2-config-version.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in SDL2Config.cmake src test VisualC VisualC-WinRT Xcode Xcode-iOS wayland-protocols
GEN_DIST = SDL2.spec GEN_DIST = SDL2.spec
ifneq ($V,1) ifneq ($V,1)
@ -152,13 +154,13 @@ update-revision:
.PHONY: all update-revision install install-bin install-hdrs install-lib install-data uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data clean distclean dist $(OBJECTS:.lo=.d) .PHONY: all update-revision install install-bin install-hdrs install-lib install-data uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data clean distclean dist $(OBJECTS:.lo=.d)
$(objects)/$(TARGET): $(GEN_HEADERS) $(GEN_OBJECTS) $(OBJECTS) $(VERSION_OBJECTS) $(objects)/$(TARGET): $(GEN_HEADERS) $(GEN_OBJECTS) $(OBJECTS) $(VERSION_OBJECTS)
$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $(OBJECTS) $(GEN_OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(RUN_CMD_LTLINK)$(LIBTOOL) --tag=$(LIBTOOLLINKERTAG) --mode=link $(LINKER) -o $@ $(OBJECTS) $(GEN_OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
$(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS) $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -static -o $@ $(SDLMAIN_OBJECTS) -rpath $(libdir) $(RUN_CMD_LTLINK)$(LIBTOOL) --tag=$(LIBTOOLLINKERTAG) --mode=link $(LINKER) -static -o $@ $(SDLMAIN_OBJECTS) -rpath $(libdir)
$(objects)/$(SDLTEST_TARGET): $(SDLTEST_OBJECTS) $(objects)/$(SDLTEST_TARGET): $(SDLTEST_OBJECTS)
$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -static -o $@ $(SDLTEST_OBJECTS) -rpath $(libdir) $(RUN_CMD_LTLINK)$(LIBTOOL) --tag=$(LIBTOOLLINKERTAG) --mode=link $(LINKER) -static -o $@ $(SDLTEST_OBJECTS) -rpath $(libdir)
install: all install-bin install-hdrs install-lib install-data install: all install-bin install-hdrs install-lib install-data
install-bin: install-bin:

View File

@ -2,7 +2,7 @@
# wmake -f Makefile.os2 # wmake -f Makefile.os2
LIBNAME = SDL2 LIBNAME = SDL2
VERSION = 2.0.15 VERSION = 2.0.16
DESCRIPTION = Simple DirectMedia Layer 2 DESCRIPTION = Simple DirectMedia Layer 2
LIBHOME = . LIBHOME = .
@ -63,7 +63,7 @@ SRCS+= SDL_sysfilesystem.c
SRCS+= SDL_os2joystick.c SDL_syshaptic.c SDL_sysjoystick.c SRCS+= SDL_os2joystick.c SDL_syshaptic.c SDL_sysjoystick.c
SRCS+= SDL_virtualjoystick.c SRCS+= SDL_virtualjoystick.c
SRCS+= SDL_hidapi.c SRCS+= SDL_hidapi.c
SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_gamecube.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c SRCS+= SDL_hidapijoystick.c SDL_hidapi_rumble.c SDL_hidapi_gamecube.c SDL_hidapi_luna.c SDL_hidapi_ps4.c SDL_hidapi_ps5.c SDL_hidapi_stadia.c SDL_hidapi_switch.c SDL_hidapi_xbox360.c SDL_hidapi_xbox360w.c SDL_hidapi_xboxone.c SDL_hidapi_steam.c
SRCS+= SDL_dummyaudio.c SDL_diskaudio.c SRCS+= SDL_dummyaudio.c SDL_diskaudio.c
SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c SRCS+= SDL_nullvideo.c SDL_nullframebuffer.c SDL_nullevents.c
SRCS+= SDL_dummysensor.c SRCS+= SDL_dummysensor.c

View File

@ -1 +1,102 @@
include("${CMAKE_CURRENT_LIST_DIR}/SDL2Targets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/SDL2Targets.cmake")
# provide ${SDL2_LIBRARIES}, ${SDL2_INCLUDE_DIRS} etc, like sdl2-config.cmake does,
# for compatibility between SDL2 built with autotools and SDL2 built with CMake
# the following seems to work on Windows for both MSVC and MINGW+MSYS and with both SDL2Config/Target.cmake
# from vcpkg and from building myself with cmake from latest git
# AND on Linux when building SDL2 (tested current git) with CMake
# the headers are easy - but note that this adds both .../include/ and .../include/SDL2/
# while the SDL2_INCLUDE_DIRS of sdl2-config.cmake only add ...include/SDL2/
# But at least if building worked with sdl2-config.cmake it will also work with this.
get_target_property(SDL2_INCLUDE_DIRS SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
# get the paths to the files to link against (.lib or .dll.a on Windows, .so or .a on Unix, ...) for both SDL2 and SDL2main
# for the "normal"/release build they could be in lots of different properties..
set(relprops IMPORTED_IMPLIB_RELEASE IMPORTED_IMPLIB_NOCONFIG IMPORTED_IMPLIB IMPORTED_IMPLIB_MINSIZEREL IMPORTED_IMPLIB_RELWITHDEBINFO
IMPORTED_LOCATION_RELEASE IMPORTED_LOCATION_NOCONFIG IMPORTED_LOCATION IMPORTED_LOCATION_MINSIZEREL IMPORTED_LOCATION_RELWITHDEBINFO)
# fewer possibilities for debug builds
set(dbgprops IMPORTED_IMPLIB_DEBUG IMPORTED_LOCATION_DEBUG)
foreach(prop ${relprops})
get_target_property(sdl2implib SDL2::SDL2 ${prop})
if(sdl2implib)
#message("set sdl2implib from ${prop}")
break()
endif()
endforeach()
foreach(prop ${relprops})
get_target_property(sdl2mainimplib SDL2::SDL2main ${prop})
if(sdl2mainimplib)
#message("set sdl2mainimplib from ${prop}")
break()
endif()
endforeach()
foreach(prop ${dbgprops})
get_target_property(sdl2implibdbg SDL2::SDL2 ${prop})
if(sdl2implibdbg)
#message("set sdl2implibdbg from ${prop}")
break()
endif()
endforeach()
foreach(prop ${dbgprops})
get_target_property(sdl2mainimplibdbg SDL2::SDL2main ${prop})
if(sdl2mainimplibdbg)
#message("set sdl2mainimplibdbg from ${prop}")
break()
endif()
endforeach()
if( sdl2implib AND sdl2mainimplib AND sdl2implibdbg AND sdl2mainimplibdbg )
# we have both release and debug builds of SDL2 and SDL2main, so use this ugly
# generator expression in SDL2_LIBRARIES to support both in MSVC, depending on build type configured there
set(SDL2_LIBRARIES $<IF:$<CONFIG:Debug>,${sdl2mainimplibdbg},${sdl2mainimplib}> $<IF:$<CONFIG:Debug>,${sdl2implibdbg},${sdl2implib}>)
else()
if( (NOT sdl2implib) AND sdl2implibdbg ) # if we only have a debug version of the lib
set(sdl2implib sdl2implibdbg)
endif()
if( (NOT sdl2mainimplib) AND sdl2mainimplibdbg ) # if we only have a debug version of the lib
set(sdl2mainimplib sdl2mainimplibdbg)
endif()
if( sdl2implib AND sdl2mainimplib )
set(SDL2_LIBRARIES ${sdl2mainimplib} ${sdl2implib})
elseif(WIN32 OR APPLE) # I think these platforms have a non-dummy SDLmain?
message(FATAL_ERROR, "SDL2::SDL2 and/or SDL2::SDL2main don't seem to contain any kind of IMPORTED_IMPLIB* or IMPORTED_LOCATION*")
elseif(sdl2implib) # on other platforms just libSDL2 will hopefully do?
set(SDL2_LIBRARIES ${sdl2implib})
message(STATUS, "No SDL2main lib not found, I hope you don't need it..")
else()
message(FATAL_ERROR, "SDL2::SDL2 doesn't seem to contain any kind of lib to link against in IMPORTED_IMPLIB* or IMPORTED_LOCATION*")
endif()
# TODO: should something like INTERFACE_LINK_LIBRARIES be appended? or wherever -mwindows and things like that
# might be defined (if they were defined by the CMake build at all; autotools has @SDL_RLD_FLAGS@ @SDL_LIBS@)?
# LINK_DEPENDS? LINK_FLAGS?
endif()
get_filename_component(SDL2_LIBDIR ${sdl2implib} PATH)
# NOTE: SDL2_LIBRARIES now looks like "c:/path/to/SDL2main.lib;c:/path/to/SDL2.lib"
# which is different to what it looks like when coming from sdl2-config.cmake
# (there it's more like "-L${SDL2_LIBDIR} -lSDL2main -lSDL2" - and also -lmingw32 and -mwindows)
# This seems to work with both MSVC and MinGW though, while the other only worked with MinGW
# On Linux it looks like "/tmp/sdl2inst/lib/libSDL2main.a;/tmp/sdl2inst/lib/libSDL2-2.0.so.0.14.1" which also seems to work
# the exec prefix is one level up from lib/ - TODO: really, always? at least on Linux there's /usr/lib/x86_64-bla-blub/libSDL2-asdf.so.0 ..
get_filename_component(SDL2_EXEC_PREFIX ${SDL2_LIBDIR} PATH)
set(SDL2_PREFIX ${SDL2_EXEC_PREFIX}) # TODO: could this be somewhere else? parent dir of include or sth?
unset(sdl2implib)
unset(sdl2mainimplib)
unset(sdl2implibdbg)
unset(sdl2mainimplibdbg)
unset(relprops)
unset(dbgprops)

View File

@ -50,6 +50,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "controllermap", "tests\cont
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testvulkan", "tests\testvulkan\testvulkan.vcxproj", "{0D604DFD-AAB6-442C-9368-F91A344146AB}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testvulkan", "tests\testvulkan\testvulkan.vcxproj", "{0D604DFD-AAB6-442C-9368-F91A344146AB}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testwm2", "tests\testwm2\testwm2.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testyuv", "tests\testyuv\testyuv.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C97635682}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testyuv", "tests\testyuv\testyuv.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C97635682}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsensor", "tests\testsensor\testsensor.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsensor", "tests\testsensor\testsensor.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}"
@ -254,6 +256,14 @@ Global
{0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|Win32.Build.0 = Release|Win32 {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|Win32.Build.0 = Release|Win32
{0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.ActiveCfg = Release|x64 {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.ActiveCfg = Release|x64
{0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.Build.0 = Release|x64 {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.Build.0 = Release|x64
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|Win32.ActiveCfg = Debug|Win32
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|Win32.Build.0 = Debug|Win32
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|x64.ActiveCfg = Debug|x64
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|x64.Build.0 = Debug|x64
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|Win32.ActiveCfg = Release|Win32
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|Win32.Build.0 = Release|Win32
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|x64.ActiveCfg = Release|x64
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|x64.Build.0 = Release|x64
{40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.ActiveCfg = Debug|Win32 {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.ActiveCfg = Debug|Win32
{40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.Build.0 = Debug|Win32 {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.Build.0 = Debug|Win32
{40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|x64.ActiveCfg = Debug|x64 {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|x64.ActiveCfg = Debug|x64
@ -296,7 +306,11 @@ Global
{E9558DFE-1961-4DD4-B09B-DD0EEFD5C315} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
{55812185-D13C-4022-9C81-32E0F4A08306} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} {55812185-D13C-4022-9C81-32E0F4A08306} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
{0D604DFD-AAB6-442C-9368-F91A344146AB} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} {0D604DFD-AAB6-442C-9368-F91A344146AB} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
{40FB7794-D3C3-4CFE-BCF4-A80C97635682} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} {40FB7794-D3C3-4CFE-BCF4-A80C97635682} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4} = {D69D5741-611F-4E14-8541-1FEE94F50B5A}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C320C9F2-1A8F-41D7-B02B-6338F872BCAD}
EndGlobalSection
EndGlobal EndGlobal

View File

@ -22,19 +22,24 @@
<ProjectName>SDL2</ProjectName> <ProjectName>SDL2</ProjectName>
<ProjectGuid>{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}</ProjectGuid> <ProjectGuid>{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}</ProjectGuid>
<RootNamespace>SDL</RootNamespace> <RootNamespace>SDL</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -97,7 +102,6 @@
<AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories> <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -128,7 +132,6 @@
<AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories> <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>OldStyle</DebugInformationFormat> <DebugInformationFormat>OldStyle</DebugInformationFormat>
@ -161,7 +164,6 @@
<AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories> <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -193,7 +195,6 @@
<AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)/../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories> <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<BufferSecurityCheck>false</BufferSecurityCheck> <BufferSecurityCheck>false</BufferSecurityCheck>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@ -243,6 +244,7 @@
<ClInclude Include="..\..\include\SDL_log.h" /> <ClInclude Include="..\..\include\SDL_log.h" />
<ClInclude Include="..\..\include\SDL_main.h" /> <ClInclude Include="..\..\include\SDL_main.h" />
<ClInclude Include="..\..\include\SDL_messagebox.h" /> <ClInclude Include="..\..\include\SDL_messagebox.h" />
<ClInclude Include="..\..\include\SDL_metal.h" />
<ClInclude Include="..\..\include\SDL_misc.h" /> <ClInclude Include="..\..\include\SDL_misc.h" />
<ClInclude Include="..\..\include\SDL_mouse.h" /> <ClInclude Include="..\..\include\SDL_mouse.h" />
<ClInclude Include="..\..\include\SDL_mutex.h" /> <ClInclude Include="..\..\include\SDL_mutex.h" />
@ -281,6 +283,7 @@
<ClInclude Include="..\..\include\SDL_test_images.h" /> <ClInclude Include="..\..\include\SDL_test_images.h" />
<ClInclude Include="..\..\include\SDL_test_log.h" /> <ClInclude Include="..\..\include\SDL_test_log.h" />
<ClInclude Include="..\..\include\SDL_test_md5.h" /> <ClInclude Include="..\..\include\SDL_test_md5.h" />
<ClInclude Include="..\..\include\SDL_test_memory.h" />
<ClInclude Include="..\..\include\SDL_test_random.h" /> <ClInclude Include="..\..\include\SDL_test_random.h" />
<ClInclude Include="..\..\include\SDL_thread.h" /> <ClInclude Include="..\..\include\SDL_thread.h" />
<ClInclude Include="..\..\include\SDL_timer.h" /> <ClInclude Include="..\..\include\SDL_timer.h" />
@ -307,6 +310,7 @@
<ClInclude Include="..\..\src\dynapi\SDL_dynapi_procs.h" /> <ClInclude Include="..\..\src\dynapi\SDL_dynapi_procs.h" />
<ClInclude Include="..\..\src\events\blank_cursor.h" /> <ClInclude Include="..\..\src\events\blank_cursor.h" />
<ClInclude Include="..\..\src\events\default_cursor.h" /> <ClInclude Include="..\..\src\events\default_cursor.h" />
<ClInclude Include="..\..\src\events\scancodes_windows.h" />
<ClInclude Include="..\..\src\events\SDL_clipboardevents_c.h" /> <ClInclude Include="..\..\src\events\SDL_clipboardevents_c.h" />
<ClInclude Include="..\..\src\events\SDL_displayevents_c.h" /> <ClInclude Include="..\..\src\events\SDL_displayevents_c.h" />
<ClInclude Include="..\..\src\events\SDL_dropevents_c.h" /> <ClInclude Include="..\..\src\events\SDL_dropevents_c.h" />
@ -317,16 +321,20 @@
<ClInclude Include="..\..\src\events\SDL_sysevents.h" /> <ClInclude Include="..\..\src\events\SDL_sysevents.h" />
<ClInclude Include="..\..\src\events\SDL_touch_c.h" /> <ClInclude Include="..\..\src\events\SDL_touch_c.h" />
<ClInclude Include="..\..\src\events\SDL_windowevents_c.h" /> <ClInclude Include="..\..\src\events\SDL_windowevents_c.h" />
<ClInclude Include="..\..\src\haptic\SDL_haptic_c.h" />
<ClInclude Include="..\..\src\haptic\SDL_syshaptic.h" /> <ClInclude Include="..\..\src\haptic\SDL_syshaptic.h" />
<ClInclude Include="..\..\src\haptic\windows\SDL_dinputhaptic_c.h" /> <ClInclude Include="..\..\src\haptic\windows\SDL_dinputhaptic_c.h" />
<ClInclude Include="..\..\src\haptic\windows\SDL_windowshaptic_c.h" /> <ClInclude Include="..\..\src\haptic\windows\SDL_windowshaptic_c.h" />
<ClInclude Include="..\..\src\haptic\windows\SDL_xinputhaptic_c.h" /> <ClInclude Include="..\..\src\haptic\windows\SDL_xinputhaptic_c.h" />
<ClInclude Include="..\..\src\hidapi\hidapi\hidapi.h" /> <ClInclude Include="..\..\src\hidapi\hidapi\hidapi.h" />
<ClInclude Include="..\..\src\hidapi\SDL_hidapi.h" />
<ClInclude Include="..\..\src\joystick\controller_type.h" /> <ClInclude Include="..\..\src\joystick\controller_type.h" />
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapijoystick_c.h" /> <ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapijoystick_c.h" />
<ClInclude Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.h" />
<ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" /> <ClInclude Include="..\..\src\joystick\SDL_gamecontrollerdb.h" />
<ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" /> <ClInclude Include="..\..\src\joystick\SDL_joystick_c.h" />
<ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" /> <ClInclude Include="..\..\src\joystick\SDL_sysjoystick.h" />
<ClInclude Include="..\..\src\joystick\usb_ids.h" />
<ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" /> <ClInclude Include="..\..\src\joystick\virtual\SDL_virtualjoystick_c.h" />
<ClInclude Include="..\..\src\joystick\windows\SDL_dinputjoystick_c.h" /> <ClInclude Include="..\..\src\joystick\windows\SDL_dinputjoystick_c.h" />
<ClInclude Include="..\..\src\joystick\windows\SDL_rawinputjoystick_c.h" /> <ClInclude Include="..\..\src\joystick\windows\SDL_rawinputjoystick_c.h" />
@ -335,11 +343,14 @@
<ClInclude Include="..\..\src\libm\math_libm.h" /> <ClInclude Include="..\..\src\libm\math_libm.h" />
<ClInclude Include="..\..\src\libm\math_private.h" /> <ClInclude Include="..\..\src\libm\math_private.h" />
<ClInclude Include="..\..\src\locale\SDL_syslocale.h" /> <ClInclude Include="..\..\src\locale\SDL_syslocale.h" />
<ClInclude Include="..\..\src\misc\SDL_sysurl.h" />
<ClInclude Include="..\..\src\power\SDL_syspower.h" />
<ClInclude Include="..\..\src\render\direct3d11\SDL_shaders_d3d11.h" /> <ClInclude Include="..\..\src\render\direct3d11\SDL_shaders_d3d11.h" />
<ClInclude Include="..\..\src\render\direct3d\SDL_shaders_d3d.h" /> <ClInclude Include="..\..\src\render\direct3d\SDL_shaders_d3d.h" />
<ClInclude Include="..\..\src\render\opengles2\SDL_gles2funcs.h" />
<ClInclude Include="..\..\src\render\opengles2\SDL_shaders_gles2.h" />
<ClInclude Include="..\..\src\render\opengl\SDL_glfuncs.h" /> <ClInclude Include="..\..\src\render\opengl\SDL_glfuncs.h" />
<ClInclude Include="..\..\src\render\opengl\SDL_shaders_gl.h" /> <ClInclude Include="..\..\src\render\opengl\SDL_shaders_gl.h" />
<ClInclude Include="..\..\src\render\opengles\SDL_glesfuncs.h" />
<ClInclude Include="..\..\src\render\SDL_d3dmath.h" /> <ClInclude Include="..\..\src\render\SDL_d3dmath.h" />
<ClInclude Include="..\..\src\render\SDL_sysrender.h" /> <ClInclude Include="..\..\src\render\SDL_sysrender.h" />
<ClInclude Include="..\..\src\render\SDL_yuv_sw_c.h" /> <ClInclude Include="..\..\src\render\SDL_yuv_sw_c.h" />
@ -351,8 +362,11 @@
<ClInclude Include="..\..\src\render\software\SDL_drawpoint.h" /> <ClInclude Include="..\..\src\render\software\SDL_drawpoint.h" />
<ClInclude Include="..\..\src\render\software\SDL_render_sw_c.h" /> <ClInclude Include="..\..\src\render\software\SDL_render_sw_c.h" />
<ClInclude Include="..\..\src\render\software\SDL_rotate.h" /> <ClInclude Include="..\..\src\render\software\SDL_rotate.h" />
<ClInclude Include="..\..\src\SDL_assert_c.h" />
<ClInclude Include="..\..\src\SDL_dataqueue.h" /> <ClInclude Include="..\..\src\SDL_dataqueue.h" />
<ClInclude Include="..\..\src\SDL_error_c.h" /> <ClInclude Include="..\..\src\SDL_error_c.h" />
<ClInclude Include="..\..\src\SDL_hints_c.h" />
<ClInclude Include="..\..\src\SDL_internal.h" />
<ClInclude Include="..\..\src\sensor\dummy\SDL_dummysensor.h" /> <ClInclude Include="..\..\src\sensor\dummy\SDL_dummysensor.h" />
<ClInclude Include="..\..\src\sensor\SDL_sensor_c.h" /> <ClInclude Include="..\..\src\sensor\SDL_sensor_c.h" />
<ClInclude Include="..\..\src\sensor\SDL_syssensor.h" /> <ClInclude Include="..\..\src\sensor\SDL_syssensor.h" />
@ -366,10 +380,32 @@
<ClInclude Include="..\..\src\video\dummy\SDL_nullevents_c.h" /> <ClInclude Include="..\..\src\video\dummy\SDL_nullevents_c.h" />
<ClInclude Include="..\..\src\video\dummy\SDL_nullframebuffer_c.h" /> <ClInclude Include="..\..\src\video\dummy\SDL_nullframebuffer_c.h" />
<ClInclude Include="..\..\src\video\dummy\SDL_nullvideo.h" /> <ClInclude Include="..\..\src\video\dummy\SDL_nullvideo.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_icd.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_layer.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_platform.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vk_sdk_platform.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan.hpp" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_android.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_beta.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_core.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_directfb.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_fuchsia.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_ggp.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_ios.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_macos.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_metal.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_vi.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_wayland.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_win32.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_xcb.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_xlib.h" />
<ClInclude Include="..\..\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" />
<ClInclude Include="..\..\src\video\SDL_blit.h" /> <ClInclude Include="..\..\src\video\SDL_blit.h" />
<ClInclude Include="..\..\src\video\SDL_blit_auto.h" /> <ClInclude Include="..\..\src\video\SDL_blit_auto.h" />
<ClInclude Include="..\..\src\video\SDL_blit_copy.h" /> <ClInclude Include="..\..\src\video\SDL_blit_copy.h" />
<ClInclude Include="..\..\src\video\SDL_blit_slow.h" /> <ClInclude Include="..\..\src\video\SDL_blit_slow.h" />
<ClInclude Include="..\..\src\video\SDL_egl_c.h" />
<ClInclude Include="..\..\src\video\SDL_pixels_c.h" /> <ClInclude Include="..\..\src\video\SDL_pixels_c.h" />
<ClInclude Include="..\..\src\video\SDL_rect_c.h" /> <ClInclude Include="..\..\src\video\SDL_rect_c.h" />
<ClInclude Include="..\..\src\video\SDL_RLEaccel_c.h" /> <ClInclude Include="..\..\src\video\SDL_RLEaccel_c.h" />
@ -377,6 +413,7 @@
<ClInclude Include="..\..\src\video\SDL_sysvideo.h" /> <ClInclude Include="..\..\src\video\SDL_sysvideo.h" />
<ClInclude Include="..\..\src\video\SDL_vulkan_internal.h" /> <ClInclude Include="..\..\src\video\SDL_vulkan_internal.h" />
<ClInclude Include="..\..\src\video\SDL_yuv_c.h" /> <ClInclude Include="..\..\src\video\SDL_yuv_c.h" />
<ClInclude Include="..\..\src\video\windows\SDL_msctf.h" />
<ClInclude Include="..\..\src\video\windows\SDL_vkeys.h" /> <ClInclude Include="..\..\src\video\windows\SDL_vkeys.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsclipboard.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsclipboard.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsevents.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsevents.h" />
@ -386,12 +423,16 @@
<ClInclude Include="..\..\src\video\windows\SDL_windowsmodes.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsmodes.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsmouse.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsmouse.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsopengl.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsopengl.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsopengles.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsshape.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsshape.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowstaskdialog.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsvideo.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsvideo.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowsvulkan.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowsvulkan.h" />
<ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" /> <ClInclude Include="..\..\src\video\windows\SDL_windowswindow.h" />
<ClInclude Include="..\..\src\video\windows\wmmsg.h" /> <ClInclude Include="..\..\src\video\windows\wmmsg.h" />
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" /> <ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb.h" />
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
<ClInclude Include="..\..\src\video\yuv2rgb\yuv_rgb_std_func.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\src\atomic\SDL_atomic.c" /> <ClCompile Include="..\..\src\atomic\SDL_atomic.c" />
@ -434,6 +475,7 @@
<ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" /> <ClCompile Include="..\..\src\joystick\dummy\SDL_sysjoystick.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapijoystick.c" /> <ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapijoystick.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_gamecube.c" /> <ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_gamecube.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_luna.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_ps4.c" /> <ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_ps4.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_ps5.c" /> <ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_ps5.c" />
<ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.c" /> <ClCompile Include="..\..\src\joystick\hidapi\SDL_hidapi_rumble.c" />

File diff suppressed because it is too large Load Diff

View File

@ -22,19 +22,24 @@
<ProjectName>SDL2main</ProjectName> <ProjectName>SDL2main</ProjectName>
<ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid> <ProjectGuid>{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}</ProjectGuid>
<RootNamespace>SDLmain</RootNamespace> <RootNamespace>SDLmain</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -22,19 +22,24 @@
<ProjectName>SDL2test</ProjectName> <ProjectName>SDL2test</ProjectName>
<ProjectGuid>{DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}</ProjectGuid> <ProjectGuid>{DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}</ProjectGuid>
<RootNamespace>SDLtest</RootNamespace> <RootNamespace>SDLtest</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{26828762-C95D-4637-9CB1-7F0979523813}</ProjectGuid> <ProjectGuid>{26828762-C95D-4637-9CB1-7F0979523813}</ProjectGuid>
<RootNamespace>checkkeys</RootNamespace> <RootNamespace>checkkeys</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08306}</ProjectGuid> <ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08306}</ProjectGuid>
<RootNamespace>controllermap</RootNamespace> <RootNamespace>controllermap</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -229,37 +234,37 @@
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\controllermap.bmp"> <CustomBuild Include="..\..\..\test\controllermap.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\controllermap_back.bmp"> <CustomBuild Include="..\..\..\test\controllermap_back.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}</ProjectGuid> <ProjectGuid>{AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}</ProjectGuid>
<RootNamespace>loopwave</RootNamespace> <RootNamespace>loopwave</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -202,19 +207,19 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\sample.wav"> <CustomBuild Include="..\..\..\test\sample.wav">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{66B32F7E-5716-48D0-B5B9-D832FD052DD5}</ProjectGuid> <ProjectGuid>{66B32F7E-5716-48D0-B5B9-D832FD052DD5}</ProjectGuid>
<RootNamespace>testatomic</RootNamespace> <RootNamespace>testatomic</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}</ProjectGuid> <ProjectGuid>{9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}</ProjectGuid>
<RootNamespace>testautomation</RootNamespace> <RootNamespace>testautomation</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}</ProjectGuid> <ProjectGuid>{8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}</ProjectGuid>
<RootNamespace>testdraw2</RootNamespace> <RootNamespace>testdraw2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{CAE4F1D0-314F-4B10-805B-0EFD670133A0}</ProjectGuid> <ProjectGuid>{CAE4F1D0-314F-4B10-805B-0EFD670133A0}</ProjectGuid>
<RootNamespace>testfile</RootNamespace> <RootNamespace>testfile</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08305}</ProjectGuid> <ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08305}</ProjectGuid>
<RootNamespace>testgamecontroller</RootNamespace> <RootNamespace>testgamecontroller</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -193,73 +198,73 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\axis.bmp"> <CustomBuild Include="..\..\..\test\axis.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\button.bmp"> <CustomBuild Include="..\..\..\test\button.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\controllermap.bmp"> <CustomBuild Include="..\..\..\test\controllermap.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\controllermap_back.bmp"> <CustomBuild Include="..\..\..\test\controllermap_back.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}</ProjectGuid> <ProjectGuid>{79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}</ProjectGuid>
<RootNamespace>testgesture</RootNamespace> <RootNamespace>testgesture</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{8B5CFB38-CCBA-40A8-AD7A-89C57B070884}</ProjectGuid> <ProjectGuid>{8B5CFB38-CCBA-40A8-AD7A-89C57B070884}</ProjectGuid>
<RootNamespace>testgl2</RootNamespace> <RootNamespace>testgl2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}</ProjectGuid> <ProjectGuid>{E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}</ProjectGuid>
<RootNamespace>testgles2</RootNamespace> <RootNamespace>testgles2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08304}</ProjectGuid> <ProjectGuid>{55812185-D13C-4022-9C81-32E0F4A08304}</ProjectGuid>
<RootNamespace>testjoystick</RootNamespace> <RootNamespace>testjoystick</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}</ProjectGuid> <ProjectGuid>{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}</ProjectGuid>
<RootNamespace>testoverlay2</RootNamespace> <RootNamespace>testoverlay2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -193,19 +198,19 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\moose.dat"> <CustomBuild Include="..\..\..\test\moose.dat">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{26932B24-EFC6-4E3A-B277-ED653DA37968}</ProjectGuid> <ProjectGuid>{26932B24-EFC6-4E3A-B277-ED653DA37968}</ProjectGuid>
<RootNamespace>testplatform</RootNamespace> <RootNamespace>testplatform</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}</ProjectGuid> <ProjectGuid>{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}</ProjectGuid>
<RootNamespace>testpower</RootNamespace> <RootNamespace>testpower</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}</ProjectGuid> <ProjectGuid>{2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}</ProjectGuid>
<RootNamespace>testrendertarget</RootNamespace> <RootNamespace>testrendertarget</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -199,37 +204,37 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\icon.bmp"> <CustomBuild Include="..\..\..\test\icon.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\sample.bmp"> <CustomBuild Include="..\..\..\test\sample.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{BFF40245-E9A6-4297-A425-A554E5D767E8}</ProjectGuid> <ProjectGuid>{BFF40245-E9A6-4297-A425-A554E5D767E8}</ProjectGuid>
<RootNamespace>testrumble</RootNamespace> <RootNamespace>testrumble</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}</ProjectGuid> <ProjectGuid>{5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}</ProjectGuid>
<RootNamespace>testscale</RootNamespace> <RootNamespace>testscale</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -199,37 +204,37 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\icon.bmp"> <CustomBuild Include="..\..\..\test\icon.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>
<CustomBuild Include="..\..\..\test\sample.bmp"> <CustomBuild Include="..\..\..\test\sample.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}</ProjectGuid> <ProjectGuid>{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}</ProjectGuid>
<RootNamespace>testsensor</RootNamespace> <RootNamespace>testsensor</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}</ProjectGuid> <ProjectGuid>{31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}</ProjectGuid>
<RootNamespace>testshape</RootNamespace> <RootNamespace>testshape</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{40FB7794-D3C3-4CFE-BCF4-A80C96635682}</ProjectGuid> <ProjectGuid>{40FB7794-D3C3-4CFE-BCF4-A80C96635682}</ProjectGuid>
<RootNamespace>testsprite2</RootNamespace> <RootNamespace>testsprite2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -199,19 +204,19 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\icon.bmp"> <CustomBuild Include="..\..\..\test\icon.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{0D604DFD-AAB6-442C-9368-F91A344146AB}</ProjectGuid> <ProjectGuid>{0D604DFD-AAB6-442C-9368-F91A344146AB}</ProjectGuid>
<RootNamespace>testvulkan</RootNamespace> <RootNamespace>testvulkan</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}</ProjectGuid>
<RootNamespace>testwm2</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Debug/testwm2.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)/../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>.\Debug/testwm2.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)/../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>Win32</TargetEnvironment>
<TypeLibraryName>.\Release/testwm2.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)/../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TargetEnvironment>X64</TargetEnvironment>
<TypeLibraryName>.\Release/testwm2.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)/../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\..\SDL\SDL.vcxproj">
<Project>{81ce8daf-ebb2-4761-8e45-b71abcca8c68}</Project>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\SDLmain\SDLmain.vcxproj">
<Project>{da956fd3-e142-46f2-9dd5-c78bebb56b7a}</Project>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\..\SDLtest\SDLtest.vcxproj">
<Project>{da956fd3-e143-46f2-9fe5-c77bebc56b1a}</Project>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\test\testwm2.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -21,19 +21,24 @@
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{40FB7794-D3C3-4CFE-BCF4-A80C97635682}</ProjectGuid> <ProjectGuid>{40FB7794-D3C3-4CFE-BCF4-A80C97635682}</ProjectGuid>
<RootNamespace>testyuv</RootNamespace> <RootNamespace>testyuv</RootNamespace>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<PlatformToolset Condition="'$(VisualStudioVersion)' != '10.0'">$(DefaultPlatformToolset)</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -199,19 +204,19 @@
<ItemGroup> <ItemGroup>
<CustomBuild Include="..\..\..\test\testyuv.bmp"> <CustomBuild Include="..\..\..\test\testyuv.bmp">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message> <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying %(Filename)%(Extension)</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy %(FullPath) $(ProjectDir)\ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(ProjectDir)\"
</Command> </Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)\%(Filename)%(Extension);%(Outputs)</Outputs>
</CustomBuild> </CustomBuild>

View File

@ -1,6 +1,46 @@
This is a list of major changes in SDL's version history. This is a list of major changes in SDL's version history.
---------------------------------------------------------------------------
2.0.16:
---------------------------------------------------------------------------
General:
* Added SDL_FlashWindow() to get a user's attention
* Added SDL_GetAudioDeviceSpec() to get the preferred audio format of a device
* Added SDL_SetWindowAlwaysOnTop() to dynamically change the SDL_WINDOW_ALWAYS_ON_TOP flag for a window
* Added SDL_SetWindowKeyboardGrab() to support grabbing the keyboard independently of the mouse
* Added SDL_SoftStretchLinear() to do bilinear scaling between 32-bit software surfaces
* Added SDL_UpdateNVTexture() to update streaming NV12/21 textures
* Added SDL_GameControllerSendEffect() and SDL_JoystickSendEffect() to allow sending custom trigger effects to the DualSense controller
* Added SDL_GameControllerGetSensorDataRate() to get the sensor data rate for PlayStation and Nintendo Switch controllers
* Added support for the Amazon Luna game controller
* Added rumble support for the Google Stadia controller using the HIDAPI driver
* Added SDL_GameControllerType constants for the Amazon Luna and Google Stadia controllers
* Added analog rumble for Nintendo Switch Pro controllers using the HIDAPI driver
* Reduced CPU usage when using SDL_WaitEvent() and SDL_WaitEventTimeout()
Windows:
* Added SDL_SetWindowsMessageHook() to set a function that is called for all Windows messages
* Added SDL_RenderGetD3D11Device() to get the D3D11 device used by the SDL renderer
Linux:
* Greatly improved Wayland support
* Added support for audio output and capture using Pipewire
* Added the hint SDL_HINT_AUDIO_INCLUDE_MONITORS to control whether PulseAudio recording should include monitor devices
* Added the hint SDL_HINT_AUDIO_DEVICE_STREAM_ROLE to describe the role of your application for audio control panels
Android:
* Added support for audio output and capture using AAudio
* Added SDL_AndroidShowToast() to show a lightweight notification
iOS:
* Added support for mouse relative mode on iOS 14.1 and newer
* Added support for the Xbox Series X controller
tvOS:
* Added support for the Xbox Series X controller
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
2.0.14: 2.0.14:
--------------------------------------------------------------------------- ---------------------------------------------------------------------------

View File

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

View File

@ -3820,6 +3820,17 @@
F3ADAB912576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; }; F3ADAB912576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; };
F3ADAB922576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; }; F3ADAB922576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; };
F3ADAB932576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; }; F3ADAB932576F0B400A6B1D9 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; };
F3CB963A26B5E10A00B9C980 /* SDL_uikit_main.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5B023E2513D00DCD162 /* SDL_uikit_main.c */; };
F3CB963B26B5E14400B9C980 /* SDL_uikit_main.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5B023E2513D00DCD162 /* SDL_uikit_main.c */; };
F3F07D5A269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D5B269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D5C269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D5D269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D5E269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D5F269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D60269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D61269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
F3F07D62269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; };
FA24348B21D41FFB00B8918A /* SDL_metal.h in Headers */ = {isa = PBXBuildFile; fileRef = FA24348A21D41FFB00B8918A /* SDL_metal.h */; settings = {ATTRIBUTES = (Public, ); }; }; FA24348B21D41FFB00B8918A /* SDL_metal.h in Headers */ = {isa = PBXBuildFile; fileRef = FA24348A21D41FFB00B8918A /* SDL_metal.h */; settings = {ATTRIBUTES = (Public, ); }; };
FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; }; FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; };
FA73671F19A54144004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; }; FA73671F19A54144004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; };
@ -4367,6 +4378,9 @@
F3984CCF25BCC92800374F43 /* SDL_hidapi_stadia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_stadia.c; sourceTree = "<group>"; }; F3984CCF25BCC92800374F43 /* SDL_hidapi_stadia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_stadia.c; sourceTree = "<group>"; };
F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps5.c; sourceTree = "<group>"; }; F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps5.c; sourceTree = "<group>"; };
F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = "<group>"; }; F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = "<group>"; };
F3CB94BA26B5E0A400B9C980 /* libSDLmain.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDLmain.a; sourceTree = BUILT_PRODUCTS_DIR; };
F3CB963826B5E0A600B9C980 /* libSDLmain.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDLmain.a; sourceTree = BUILT_PRODUCTS_DIR; };
F3F07D59269640160074468B /* SDL_hidapi_luna.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_luna.c; sourceTree = "<group>"; };
F59C710300D5CB5801000001 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; }; F59C710300D5CB5801000001 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; };
F59C710600D5CB5801000001 /* SDL.info */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SDL.info; sourceTree = "<group>"; }; F59C710600D5CB5801000001 /* SDL.info */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SDL.info; sourceTree = "<group>"; };
F5A2EF3900C6A39A01000001 /* BUGS.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = BUGS.txt; path = ../../BUGS.txt; sourceTree = SOURCE_ROOT; }; F5A2EF3900C6A39A01000001 /* BUGS.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = BUGS.txt; path = ../../BUGS.txt; sourceTree = SOURCE_ROOT; };
@ -4547,6 +4561,20 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
F3CB94B526B5E0A400B9C980 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
F3CB963326B5E0A600B9C980 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
@ -4640,6 +4668,8 @@
A75FDB4923E399AC00529352 /* hidapi.framework */, A75FDB4923E399AC00529352 /* hidapi.framework */,
A75FDB6E23E3A2C900529352 /* hidapi.framework */, A75FDB6E23E3A2C900529352 /* hidapi.framework */,
A75FDB8C23E4C74400529352 /* hidapi.framework */, A75FDB8C23E4C74400529352 /* hidapi.framework */,
F3CB94BA26B5E0A400B9C980 /* libSDLmain.a */,
F3CB963826B5E0A600B9C980 /* libSDLmain.a */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -5280,6 +5310,7 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A7D8A7C923E2513E00DCD162 /* SDL_hidapi_gamecube.c */, A7D8A7C923E2513E00DCD162 /* SDL_hidapi_gamecube.c */,
F3F07D59269640160074468B /* SDL_hidapi_luna.c */,
A7D8A7C323E2513E00DCD162 /* SDL_hidapi_ps4.c */, A7D8A7C323E2513E00DCD162 /* SDL_hidapi_ps4.c */,
F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */, F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */,
A75FDBC423EA380300529352 /* SDL_hidapi_rumble.c */, A75FDBC423EA380300529352 /* SDL_hidapi_rumble.c */,
@ -7692,6 +7723,20 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
F3CB933F26B5E0A400B9C980 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
F3CB94BD26B5E0A600B9C980 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */ /* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -7800,7 +7845,7 @@
); );
buildRules = ( buildRules = (
); );
comments = "This produces libsdl.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application."; comments = "This produces libSDL.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application.";
dependencies = ( dependencies = (
); );
name = "Static Library-tvOS"; name = "Static Library-tvOS";
@ -7862,7 +7907,7 @@
); );
buildRules = ( buildRules = (
); );
comments = "This produces libsdl.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application."; comments = "This produces libSDL.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application.";
dependencies = ( dependencies = (
); );
name = "Static Library-iOS"; name = "Static Library-iOS";
@ -7903,7 +7948,7 @@
); );
buildRules = ( buildRules = (
); );
comments = "This produces libsdl.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application."; comments = "This produces libSDL.a, which is the static build of SDL. You will have to link to the Cocoa and OpenGL frameworks in your application.";
dependencies = ( dependencies = (
); );
name = "Static Library"; name = "Static Library";
@ -7950,6 +7995,46 @@
productReference = DB31407717554B71006C0E22 /* libSDL2.dylib */; productReference = DB31407717554B71006C0E22 /* libSDL2.dylib */;
productType = "com.apple.product-type.library.dynamic"; productType = "com.apple.product-type.library.dynamic";
}; };
F3CB933E26B5E0A400B9C980 /* SDLmain-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = F3CB94B726B5E0A400B9C980 /* Build configuration list for PBXNativeTarget "SDLmain-iOS" */;
buildPhases = (
F3CB933F26B5E0A400B9C980 /* Headers */,
F3CB93F026B5E0A400B9C980 /* Sources */,
F3CB94B526B5E0A400B9C980 /* Frameworks */,
F3CB94B626B5E0A400B9C980 /* Rez */,
);
buildRules = (
);
comments = "This produces libSDLmain.a, which provides a main() for use with your application";
dependencies = (
);
name = "SDLmain-iOS";
productInstallPath = /usr/local/lib;
productName = "Static Library";
productReference = F3CB94BA26B5E0A400B9C980 /* libSDLmain.a */;
productType = "com.apple.product-type.library.static";
};
F3CB94BC26B5E0A600B9C980 /* SDLmain-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = F3CB963526B5E0A600B9C980 /* Build configuration list for PBXNativeTarget "SDLmain-tvOS" */;
buildPhases = (
F3CB94BD26B5E0A600B9C980 /* Headers */,
F3CB956E26B5E0A600B9C980 /* Sources */,
F3CB963326B5E0A600B9C980 /* Frameworks */,
F3CB963426B5E0A600B9C980 /* Rez */,
);
buildRules = (
);
comments = "This produces libSDLmain.a, which provides a main() for use with your application";
dependencies = (
);
name = "SDLmain-tvOS";
productInstallPath = /usr/local/lib;
productName = "Static Library";
productReference = F3CB963826B5E0A600B9C980 /* libSDLmain.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
@ -7977,6 +8062,8 @@
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
targets = ( targets = (
F3CB933E26B5E0A400B9C980 /* SDLmain-iOS */,
F3CB94BC26B5E0A600B9C980 /* SDLmain-tvOS */,
BECDF5FE0761BA81005FE872 /* Framework */, BECDF5FE0761BA81005FE872 /* Framework */,
A7D88A1423E2437C00DCD162 /* Framework-iOS */, A7D88A1423E2437C00DCD162 /* Framework-iOS */,
A7D88BC923E24BED00DCD162 /* Framework-tvOS */, A7D88BC923E24BED00DCD162 /* Framework-tvOS */,
@ -8103,6 +8190,20 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
F3CB94B626B5E0A400B9C980 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
F3CB963426B5E0A600B9C980 /* Rez */ = {
isa = PBXRezBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXRezBuildPhase section */ /* End PBXRezBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
@ -8289,6 +8390,7 @@
A75FCE8623E25AB700529352 /* SDL_cocoawindow.m in Sources */, A75FCE8623E25AB700529352 /* SDL_cocoawindow.m in Sources */,
A75FCE8723E25AB700529352 /* SDL_sysmutex.c in Sources */, A75FCE8723E25AB700529352 /* SDL_sysmutex.c in Sources */,
A75FCE8823E25AB700529352 /* SDL_syshaptic.c in Sources */, A75FCE8823E25AB700529352 /* SDL_syshaptic.c in Sources */,
F3F07D61269640160074468B /* SDL_hidapi_luna.c in Sources */,
A75FCE8923E25AB700529352 /* SDL_rwopsbundlesupport.m in Sources */, A75FCE8923E25AB700529352 /* SDL_rwopsbundlesupport.m in Sources */,
A75FCE8A23E25AB700529352 /* SDL_video.c in Sources */, A75FCE8A23E25AB700529352 /* SDL_video.c in Sources */,
A75FCE8B23E25AB700529352 /* SDL_offscreenopengl.c in Sources */, A75FCE8B23E25AB700529352 /* SDL_offscreenopengl.c in Sources */,
@ -8490,6 +8592,7 @@
A75FD03F23E25AC700529352 /* SDL_cocoawindow.m in Sources */, A75FD03F23E25AC700529352 /* SDL_cocoawindow.m in Sources */,
A75FD04023E25AC700529352 /* SDL_sysmutex.c in Sources */, A75FD04023E25AC700529352 /* SDL_sysmutex.c in Sources */,
A75FD04123E25AC700529352 /* SDL_syshaptic.c in Sources */, A75FD04123E25AC700529352 /* SDL_syshaptic.c in Sources */,
F3F07D62269640160074468B /* SDL_hidapi_luna.c in Sources */,
A75FD04223E25AC700529352 /* SDL_rwopsbundlesupport.m in Sources */, A75FD04223E25AC700529352 /* SDL_rwopsbundlesupport.m in Sources */,
A75FD04323E25AC700529352 /* SDL_video.c in Sources */, A75FD04323E25AC700529352 /* SDL_video.c in Sources */,
A75FD04423E25AC700529352 /* SDL_offscreenopengl.c in Sources */, A75FD04423E25AC700529352 /* SDL_offscreenopengl.c in Sources */,
@ -8670,6 +8773,7 @@
A769B1E823E259AE00872273 /* SDL_bmp.c in Sources */, A769B1E823E259AE00872273 /* SDL_bmp.c in Sources */,
75E0915F241EA924004729E1 /* SDL_virtualjoystick.c in Sources */, 75E0915F241EA924004729E1 /* SDL_virtualjoystick.c in Sources */,
A769B1E923E259AE00872273 /* SDL_uikit_main.c in Sources */, A769B1E923E259AE00872273 /* SDL_uikit_main.c in Sources */,
F3F07D5F269640160074468B /* SDL_hidapi_luna.c in Sources */,
A769B1EA23E259AE00872273 /* SDL_stdlib.c in Sources */, A769B1EA23E259AE00872273 /* SDL_stdlib.c in Sources */,
A769B1EB23E259AE00872273 /* SDL_dummyaudio.c in Sources */, A769B1EB23E259AE00872273 /* SDL_dummyaudio.c in Sources */,
A769B1EC23E259AE00872273 /* SDL_fillrect.c in Sources */, A769B1EC23E259AE00872273 /* SDL_fillrect.c in Sources */,
@ -8917,6 +9021,7 @@
A7D8B5CA23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */, A7D8B5CA23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */,
A7D8AC1023E2514100DCD162 /* SDL_video.c in Sources */, A7D8AC1023E2514100DCD162 /* SDL_video.c in Sources */,
560572062473687700B46B66 /* SDL_syslocale.m in Sources */, 560572062473687700B46B66 /* SDL_syslocale.m in Sources */,
F3F07D5B269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8AB5623E2514100DCD162 /* SDL_offscreenopengl.c in Sources */, A7D8AB5623E2514100DCD162 /* SDL_offscreenopengl.c in Sources */,
A7D8ACC423E2514100DCD162 /* SDL_uikitmetalview.m in Sources */, A7D8ACC423E2514100DCD162 /* SDL_uikitmetalview.m in Sources */,
A7D8BA5C23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */, A7D8BA5C23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */,
@ -9118,6 +9223,7 @@
A7D8B5CB23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */, A7D8B5CB23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */,
A7D8AC1123E2514100DCD162 /* SDL_video.c in Sources */, A7D8AC1123E2514100DCD162 /* SDL_video.c in Sources */,
560572072473687800B46B66 /* SDL_syslocale.m in Sources */, 560572072473687800B46B66 /* SDL_syslocale.m in Sources */,
F3F07D5C269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8AB5723E2514100DCD162 /* SDL_offscreenopengl.c in Sources */, A7D8AB5723E2514100DCD162 /* SDL_offscreenopengl.c in Sources */,
A7D8ACC523E2514100DCD162 /* SDL_uikitmetalview.m in Sources */, A7D8ACC523E2514100DCD162 /* SDL_uikitmetalview.m in Sources */,
A7D8BA5D23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */, A7D8BA5D23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */,
@ -9274,6 +9380,7 @@
A7D8B3DE23E2514300DCD162 /* SDL_bmp.c in Sources */, A7D8B3DE23E2514300DCD162 /* SDL_bmp.c in Sources */,
75E0915E241EA924004729E1 /* SDL_virtualjoystick.c in Sources */, 75E0915E241EA924004729E1 /* SDL_virtualjoystick.c in Sources */,
A7D8BC0723E2590800DCD162 /* SDL_uikit_main.c in Sources */, A7D8BC0723E2590800DCD162 /* SDL_uikit_main.c in Sources */,
F3F07D5E269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8B97223E2514400DCD162 /* SDL_stdlib.c in Sources */, A7D8B97223E2514400DCD162 /* SDL_stdlib.c in Sources */,
A7D8B79E23E2514400DCD162 /* SDL_dummyaudio.c in Sources */, A7D8B79E23E2514400DCD162 /* SDL_dummyaudio.c in Sources */,
A7D8B3A823E2514200DCD162 /* SDL_fillrect.c in Sources */, A7D8B3A823E2514200DCD162 /* SDL_fillrect.c in Sources */,
@ -9521,6 +9628,7 @@
A7D8AEA623E2514100DCD162 /* SDL_cocoawindow.m in Sources */, A7D8AEA623E2514100DCD162 /* SDL_cocoawindow.m in Sources */,
A7D8B43A23E2514300DCD162 /* SDL_sysmutex.c in Sources */, A7D8B43A23E2514300DCD162 /* SDL_sysmutex.c in Sources */,
A7D8AAB023E2514100DCD162 /* SDL_syshaptic.c in Sources */, A7D8AAB023E2514100DCD162 /* SDL_syshaptic.c in Sources */,
F3F07D5A269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8BBD523E2574800DCD162 /* SDL_uikitclipboard.m in Sources */, A7D8BBD523E2574800DCD162 /* SDL_uikitclipboard.m in Sources */,
A7D8B5C923E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */, A7D8B5C923E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */,
A7D8AC0F23E2514100DCD162 /* SDL_video.c in Sources */, A7D8AC0F23E2514100DCD162 /* SDL_video.c in Sources */,
@ -9722,6 +9830,7 @@
A7D8BB8423E2514500DCD162 /* SDL_quit.c in Sources */, A7D8BB8423E2514500DCD162 /* SDL_quit.c in Sources */,
A7D8AEA923E2514100DCD162 /* SDL_cocoawindow.m in Sources */, A7D8AEA923E2514100DCD162 /* SDL_cocoawindow.m in Sources */,
A7D8B43D23E2514300DCD162 /* SDL_sysmutex.c in Sources */, A7D8B43D23E2514300DCD162 /* SDL_sysmutex.c in Sources */,
F3F07D5D269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8AAB323E2514100DCD162 /* SDL_syshaptic.c in Sources */, A7D8AAB323E2514100DCD162 /* SDL_syshaptic.c in Sources */,
A7D8B5CC23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */, A7D8B5CC23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */,
A7D8AC1223E2514100DCD162 /* SDL_video.c in Sources */, A7D8AC1223E2514100DCD162 /* SDL_video.c in Sources */,
@ -9923,6 +10032,7 @@
A7D8B43F23E2514300DCD162 /* SDL_sysmutex.c in Sources */, A7D8B43F23E2514300DCD162 /* SDL_sysmutex.c in Sources */,
A7D8AAB523E2514100DCD162 /* SDL_syshaptic.c in Sources */, A7D8AAB523E2514100DCD162 /* SDL_syshaptic.c in Sources */,
A7D8B5CE23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */, A7D8B5CE23E2514300DCD162 /* SDL_rwopsbundlesupport.m in Sources */,
F3F07D60269640160074468B /* SDL_hidapi_luna.c in Sources */,
A7D8AC1423E2514100DCD162 /* SDL_video.c in Sources */, A7D8AC1423E2514100DCD162 /* SDL_video.c in Sources */,
A7D8AB5A23E2514100DCD162 /* SDL_offscreenopengl.c in Sources */, A7D8AB5A23E2514100DCD162 /* SDL_offscreenopengl.c in Sources */,
A7D8ACC823E2514100DCD162 /* SDL_uikitmetalview.m in Sources */, A7D8ACC823E2514100DCD162 /* SDL_uikitmetalview.m in Sources */,
@ -9953,6 +10063,22 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
F3CB93F026B5E0A400B9C980 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F3CB963A26B5E10A00B9C980 /* SDL_uikit_main.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
F3CB956E26B5E0A600B9C980 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
F3CB963B26B5E14400B9C980 /* SDL_uikit_main.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
@ -9994,7 +10120,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEPLOYMENT_POSTPROCESSING = YES; DEPLOYMENT_POSTPROCESSING = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_COMPATIBILITY_VERSION = 1.0.0;
DYLIB_CURRENT_VERSION = 15.1.0; DYLIB_CURRENT_VERSION = 17.0.0;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_ALTIVEC_EXTENSIONS = YES; GCC_ALTIVEC_EXTENSIONS = YES;
@ -10035,6 +10161,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO; CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.0.16;
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
}; };
name = Release; name = Release;
@ -10077,7 +10204,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0.0; DYLIB_COMPATIBILITY_VERSION = 1.0.0;
DYLIB_CURRENT_VERSION = 15.1.0; DYLIB_CURRENT_VERSION = 17.0.0;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
@ -10119,6 +10246,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CLANG_LINK_OBJC_RUNTIME = NO; CLANG_LINK_OBJC_RUNTIME = NO;
MARKETING_VERSION = 2.0.16;
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
}; };
name = Debug; name = Debug;
@ -10146,7 +10274,6 @@
"$(inherited)", "$(inherited)",
"$(SDKROOT)/System/iOSSupport/System/Library/Frameworks", "$(SDKROOT)/System/iOSSupport/System/Library/Frameworks",
); );
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_SYMBOLS_PRIVATE_EXTERN = YES;
INSTALL_PATH = "@rpath"; INSTALL_PATH = "@rpath";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -10163,7 +10290,6 @@
"$(inherited)", "$(inherited)",
"$(SDKROOT)/System/iOSSupport/System/Library/Frameworks", "$(SDKROOT)/System/iOSSupport/System/Library/Frameworks",
); );
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_SYMBOLS_PRIVATE_EXTERN = YES;
INSTALL_PATH = "@rpath"; INSTALL_PATH = "@rpath";
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -10176,7 +10302,6 @@
buildSettings = { buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
EXECUTABLE_PREFIX = lib; EXECUTABLE_PREFIX = lib;
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_SYMBOLS_PRIVATE_EXTERN = YES;
INSTALL_PATH = "@rpath"; INSTALL_PATH = "@rpath";
SDKROOT = appletvos; SDKROOT = appletvos;
@ -10188,7 +10313,6 @@
buildSettings = { buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
EXECUTABLE_PREFIX = lib; EXECUTABLE_PREFIX = lib;
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_SYMBOLS_PRIVATE_EXTERN = YES;
INSTALL_PATH = "@rpath"; INSTALL_PATH = "@rpath";
SDKROOT = appletvos; SDKROOT = appletvos;
@ -10328,7 +10452,6 @@
"$(inherited)", "$(inherited)",
"$(SDKROOT)/System/iOSSupport/System/Library/Frameworks", "$(SDKROOT)/System/iOSSupport/System/Library/Frameworks",
); );
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
SDKROOT = iphoneos; SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2,6"; TARGETED_DEVICE_FAMILY = "1,2,6";
@ -10344,7 +10467,6 @@
"$(inherited)", "$(inherited)",
"$(SDKROOT)/System/iOSSupport/System/Library/Frameworks", "$(SDKROOT)/System/iOSSupport/System/Library/Frameworks",
); );
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
SDKROOT = iphoneos; SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2,6"; TARGETED_DEVICE_FAMILY = "1,2,6";
@ -10356,7 +10478,6 @@
buildSettings = { buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO; CLANG_LINK_OBJC_RUNTIME = NO;
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
SDKROOT = appletvos; SDKROOT = appletvos;
}; };
@ -10367,7 +10488,6 @@
buildSettings = { buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO; CLANG_LINK_OBJC_RUNTIME = NO;
GCC_PREPROCESSOR_DEFINITIONS = "IOS_DYLIB=1";
OTHER_LDFLAGS = "-liconv"; OTHER_LDFLAGS = "-liconv";
SDKROOT = appletvos; SDKROOT = appletvos;
}; };
@ -10413,6 +10533,54 @@
}; };
name = Release; name = Release;
}; };
F3CB94B826B5E0A400B9C980 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
PRODUCT_NAME = SDLmain;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
};
name = Debug;
};
F3CB94B926B5E0A400B9C980 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
PRODUCT_NAME = SDLmain;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
};
name = Release;
};
F3CB963626B5E0A600B9C980 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
PRODUCT_NAME = SDLmain;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
};
name = Debug;
};
F3CB963726B5E0A600B9C980 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_LINK_OBJC_RUNTIME = NO;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
PRODUCT_NAME = SDLmain;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
};
name = Release;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@ -10542,6 +10710,24 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug; defaultConfigurationName = Debug;
}; };
F3CB94B726B5E0A400B9C980 /* Build configuration list for PBXNativeTarget "SDLmain-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F3CB94B826B5E0A400B9C980 /* Debug */,
F3CB94B926B5E0A400B9C980 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
F3CB963526B5E0A600B9C980 /* Build configuration list for PBXNativeTarget "SDLmain-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
F3CB963626B5E0A600B9C980 /* Debug */,
F3CB963726B5E0A600B9C980 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 0867D690FE84028FC02AAC07 /* Project object */; rootObject = 0867D690FE84028FC02AAC07 /* Project object */;

View File

@ -77,6 +77,10 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<!-- Let Android know that we can handle some USB devices and should receive this event -->
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<!-- Drop file event --> <!-- Drop file event -->
<!-- <!--
<intent-filter> <intent-filter>

View File

@ -77,6 +77,10 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
<!-- Let Android know that we can handle some USB devices and should receive this event -->
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<!-- Drop file event --> <!-- Drop file event -->
<!-- <!--
<intent-filter> <intent-filter>

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,9 @@
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2021 Free Software Foundation, Inc. # Copyright 1992-2021 Free Software Foundation, Inc.
timestamp='2021-04-30' # shellcheck disable=SC2006,SC2268 # see below for rationale
timestamp='2021-07-03'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
@ -50,6 +52,13 @@ timestamp='2021-04-30'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification. # It is wrong to echo any other type of specification.
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'` me=`echo "$0" | sed -e 's,.*/,,'`
usage="\ usage="\
@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright 1992-2020 Free Software Foundation, Inc. Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -1165,7 +1174,7 @@ case $cpu-$vendor in
| alphapca5[67] | alpha64pca5[67] \ | alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| amdgcn \ | amdgcn \
| arc | arceb | arc64 \ | arc | arceb | arc32 | arc64 \
| arm | arm[lb]e | arme[lb] | armv* \ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \ | avr | avr32 \
| asmjs \ | asmjs \
@ -1292,15 +1301,15 @@ then
case $basic_os in case $basic_os in
gnu/linux*) gnu/linux*)
kernel=linux kernel=linux
os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
;; ;;
os2-emx) os2-emx)
kernel=os2 kernel=os2
os=`echo $basic_os | sed -e 's|os2-emx|emx|'` os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;; ;;
nto-qnx*) nto-qnx*)
kernel=nto kernel=nto
os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
;; ;;
*-*) *-*)
# shellcheck disable=SC2162 # shellcheck disable=SC2162
@ -1311,11 +1320,11 @@ EOF
# Default OS when just kernel was specified # Default OS when just kernel was specified
nto*) nto*)
kernel=nto kernel=nto
os=`echo $basic_os | sed -e 's|nto|qnx|'` os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
;; ;;
linux*) linux*)
kernel=linux kernel=linux
os=`echo $basic_os | sed -e 's|linux|gnu|'` os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
;; ;;
*) *)
kernel= kernel=
@ -1336,7 +1345,7 @@ case $os in
os=cnk os=cnk
;; ;;
solaris1 | solaris1.*) solaris1 | solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'` os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
;; ;;
solaris) solaris)
os=solaris2 os=solaris2
@ -1365,7 +1374,7 @@ case $os in
os=sco3.2v4 os=sco3.2v4
;; ;;
sco3.2.[4-9]*) sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;; ;;
sco*v* | scout) sco*v* | scout)
# Don't match below # Don't match below
@ -1441,7 +1450,7 @@ case $os in
;; ;;
# Preserve the version number of sinix5. # Preserve the version number of sinix5.
sinix5.*) sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'` os=`echo "$os" | sed -e 's|sinix|sysv|'`
;; ;;
sinix*) sinix*)
os=sysv4 os=sysv4

View File

@ -12,6 +12,7 @@ my $copy_direction = 0;
foreach (@ARGV) { foreach (@ARGV) {
$warn_about_missing = 1, next if $_ eq '--warn-about-missing'; $warn_about_missing = 1, next if $_ eq '--warn-about-missing';
$copy_direction = 1, next if $_ eq '--copy-to-headers'; $copy_direction = 1, next if $_ eq '--copy-to-headers';
$copy_direction = 1, next if $_ eq '--copy-to-header';
$copy_direction = -1, next if $_ eq '--copy-to-wiki'; $copy_direction = -1, next if $_ eq '--copy-to-wiki';
$srcpath = $_, next if not defined $srcpath; $srcpath = $_, next if not defined $srcpath;
$wikipath = $_, next if not defined $wikipath; $wikipath = $_, next if not defined $wikipath;
@ -28,11 +29,15 @@ sub wordwrap_with_bullet_indent { # don't call this directly.
my $str = shift; my $str = shift;
my $retval = ''; my $retval = '';
#print("WORDWRAP BULLET ('$bullet'):\n\n$str\n\n");
# You _can't_ (at least with Pandoc) have a bullet item with a newline in # You _can't_ (at least with Pandoc) have a bullet item with a newline in
# MediaWiki, so _remove_ wrapping! # MediaWiki, so _remove_ wrapping!
if ($wordwrap_mode eq 'mediawiki') { if ($wordwrap_mode eq 'mediawiki') {
$retval = "$bullet$str"; $retval = "$bullet$str";
$retval =~ s/\n/ /gms; $retval =~ s/\n/ /gms;
$retval =~ s/\s+$//gms;
#print("WORDWRAP BULLET DONE:\n\n$retval\n\n");
return "$retval\n"; return "$retval\n";
} }
@ -103,25 +108,38 @@ sub wordwrap {
my $retval = ''; my $retval = '';
while ($str =~ s/(.*?)(\n+\`\`\`.*?\`\`\`\n+|\n+\<syntaxhighlight.*?\<\/syntaxhighlight\>\n+)//ms) { #print("\n\nWORDWRAP:\n\n$str\n\n\n");
$str =~ s/\A\n+//ms;
while ($str =~ s/(.*?)(\`\`\`.*?\`\`\`|\<syntaxhighlight.*?\<\/syntaxhighlight\>)//ms) {
#print("\n\nWORDWRAP BLOCK:\n\n$1\n\n ===\n\n$2\n\n\n");
$retval .= wordwrap_paragraphs($1); # wrap it. $retval .= wordwrap_paragraphs($1); # wrap it.
$retval .= $2; # don't wrap it. $retval .= "$2\n\n"; # don't wrap it.
} }
return $retval . wordwrap_paragraphs($str); # wrap what's left. $retval .= wordwrap_paragraphs($str); # wrap what's left.
$retval =~ s/\n+\Z//ms;
#print("\n\nWORDWRAP DONE:\n\n$retval\n\n\n");
return $retval;
} }
# This assumes you're moving from Markdown (in the Doxygen data) to Wiki, which
sub wikify { # is why the 'md' section is so sparse.
sub wikify_chunk {
my $wikitype = shift; my $wikitype = shift;
my $str = shift; my $str = shift;
my $codelang = shift;
my $code = shift;
#print("\n\nWIKIFY CHUNK:\n\n$str\n\n\n");
if ($wikitype eq 'mediawiki') { if ($wikitype eq 'mediawiki') {
# Convert obvious SDL things to wikilinks. # Convert obvious SDL things to wikilinks.
$str =~ s/\b(SDL_[a-zA-Z0-9_]+)/[[$1]]/gms; $str =~ s/\b(SDL_[a-zA-Z0-9_]+)/[[$1]]/gms;
# Make some Markdown things into MediaWiki... # Make some Markdown things into MediaWiki...
$str =~ s/\`\`\`(c|c++)(.*?)\`\`\`/<syntaxhighlight lang='$1'>$2<\/syntaxhighlight>/gms;
# <code></code> is also popular. :/ # <code></code> is also popular. :/
$str =~ s/\`(.*?)\`/<code>$1<\/code>/gms; $str =~ s/\`(.*?)\`/<code>$1<\/code>/gms;
@ -137,71 +155,55 @@ sub wikify {
# bullets # bullets
$str =~ s/^\- /* /gm; $str =~ s/^\- /* /gm;
if (defined $code) {
$str .= "<syntaxhighlight lang='$codelang'>$code<\/syntaxhighlight>";
}
} elsif ($wikitype eq 'md') { } elsif ($wikitype eq 'md') {
# Convert obvious SDL things to wikilinks. # Convert obvious SDL things to wikilinks.
$str =~ s/\b(SDL_[a-zA-Z0-9_]+)/[$1]($1)/gms; $str =~ s/\b(SDL_[a-zA-Z0-9_]+)/[$1]($1)/gms;
if (defined $code) {
$str .= "```$codelang$code```";
} }
}
#print("\n\nWIKIFY CHUNK DONE:\n\n$str\n\n\n");
return $str; return $str;
} }
sub dewikify { sub wikify {
my $wikitype = shift; my $wikitype = shift;
my $str = shift; my $str = shift;
return '' if not defined $str; my $retval = '';
my @lines = split /\n/, $str;
return '' if scalar(@lines) == 0; #print("WIKIFY WHOLE:\n\n$str\n\n\n");
while ($str =~ s/\A(.*?)\`\`\`(c\+\+|c)(.*?)\`\`\`//ms) {
$retval .= wikify_chunk($wikitype, $1, $2, $3);
}
$retval .= wikify_chunk($wikitype, $str, undef, undef);
#print("WIKIFY WHOLE DONE:\n\n$retval\n\n\n");
return $retval;
}
sub dewikify_chunk {
my $wikitype = shift;
my $str = shift;
my $codelang = shift;
my $code = shift;
#print("\n\nDEWIKIFY CHUNK:\n\n$str\n\n\n");
my $iwikitype = 0;
if ($wikitype eq 'mediawiki') { if ($wikitype eq 'mediawiki') {
$iwikitype = 1;
} elsif ($wikitype eq 'md') {
$iwikitype = 2;
} else {
die("Unexpected wikitype '$wikitype'\n");
}
while (1) {
my $l = shift @lines;
last if not defined $l;
chomp($l);
$l =~ s/\A\s*//;
$l =~ s/\s*\Z//;
next if ($l eq '');
next if ($iwikitype == 1) and ($l =~ /\A\= .*? \=\Z/);
next if ($iwikitype == 1) and ($l =~ /\A\=\= .*? \=\=\Z/);
next if ($iwikitype == 2) and ($l =~ /\A\#\# /);
unshift @lines, $l;
last;
}
while (1) {
my $l = pop @lines;
last if not defined $l;
chomp($l);
$l =~ s/\A\s*//;
$l =~ s/\s*\Z//;
next if ($l eq '');
push @lines, $l;
last;
}
$str = '';
foreach (@lines) {
chomp;
s/\A\s*//;
s/\s*\Z//;
$str .= "$_\n";
}
if ($iwikitype == 1) { #($wikitype eq 'mediawiki')
# Doxygen supports Markdown (and it just simply looks better than MediaWiki # Doxygen supports Markdown (and it just simply looks better than MediaWiki
# when looking at the raw headers, so do some conversions here as necessary. # when looking at the raw headers), so do some conversions here as necessary.
$str =~ s/\[\[(SDL_[a-zA-Z0-9_]+)\]\]/$1/gms; # Dump obvious wikilinks. $str =~ s/\[\[(SDL_[a-zA-Z0-9_]+)\]\]/$1/gms; # Dump obvious wikilinks.
# convert mediawiki syntax highlighting to Markdown backticks.
$str =~ s/\<syntaxhighlight lang='?(.*?)'?>(.*?)<\/syntaxhighlight>/```$1$2```/gms;
# <code></code> is also popular. :/ # <code></code> is also popular. :/
$str =~ s/\<code>(.*?)<\/code>/`$1`/gms; $str =~ s/\<code>(.*?)<\/code>/`$1`/gms;
@ -218,9 +220,36 @@ sub dewikify {
$str =~ s/^\* /- /gm; $str =~ s/^\* /- /gm;
} }
if (defined $code) {
$str .= "```$codelang$code```";
}
#print("\n\nDEWIKIFY CHUNK DONE:\n\n$str\n\n\n");
return $str; return $str;
} }
sub dewikify {
my $wikitype = shift;
my $str = shift;
return '' if not defined $str;
#print("DEWIKIFY WHOLE:\n\n$str\n\n\n");
$str =~ s/\A[\s\n]*\= .*? \=\s*?\n+//ms;
$str =~ s/\A[\s\n]*\=\= .*? \=\=\s*?\n+//ms;
my $retval = '';
while ($str =~ s/\A(.*?)<syntaxhighlight lang='?(.*?)'?>(.*?)<\/syntaxhighlight\>//ms) {
$retval .= dewikify_chunk($wikitype, $1, $2, $3);
}
$retval .= dewikify_chunk($wikitype, $str, undef, undef);
#print("DEWIKIFY WHOLE DONE:\n\n$retval\n\n\n");
return $retval;
}
sub usage { sub usage {
die("USAGE: $0 <source code git clone path> <wiki git clone path> [--copy-to-headers|--copy-to-wiki] [--warn-about-missing]\n\n"); die("USAGE: $0 <source code git clone path> <wiki git clone path> [--copy-to-headers|--copy-to-wiki] [--warn-about-missing]\n\n");
} }
@ -266,7 +295,7 @@ while (readdir(DH)) {
while (<FH>) { while (<FH>) {
chomp; chomp;
if (not /\A\/\*\*/) { # not doxygen comment start? if (not /\A\/\*\*\s*\Z/) { # not doxygen comment start?
push @contents, $_; push @contents, $_;
next; next;
} }
@ -278,9 +307,24 @@ while (readdir(DH)) {
chomp; chomp;
push @templines, $_; push @templines, $_;
last if /\A\s*\*\/\Z/; last if /\A\s*\*\/\Z/;
if (s/\A\s*\*\s*\`\`\`/```/) { # this is a hack, but a lot of other code relies on the whitespace being trimmed, but we can't trim it in code blocks...
$str .= "$_\n";
while (<FH>) {
chomp;
push @templines, $_;
s/\A\s*\*\s?//;
if (s/\A\s*\`\`\`/```/) {
$str .= "$_\n";
last;
} else {
$str .= "$_\n";
}
}
} else {
s/\A\s*\*\s*//; s/\A\s*\*\s*//;
$str .= "$_\n"; $str .= "$_\n";
} }
}
my $decl = <FH>; my $decl = <FH>;
chomp($decl); chomp($decl);
@ -339,6 +383,7 @@ while (readdir(DH)) {
} }
#print("$fn:\n$str\n\n"); #print("$fn:\n$str\n\n");
$headerfuncs{$fn} = $str; $headerfuncs{$fn} = $str;
$headerdecls{$fn} = $decl; $headerdecls{$fn} = $decl;
$headerfuncslocation{$fn} = $dent; $headerfuncslocation{$fn} = $dent;
@ -422,8 +467,7 @@ while (readdir(DH)) {
die("Unexpected wiki file type. Fixme!\n"); die("Unexpected wiki file type. Fixme!\n");
} }
my $str = ($current_section eq 'Code Examples') ? $orig : $_; $sections{$current_section} .= "$orig\n";
$sections{$current_section} .= "$str\n";
} }
close(FH); close(FH);
@ -574,6 +618,7 @@ if ($copy_direction == 1) { # --copy-to-headers
my @desclines = split /\n/, $v; my @desclines = split /\n/, $v;
foreach (@desclines) { foreach (@desclines) {
s/\A(\:|\* )//; s/\A(\:|\* )//;
s/\(\)\Z//; # Convert "SDL_Func()" to "SDL_Func"
$str .= "\\sa $_\n"; $str .= "\\sa $_\n";
} }
} }
@ -644,13 +689,24 @@ if ($copy_direction == 1) { # --copy-to-headers
@doxygenlines = (@briefsplit, @doxygenlines); @doxygenlines = (@briefsplit, @doxygenlines);
my $remarks = ''; my $remarks = '';
# !!! FIXME: wordwrap and wikify might handle this, now.
while (@doxygenlines) { while (@doxygenlines) {
last if $doxygenlines[0] =~ /\A\\/; # some sort of doxygen command, assume we're past the general remarks. last if $doxygenlines[0] =~ /\A\\/; # some sort of doxygen command, assume we're past the general remarks.
my $l = shift @doxygenlines; my $l = shift @doxygenlines;
if ($l =~ /\A\`\`\`/) { # syntax highlighting, don't reformat.
$remarks .= "$l\n";
while ((@doxygenlines) && (not $l =~ /\`\`\`\Z/)) {
$l = shift @doxygenlines;
$remarks .= "$l\n";
}
} else {
$l =~ s/\A\s*//; $l =~ s/\A\s*//;
$l =~ s/\s*\Z//; $l =~ s/\s*\Z//;
$remarks .= "$l\n"; $remarks .= "$l\n";
} }
}
#print("REMARKS:\n\n $remarks\n\n");
$remarks = wordwrap(wikify($wikitype, $remarks)); $remarks = wordwrap(wikify($wikitype, $remarks));
$remarks =~ s/\A\s*//; $remarks =~ s/\A\s*//;
@ -683,10 +739,15 @@ if ($copy_direction == 1) { # --copy-to-headers
my $subline = $doxygenlines[0]; my $subline = $doxygenlines[0];
$subline =~ s/\A\s*//; $subline =~ s/\A\s*//;
last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing. last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing.
last if $subline eq ''; # empty line, this param is done.
shift @doxygenlines; # dump this line from the array; we're using it. shift @doxygenlines; # dump this line from the array; we're using it.
if ($subline eq '') { # empty line, make sure it keeps the newline char.
$desc .= "\n";
} else {
$desc .= " $subline"; $desc .= " $subline";
} }
}
$desc =~ s/[\s\n]+\Z//ms;
# We need to know the length of the longest string to make Markdown tables, so we just store these off until everything is parsed. # We need to know the length of the longest string to make Markdown tables, so we just store these off until everything is parsed.
push @params, $arg; push @params, $arg;
@ -698,24 +759,33 @@ if ($copy_direction == 1) { # --copy-to-headers
my $subline = $doxygenlines[0]; my $subline = $doxygenlines[0];
$subline =~ s/\A\s*//; $subline =~ s/\A\s*//;
last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing. last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing.
last if $subline eq ''; # empty line, this param is done.
shift @doxygenlines; # dump this line from the array; we're using it. shift @doxygenlines; # dump this line from the array; we're using it.
$desc .= wikify($wikitype, " $subline"); if ($subline eq '') { # empty line, make sure it keeps the newline char.
$desc .= "\n";
} else {
$desc .= " $subline";
} }
$sections{'Return Value'} = wordwrap("$retstr $desc") . "\n"; }
$desc =~ s/[\s\n]+\Z//ms;
$sections{'Return Value'} = wordwrap("$retstr " . wikify($wikitype, $desc)) . "\n";
} elsif ($l =~ /\A\\since\s+(.*)\Z/) { } elsif ($l =~ /\A\\since\s+(.*)\Z/) {
my $desc = $1; my $desc = $1;
while (@doxygenlines) { while (@doxygenlines) {
my $subline = $doxygenlines[0]; my $subline = $doxygenlines[0];
$subline =~ s/\A\s*//; $subline =~ s/\A\s*//;
last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing. last if $subline =~ /\A\\/; # some sort of doxygen command, assume we're past this thing.
last if $subline eq ''; # empty line, this param is done.
shift @doxygenlines; # dump this line from the array; we're using it. shift @doxygenlines; # dump this line from the array; we're using it.
$desc .= wikify($wikitype, " $subline"); if ($subline eq '') { # empty line, make sure it keeps the newline char.
$desc .= "\n";
} else {
$desc .= " $subline";
} }
$sections{'Version'} = wordwrap($desc) . "\n"; }
$desc =~ s/[\s\n]+\Z//ms;
$sections{'Version'} = wordwrap(wikify($wikitype, $desc)) . "\n";
} elsif ($l =~ /\A\\sa\s+(.*)\Z/) { } elsif ($l =~ /\A\\sa\s+(.*)\Z/) {
my $sa = $1; my $sa = $1;
$sa =~ s/\(\)\Z//; # Convert "SDL_Func()" to "SDL_Func"
$sections{'Related Functions'} = '' if not defined $sections{'Related Functions'}; $sections{'Related Functions'} = '' if not defined $sections{'Related Functions'};
if ($wikitype eq 'mediawiki') { if ($wikitype eq 'mediawiki') {
$sections{'Related Functions'} .= ":[[$sa]]\n"; $sections{'Related Functions'} .= ":[[$sa]]\n";

View File

@ -39,7 +39,7 @@
# #
# Base version of SDL, used for packaging purposes # Base version of SDL, used for packaging purposes
$SDLVersion = "2.0.15" $SDLVersion = "2.0.16"
# Gets the .bat file that sets up an MSBuild environment, given one of # Gets the .bat file that sets up an MSBuild environment, given one of
# Visual Studio's, "PlatformToolset"s. # Visual Studio's, "PlatformToolset"s.

View File

@ -697,6 +697,27 @@ macro(CheckWayland)
set(EXTRA_LIBS ${WAYLAND_LIBRARIES} ${EXTRA_LIBS}) set(EXTRA_LIBS ${WAYLAND_LIBRARIES} ${EXTRA_LIBS})
endif() endif()
if(WAYLAND_LIBDECOR)
pkg_check_modules(LIBDECOR libdecor-0)
if(LIBDECOR_FOUND)
set(HAVE_WAYLAND_LIBDECOR TRUE)
set(HAVE_LIBDECOR_H 1)
link_directories(${LIBDECOR_LIBRARY_DIRS})
include_directories(${LIBDECOR_INCLUDE_DIRS})
if(LIBDECOR_SHARED)
if(NOT HAVE_DLOPEN)
message_warn("You must have SDL_LoadObject() support for dynamic libdecor loading")
else()
set(HAVE_LIBDECOR_SHARED TRUE)
FindLibraryAndSONAME(decor-0)
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR "\"${DECOR_0_LIB_SONAME}\"")
endif()
else()
set(EXTRA_LIBS ${LIBDECOR_LIBRARIES} ${EXTRA_LIBS})
endif()
endif()
endif()
set(SDL_VIDEO_DRIVER_WAYLAND 1) set(SDL_VIDEO_DRIVER_WAYLAND 1)
endif() endif()
endif() endif()

View File

@ -690,6 +690,8 @@ ALSA_CFLAGS
POW_LIB POW_LIB
LIBOBJS LIBOBJS
ALLOCA ALLOCA
LIBTOOLLINKERTAG
LINKER
PKG_CONFIG_LIBDIR PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH PKG_CONFIG_PATH
PKG_CONFIG PKG_CONFIG
@ -861,6 +863,8 @@ enable_arm_neon
enable_video_wayland enable_video_wayland
enable_video_wayland_qt_touch enable_video_wayland_qt_touch
enable_wayland_shared enable_wayland_shared
enable_libdecor
enable_libdecor_shared
enable_video_rpi enable_video_rpi
enable_video_x11 enable_video_x11
with_x with_x
@ -1640,6 +1644,10 @@ Optional Features:
QtWayland server support for Wayland video driver QtWayland server support for Wayland video driver
[default=yes] [default=yes]
--enable-wayland-shared dynamically load Wayland support [default=maybe] --enable-wayland-shared dynamically load Wayland support [default=maybe]
--enable-libdecor use libdecor for Wayland client-side decorations
[default=yes]
--enable-libdecor-shared
dynamically load libdecor [default=yes]
--enable-video-rpi use Raspberry Pi video driver [default=yes] --enable-video-rpi use Raspberry Pi video driver [default=yes]
--enable-video-x11 use X11 video driver [default=yes] --enable-video-x11 use X11 video driver [default=yes]
--enable-x11-shared dynamically load X11 support [default=maybe] --enable-x11-shared dynamically load X11 support [default=maybe]
@ -2832,9 +2840,9 @@ orig_CFLAGS="$CFLAGS"
# #
SDL_MAJOR_VERSION=2 SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=0 SDL_MINOR_VERSION=0
SDL_MICRO_VERSION=15 SDL_MICRO_VERSION=16
SDL_INTERFACE_AGE=1 SDL_INTERFACE_AGE=0
SDL_BINARY_AGE=15 SDL_BINARY_AGE=16
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
@ -16010,6 +16018,19 @@ case "$host" in
;; ;;
esac esac
case "$host" in
*-*-haiku*)
LINKER='$(CXX)'
LIBTOOLLINKERTAG='CXX'
;;
*)
LINKER='$(CC)'
LIBTOOLLINKERTAG='CC'
;;
esac
if test x$srcdir != x.; then if test x$srcdir != x.; then
INCLUDE="-Iinclude $INCLUDE" INCLUDE="-Iinclude $INCLUDE"
elif test -d .git; then elif test -d .git; then
@ -17826,14 +17847,27 @@ $as_echo "$have_gcc_sse3" >&6; }
fi fi
fi fi
ac_fn_c_check_header_mongrel "$LINENO" "immintrin.h" "ac_cv_header_immintrin_h" "$ac_includes_default" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for immintrin.h" >&5
if test "x$ac_cv_header_immintrin_h" = xyes; then : $as_echo_n "checking for immintrin.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <immintrin.h>
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
have_immintrin_h_hdr=yes have_immintrin_h_hdr=yes
else else
have_immintrin_h_hdr=no have_immintrin_h_hdr=no
fi fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_immintrin_h_hdr" >&5
$as_echo "$have_immintrin_h_hdr" >&6; }
if test x$have_immintrin_h_hdr = xyes; then if test x$have_immintrin_h_hdr = xyes; then
$as_echo "#define HAVE_IMMINTRIN_H 1" >>confdefs.h $as_echo "#define HAVE_IMMINTRIN_H 1" >>confdefs.h
@ -19959,6 +19993,63 @@ _ACEOF
SUMMARY_video="${SUMMARY_video} wayland" SUMMARY_video="${SUMMARY_video} wayland"
fi fi
have_video=yes have_video=yes
# Check whether --enable-libdecor was given.
if test "${enable_libdecor+set}" = set; then :
enableval=$enable_libdecor;
else
enable_libdecor=yes
fi
if test x$enable_libdecor = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libdecor support" >&5
$as_echo_n "checking for libdecor support... " >&6; }
if $PKG_CONFIG --exists libdecor-0; then :
video_libdecor=yes
else
video_libdecor=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_libdecor" >&5
$as_echo "$video_libdecor" >&6; }
if test x$video_libdecor = xyes; then
EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags libdecor-0`"
$as_echo "#define HAVE_LIBDECOR_H 1" >>confdefs.h
# Check whether --enable-libdecor-shared was given.
if test "${enable_libdecor_shared+set}" = set; then :
enableval=$enable_libdecor_shared;
else
enable_libdecor_shared=yes
fi
if test x$enable_wayland_shared != xyes; then
enable_libdecor_shared=no
fi
decor_lib=`find_lib "libdecor-0.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`
if test x$have_loadso != xyes && \
test x$enable_libdecor_shared = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic libdecor loading" >&5
$as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic libdecor loading" >&2;}
fi
if test x$have_loadso = xyes && \
test x$enable_libdecor_shared = xyes && test x$decor_lib != x; then
echo "-- dynamic libdecor -> $decor_lib"
cat >>confdefs.h <<_ACEOF
#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR "$decor_lib"
_ACEOF
else
EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs libdecor-0`"
fi
fi
fi
fi fi
fi fi
} }
@ -22227,8 +22318,8 @@ $as_echo "#define SDL_VIDEO_DRIVER_KMSDRM 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kmsdrm dynamic loading support" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kmsdrm dynamic loading support" >&5
$as_echo_n "checking for kmsdrm dynamic loading support... " >&6; } $as_echo_n "checking for kmsdrm dynamic loading support... " >&6; }
kmsdrm_shared=no kmsdrm_shared=no
drm_lib=`find_lib "libdrm.so.*" "$DRM_LIBS"` drm_lib=`find_lib "libdrm.so.*" "$LIBDRM_LIBS"`
gbm_lib=`find_lib "libgbm.so.*" "$DRM_LIBS"` gbm_lib=`find_lib "libgbm.so.*" "$LIBGBM_LIBS"`
if test x$have_loadso != xyes && \ if test x$have_loadso != xyes && \
test x$enable_kmsdrm_shared = xyes; then test x$enable_kmsdrm_shared = xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic kmsdrm loading" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic kmsdrm loading" >&5
@ -22259,6 +22350,10 @@ _ACEOF
fi fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kmsdrm_shared" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kmsdrm_shared" >&5
$as_echo "$kmsdrm_shared" >&6; } $as_echo "$kmsdrm_shared" >&6; }
if test x$kmsdrm_shared = xyes; then
echo "-- dynamic libdrm -> $drm_lib"
echo "-- dynamic libgmb -> $gbm_lib"
fi
have_video=yes have_video=yes
fi fi
fi fi
@ -24534,10 +24629,6 @@ fi
enable_hidapi_libusb=yes enable_hidapi_libusb=yes
require_hidapi_libusb=yes require_hidapi_libusb=yes
;; ;;
# RAWINPUT is only available on Win32, but can be enabled if HIDAPI is
*-*-cygwin* | *-*-mingw*)
enable_joystick_rawinput=yes
;;
esac esac
hidapi_support=yes hidapi_support=yes
@ -24633,11 +24724,6 @@ fi
$as_echo "#define SDL_JOYSTICK_HIDAPI 1" >>confdefs.h $as_echo "#define SDL_JOYSTICK_HIDAPI 1" >>confdefs.h
if test x$enable_joystick_rawinput = xyes; then
$as_echo "#define SDL_JOYSTICK_RAWINPUT 1" >>confdefs.h
fi
EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi" EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi"
SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c" SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c"
SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c" SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c"
@ -25217,6 +25303,9 @@ $as_echo "#define SDL_AUDIO_DRIVER_WASAPI 1" >>confdefs.h
fi fi
# Set up files for the joystick library # Set up files for the joystick library
if test x$enable_joystick = xyes; then if test x$enable_joystick = xyes; then
$as_echo "#define SDL_JOYSTICK_RAWINPUT 1" >>confdefs.h
if test x$have_dinput = xyes -o x$have_xinput = xyes; then if test x$have_dinput = xyes -o x$have_xinput = xyes; then
if test x$have_xinput = xyes; then if test x$have_xinput = xyes; then
@ -25324,7 +25413,8 @@ $as_echo "#define SDL_LOADSO_WINDOWS 1" >>confdefs.h
else else
LIBUUID=-luuid LIBUUID=-luuid
fi fi
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion $LIBUUID -static-libgcc" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion $LIBUUID"
BUILD_LDFLAGS="$BUILD_LDFLAGS -Wc,-static-libgcc"
# The Windows platform requires special setup # The Windows platform requires special setup
VERSION_SOURCES="$srcdir/src/main/windows/*.rc" VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c" SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
@ -25902,6 +25992,7 @@ if test x$video_wayland = xyes; then
printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) \\$(WAYLAND_SCANNER_CODE_MODE) \\$< \\$@" ;\ printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) \\$(WAYLAND_SCANNER_CODE_MODE) \\$< \\$@" ;\
echo ;\ echo ;\
printf '%s\n' "\\$(objects)/\$p-protocol.lo: \\$(gen)/\$p-protocol.c \\$(gen)/\$p-client-protocol.h" ;\ printf '%s\n' "\\$(objects)/\$p-protocol.lo: \\$(gen)/\$p-protocol.c \\$(gen)/\$p-client-protocol.h" ;\
printf '%s\n' " @\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(objects)" ;\
printf '%s\n' " \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@" ;\ printf '%s\n' " \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@" ;\
done ;\ done ;\
echo ;\ echo ;\
@ -26103,7 +26194,6 @@ if test x$WARN_ABOUT_ARM_SIMD_ASM_MIT = xyes; then
SUMMARY="${SUMMARY}configure script with:\n" SUMMARY="${SUMMARY}configure script with:\n"
SUMMARY="${SUMMARY}\n --disable-arm-simd\n" SUMMARY="${SUMMARY}\n --disable-arm-simd\n"
fi fi
if test x$WARN_ABOUT_ARM_NEON_ASM_MIT = xyes; then if test x$WARN_ABOUT_ARM_NEON_ASM_MIT = xyes; then
SUMMARY="${SUMMARY}\nSDL is being built with ARM NEON optimizations, which\n" SUMMARY="${SUMMARY}\nSDL is being built with ARM NEON optimizations, which\n"
SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n" SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n"

View File

@ -22,9 +22,9 @@ dnl Set various version strings - taken gratefully from the GTk sources
# #
SDL_MAJOR_VERSION=2 SDL_MAJOR_VERSION=2
SDL_MINOR_VERSION=0 SDL_MINOR_VERSION=0
SDL_MICRO_VERSION=15 SDL_MICRO_VERSION=16
SDL_INTERFACE_AGE=1 SDL_INTERFACE_AGE=0
SDL_BINARY_AGE=15 SDL_BINARY_AGE=16
SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION
AC_SUBST(SDL_MAJOR_VERSION) AC_SUBST(SDL_MAJOR_VERSION)
@ -81,6 +81,20 @@ case "$host" in
;; ;;
esac esac
dnl use CXX for linker on Haiku
case "$host" in
*-*-haiku*)
LINKER='$(CXX)'
LIBTOOLLINKERTAG='CXX'
;;
*)
LINKER='$(CC)'
LIBTOOLLINKERTAG='CC'
;;
esac
AC_SUBST(LINKER)
AC_SUBST(LIBTOOLLINKERTAG)
if test x$srcdir != x.; then if test x$srcdir != x.; then
INCLUDE="-Iinclude $INCLUDE" INCLUDE="-Iinclude $INCLUDE"
elif test -d .git; then elif test -d .git; then
@ -729,9 +743,10 @@ if test x$enable_assembly = xyes; then
fi fi
fi fi
AC_CHECK_HEADER(immintrin.h, AC_MSG_CHECKING(for immintrin.h)
have_immintrin_h_hdr=yes, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <immintrin.h>]])],
have_immintrin_h_hdr=no) [have_immintrin_h_hdr=yes],[have_immintrin_h_hdr=no])
AC_MSG_RESULT($have_immintrin_h_hdr)
if test x$have_immintrin_h_hdr = xyes; then if test x$have_immintrin_h_hdr = xyes; then
AC_DEFINE(HAVE_IMMINTRIN_H, 1, [ ]) AC_DEFINE(HAVE_IMMINTRIN_H, 1, [ ])
fi fi
@ -1540,7 +1555,7 @@ CheckWayland()
[AS_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [default=maybe]])], [AS_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [default=maybe]])],
, enable_wayland_shared=maybe) , enable_wayland_shared=maybe)
dnl FIXME: Do BSD and OS X need special cases? dnl FIXME: Do BSD and OS X need special cases?
case "$host" in case "$host" in
*) *)
wayland_client_lib=[`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] wayland_client_lib=[`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`]
@ -1583,6 +1598,45 @@ CheckWayland()
SUMMARY_video="${SUMMARY_video} wayland" SUMMARY_video="${SUMMARY_video} wayland"
fi fi
have_video=yes have_video=yes
dnl See if libdecor is available
AC_ARG_ENABLE(libdecor,
[AS_HELP_STRING([--enable-libdecor], [use libdecor for Wayland client-side decorations [default=yes]])],
, enable_libdecor=yes)
if test x$enable_libdecor = xyes; then
AC_MSG_CHECKING(for libdecor support)
AS_IF([$PKG_CONFIG --exists libdecor-0],
[video_libdecor=yes],
[video_libdecor=no])
AC_MSG_RESULT($video_libdecor)
if test x$video_libdecor = xyes; then
EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags libdecor-0`"
AC_DEFINE(HAVE_LIBDECOR_H, 1, [ ])
AC_ARG_ENABLE(libdecor-shared,
[AS_HELP_STRING([--enable-libdecor-shared], [dynamically load libdecor [default=yes]])],
, enable_libdecor_shared=yes)
if test x$enable_wayland_shared != xyes; then
enable_libdecor_shared=no
fi
decor_lib=[`find_lib "libdecor-0.so.*" "" | sed 's/.*\/\(.*\)/\1/; q'`]
if test x$have_loadso != xyes && \
test x$enable_libdecor_shared = xyes; then
AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic libdecor loading])
fi
if test x$have_loadso = xyes && \
test x$enable_libdecor_shared = xyes && test x$decor_lib != x; then
echo "-- dynamic libdecor -> $decor_lib"
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR, "$decor_lib", [ ])
else
EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs libdecor-0`"
fi
fi
fi
fi fi
fi fi
} }
@ -2221,8 +2275,8 @@ CheckKMSDRM()
AC_MSG_CHECKING(for kmsdrm dynamic loading support) AC_MSG_CHECKING(for kmsdrm dynamic loading support)
kmsdrm_shared=no kmsdrm_shared=no
drm_lib=[`find_lib "libdrm.so.*" "$DRM_LIBS"`] drm_lib=[`find_lib "libdrm.so.*" "$LIBDRM_LIBS"`]
gbm_lib=[`find_lib "libgbm.so.*" "$DRM_LIBS"`] gbm_lib=[`find_lib "libgbm.so.*" "$LIBGBM_LIBS"`]
if test x$have_loadso != xyes && \ if test x$have_loadso != xyes && \
test x$enable_kmsdrm_shared = xyes; then test x$enable_kmsdrm_shared = xyes; then
AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic kmsdrm loading]) AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic kmsdrm loading])
@ -2239,6 +2293,10 @@ CheckKMSDRM()
SUMMARY_video="${SUMMARY_video} kmsdrm" SUMMARY_video="${SUMMARY_video} kmsdrm"
fi fi
AC_MSG_RESULT($kmsdrm_shared) AC_MSG_RESULT($kmsdrm_shared)
if test x$kmsdrm_shared = xyes; then
echo "-- dynamic libdrm -> $drm_lib"
echo "-- dynamic libgmb -> $gbm_lib"
fi
have_video=yes have_video=yes
fi fi
fi fi
@ -3348,10 +3406,6 @@ CheckHIDAPI()
enable_hidapi_libusb=yes enable_hidapi_libusb=yes
require_hidapi_libusb=yes require_hidapi_libusb=yes
;; ;;
# RAWINPUT is only available on Win32, but can be enabled if HIDAPI is
*-*-cygwin* | *-*-mingw*)
enable_joystick_rawinput=yes
;;
esac esac
hidapi_support=yes hidapi_support=yes
@ -3368,9 +3422,6 @@ CheckHIDAPI()
if test x$hidapi_support = xyes; then if test x$hidapi_support = xyes; then
AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ]) AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ])
if test x$enable_joystick_rawinput = xyes; then
AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
fi
EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi" EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi"
SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c" SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c"
SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c" SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c"
@ -3796,6 +3847,7 @@ case "$host" in
fi fi
# Set up files for the joystick library # Set up files for the joystick library
if test x$enable_joystick = xyes; then if test x$enable_joystick = xyes; then
AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
if test x$have_dinput = xyes -o x$have_xinput = xyes; then if test x$have_dinput = xyes -o x$have_xinput = xyes; then
if test x$have_xinput = xyes; then if test x$have_xinput = xyes; then
AC_DEFINE(SDL_JOYSTICK_XINPUT, 1, [ ]) AC_DEFINE(SDL_JOYSTICK_XINPUT, 1, [ ])
@ -3870,7 +3922,8 @@ case "$host" in
else else
LIBUUID=-luuid LIBUUID=-luuid
fi fi
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion $LIBUUID -static-libgcc" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion $LIBUUID"
BUILD_LDFLAGS="$BUILD_LDFLAGS -Wc,-static-libgcc"
# The Windows platform requires special setup # The Windows platform requires special setup
VERSION_SOURCES="$srcdir/src/main/windows/*.rc" VERSION_SOURCES="$srcdir/src/main/windows/*.rc"
SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c" SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c"
@ -4333,6 +4386,7 @@ if test x$video_wayland = xyes; then
printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) \\$(WAYLAND_SCANNER_CODE_MODE) \\$< \\$@" ;\ printf '%s\n' " \\$(RUN_CMD_GEN)\\$(WAYLAND_SCANNER) \\$(WAYLAND_SCANNER_CODE_MODE) \\$< \\$@" ;\
echo ;\ echo ;\
printf '%s\n' "\\$(objects)/\$p-protocol.lo: \\$(gen)/\$p-protocol.c \\$(gen)/\$p-client-protocol.h" ;\ printf '%s\n' "\\$(objects)/\$p-protocol.lo: \\$(gen)/\$p-protocol.c \\$(gen)/\$p-client-protocol.h" ;\
printf '%s\n' " @\\$(SHELL) \\$(auxdir)/mkinstalldirs \\$(objects)" ;\
printf '%s\n' " \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@" ;\ printf '%s\n' " \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@" ;\
done ;\ done ;\
echo ;\ echo ;\
@ -4519,7 +4573,6 @@ if test x$WARN_ABOUT_ARM_SIMD_ASM_MIT = xyes; then
SUMMARY="${SUMMARY}configure script with:\n" SUMMARY="${SUMMARY}configure script with:\n"
SUMMARY="${SUMMARY}\n --disable-arm-simd\n" SUMMARY="${SUMMARY}\n --disable-arm-simd\n"
fi fi
if test x$WARN_ABOUT_ARM_NEON_ASM_MIT = xyes; then if test x$WARN_ABOUT_ARM_NEON_ASM_MIT = xyes; then
SUMMARY="${SUMMARY}\nSDL is being built with ARM NEON optimizations, which\n" SUMMARY="${SUMMARY}\nSDL is being built with ARM NEON optimizations, which\n"
SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n" SUMMARY="${SUMMARY}uses code licensed under the MIT license. If this is a\n"

View File

@ -1,3 +1,9 @@
libsdl2 (2.0.16) UNRELEASED; urgency=low
* Updated SDL to version 2.0.16
-- Sam Lantinga <slouken@libsdl.org> Sat, 31 Jul 2021 13:27:38 -0800
libsdl2 (2.0.15) UNRELEASED; urgency=low libsdl2 (2.0.15) UNRELEASED; urgency=low
* Updated SDL to version 2.0.15 for development builds * Updated SDL to version 2.0.15 for development builds

View File

@ -1,7 +1,6 @@
Dynamic API # Dynamic API
================================================================================
Originally posted by Ryan at: Originally posted on Ryan's Google+ account.
https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U
Background: Background:
@ -35,10 +34,12 @@ So here's what we did:
SDL now has, internally, a table of function pointers. So, this is what SDL_Init SDL now has, internally, a table of function pointers. So, this is what SDL_Init
now looks like: now looks like:
UInt32 SDL_Init(Uint32 flags) ```c
{ UInt32 SDL_Init(Uint32 flags)
{
return jump_table.SDL_Init(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 Except that is all done with a bunch of macro magic so we don't have to maintain
every one of these. every one of these.
@ -47,22 +48,26 @@ 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 SDL_Init() that you've been calling all this time. But at startup, it looks more
like this: like this:
Uint32 SDL_Init_DEFAULT(Uint32 flags) ```c
{ Uint32 SDL_Init_DEFAULT(Uint32 flags)
{
SDL_InitDynamicAPI(); SDL_InitDynamicAPI();
return jump_table.SDL_Init(flags); return jump_table.SDL_Init(flags);
} }
```
SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function
pointers, which means that this _DEFAULT function never gets called again. pointers, which means that this `_DEFAULT` function never gets called again.
First call to any SDL function sets the whole thing up. 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 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 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: level of indirection, we can do things like this:
export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0 ```bash
./MyGameThatIsStaticallyLinkedToSDL2 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 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 with a newer, or better, SDL. The statically linked one will only be used as
@ -94,7 +99,9 @@ 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 a shared library of its own). If so, it loads that library and looks for and
calls a single function: calls a single function:
SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize); ```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 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. the jump table, and the size, in bytes, of the table.
@ -116,6 +123,7 @@ Steam Client, this isn't a bad option.
Finally, I'm sure some people are reading this and thinking, Finally, I'm sure some people are reading this and thinking,
"I don't want that overhead in my project!" "I don't want that overhead in my project!"
To which I would point out that the extra function call through the jump table 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 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 disabled. You can build SDL without this if you absolutely must, but we would

View File

@ -1,6 +1,6 @@
PS Vita PS Vita
======= =======
SDL port for the Sony Playstation Vita ans Sony Playstation TV SDL port for the Sony Playstation Vita and Sony Playstation TV
Credit to Credit to
* xerpi and rsn8887 for initial (vita2d) port * xerpi and rsn8887 for initial (vita2d) port
@ -9,7 +9,7 @@ Credit to
Building Building
-------- --------
To build for the PSP, make sure you have vitasdk and cmake installed and run: 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 -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build cmake --build build
@ -19,9 +19,7 @@ To build for the PSP, make sure you have vitasdk and cmake installed and run:
Notes Notes
----- -----
* There are two renderers: native gxm and pigs-in-a-blanket gles2. * gles2 support is disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PIB=ON`
By default gxm one is used. gles2 renderer is slow and only usable if you want to bind SDL_Texture to GL context.
You can create gles2 renderer by using hint or `1` as a renderer index in `SDL_CreateRenderer`.
* By default SDL emits mouse events for touch events on every touchscreen. * 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. Vita has two touchscreens, so it's recommended to use `SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0");` and handle touch events instead.
* Support for L2/R2/R3/R3 buttons, haptic feedback and gamepad led only available on PSTV, or when using external ds4 gamepad on vita. * Support for L2/R2/R3/R3 buttons, haptic feedback and gamepad led only available on PSTV, or when using external ds4 gamepad on vita.

View File

@ -352,38 +352,41 @@ source file, such as, "main.cpp".
your project, and open the file in Visual C++'s text editor. 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. 7. Copy and paste the following code into the new file, then save it.
```c
#include <SDL.h>
#include <SDL.h> int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
SDL_DisplayMode mode; SDL_DisplayMode mode;
SDL_Window * window = NULL; SDL_Window * window = NULL;
SDL_Renderer * renderer = NULL; SDL_Renderer * renderer = NULL;
SDL_Event evt; SDL_Event evt;
SDL_bool keep_going = SDL_TRUE;
if (SDL_Init(SDL_INIT_VIDEO) != 0) { if (SDL_Init(SDL_INIT_VIDEO) != 0) {
return 1; return 1;
} } else if (SDL_GetCurrentDisplayMode(0, &mode) != 0) {
return 1;
if (SDL_GetCurrentDisplayMode(0, &mode) != 0) { } else if (SDL_CreateWindowAndRenderer(mode.w, mode.h, SDL_WINDOW_FULLSCREEN, &window, &renderer) != 0) {
return 1; return 1;
} }
if (SDL_CreateWindowAndRenderer(mode.w, mode.h, SDL_WINDOW_FULLSCREEN, &window, &renderer) != 0) { while (keep_going) {
return 1;
}
while (1) {
while (SDL_PollEvent(&evt)) { 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_SetRenderDrawColor(renderer, 0, 255, 0, 255);
SDL_RenderClear(renderer); SDL_RenderClear(renderer);
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
} }
}
SDL_Quit();
return 0;
}
```
#### 6.B. Adding code and assets #### #### 6.B. Adding code and assets ####

View File

@ -178,9 +178,8 @@ extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);
* Get a mask of the specified subsystems which are currently initialized. * 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. * \param flags any of the flags used by SDL_Init(); see SDL_Init for details.
* \returns If `flags` is 0 it returns a mask of all initialized subsystems, * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it
* otherwise it returns the initialization status of the specified * returns the initialization status of the specified subsystems.
* subsystems.
* *
* The return value does not include SDL_INIT_NOPARACHUTE. * The return value does not include SDL_INIT_NOPARACHUTE.
* *

View File

@ -159,17 +159,17 @@ extern _inline void SDL_CompilerBarrier (void);
* Memory barriers are designed to prevent reads and writes from being * 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. * 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, * A typical pattern would be for thread A to write some data and a flag, and
* and for thread B to read the flag and get the data. In this case you * for thread B to read the flag and get the data. In this case you would
* would insert a release barrier between writing the data and the flag, * insert a release barrier between writing the data and the flag,
* guaranteeing that the data write completes no later than the flag is * guaranteeing that the data write completes no later than the flag is
* written, and you would insert an acquire barrier between reading the * written, and you would insert an acquire barrier between reading the flag
* flag and reading the data, to ensure that all the reads associated * and reading the data, to ensure that all the reads associated with the flag
* with the flag have completed. * have completed.
* *
* In this pattern you should always see a release barrier paired with * In this pattern you should always see a release barrier paired with an
* an acquire barrier and you should gate the data reads/writes with a * acquire barrier and you should gate the data reads/writes with a single
* single flag variable. * flag variable.
* *
* For more information on these semantics, take a look at the blog post: * For more information on these semantics, take a look at the blog post:
* http://preshing.com/20120913/acquire-and-release-semantics * http://preshing.com/20120913/acquire-and-release-semantics
@ -238,8 +238,7 @@ typedef void (*SDL_KernelMemoryBarrierFunc)();
typedef struct { int value; } SDL_atomic_t; typedef struct { int value; } SDL_atomic_t;
/** /**
* Set an atomic variable to a new value if it is * Set an atomic variable to a new value if it is currently an old value.
* currently an old value.
* *
* ***Note: If you don't know what this function is for, you shouldn't use * ***Note: If you don't know what this function is for, you shouldn't use
* it!*** * it!***
@ -321,8 +320,7 @@ extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);
#endif #endif
/** /**
* Set a pointer to a new value if it is currently an old * Set a pointer to a new value if it is currently an old value.
* value.
* *
* ***Note: If you don't know what this function is for, you shouldn't use * ***Note: If you don't know what this function is for, you shouldn't use
* it!*** * it!***

View File

@ -214,9 +214,12 @@ typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,
* set both its (buf) field to a pointer that is aligned to 16 bytes, and its * 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. * (len) field to something that's a multiple of 16, if possible.
*/ */
#ifdef __GNUC__ #if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__)
/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't /* 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. 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 vvv
The next time we rev the ABI, make sure to size the ints and add padding. The next time we rev the ABI, make sure to size the ints and add padding.
*/ */
@ -307,19 +310,18 @@ extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
* means you can only have one device open at a time with this function. * means you can only have one device open at a time with this function.
* *
* \param desired an SDL_AudioSpec structure representing the desired output * \param desired an SDL_AudioSpec structure representing the desired output
* format. Please refer to the SDL_OpenAudioDevice documentation * format. Please refer to the SDL_OpenAudioDevice
* for details on how to prepare this structure. * documentation for details on how to prepare this structure.
* \param obtained an SDL_AudioSpec structure filled in with the actual * \param obtained an SDL_AudioSpec structure filled in with the actual
* parameters, or NULL. * parameters, or NULL.
* \returns This function opens the audio device with the desired parameters, * \returns 0 if successful, placing the actual hardware parameters in the
* and returns 0 if successful, placing the actual hardware * structure pointed to by `obtained`.
* parameters in the structure pointed to by `obtained`.
* *
* If `obtained` is NULL, the audio data passed to the callback * If `obtained` is NULL, the audio data passed to the callback
* function will be guaranteed to be in the requested format, and * function will be guaranteed to be in the requested format, and
* will be automatically converted to the actual hardware audio * will be automatically converted to the actual hardware audio
* format if necessary. If `obtained` is NULL, `desired` will * format if necessary. If `obtained` is NULL, `desired` will have
* have fields modified. * fields modified.
* *
* This function returns a negative error code on failure to open the * This function returns a negative error code on failure to open the
* audio device or failure to set up the audio thread; call * audio device or failure to set up the audio thread; call
@ -351,8 +353,8 @@ typedef Uint32 SDL_AudioDeviceID;
* subsystem. * subsystem.
* *
* Note that audio capture support is not implemented as of SDL 2.0.4, so the * 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 * `iscapture` parameter is for future expansion and should always be zero for
* for now. * now.
* *
* This function will return -1 if an explicit list of devices can't be * 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 * determined. Returning -1 is not an error. For example, if SDL is set up to
@ -464,26 +466,26 @@ extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
* *
* - `desired->freq` should be the frequency in sample-frames-per-second (Hz). * - `desired->freq` should be the frequency in sample-frames-per-second (Hz).
* - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc).
* - `desired->samples` is the desired size of the audio buffer, in * - `desired->samples` is the desired size of the audio buffer, in _sample
* _sample frames_ (with stereo output, two samples--left and right--would * frames_ (with stereo output, two samples--left and right--would make a
* make a single sample frame). This number should be a power of two, and * single sample frame). This number should be a power of two, and may be
* may be adjusted by the audio driver to a value more suitable for the * adjusted by the audio driver to a value more suitable for the hardware.
* hardware. Good values seem to range between 512 and 8096 inclusive, * Good values seem to range between 512 and 8096 inclusive, depending on
* depending on the application and CPU speed. Smaller values reduce * the application and CPU speed. Smaller values reduce latency, but can
* latency, but can lead to underflow if the application is doing heavy * lead to underflow if the application is doing heavy processing and cannot
* processing and cannot fill the audio buffer in time. Note that the * fill the audio buffer in time. Note that the number of sample frames is
* number of sample frames is directly related to time by the following * directly related to time by the following formula: `ms =
* formula: `ms = (sampleframes*1000)/freq` * (sampleframes*1000)/freq`
* - `desired->size` is the size in _bytes_ of the audio buffer, and is * - `desired->size` is the size in _bytes_ of the audio buffer, and is
* calculated by SDL_OpenAudioDevice(). You don't initialize this. * calculated by SDL_OpenAudioDevice(). You don't initialize this.
* - `desired->silence` is the value used to set the buffer to silence, * - `desired->silence` is the value used to set the buffer to silence, and is
* and is calculated by SDL_OpenAudioDevice(). You don't initialize this. * calculated by SDL_OpenAudioDevice(). You don't initialize this.
* - `desired->callback` should be set to a function that will be called * - `desired->callback` should be set to a function that will be called when
* when the audio device is ready for more data. It is passed a pointer * the audio device is ready for more data. It is passed a pointer to the
* to the audio buffer, and the length in bytes of the audio buffer. * audio buffer, and the length in bytes of the audio buffer. This function
* This function usually runs in a separate thread, and so you should * usually runs in a separate thread, and so you should protect data
* protect data structures that it accesses by calling SDL_LockAudioDevice() * structures that it accesses by calling SDL_LockAudioDevice() and
* and SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL
* pointer here, and call SDL_QueueAudio() with some frequency, to queue * pointer here, and call SDL_QueueAudio() with some frequency, to queue
* more audio samples to be played (or for capture devices, call * more audio samples to be played (or for capture devices, call
* SDL_DequeueAudio() with some frequency, to obtain audio samples). * SDL_DequeueAudio() with some frequency, to obtain audio samples).
@ -503,11 +505,10 @@ extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,
* *
* For example, if you ask for float32 audio format, but the sound card only * 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 * 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 * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained`
* `obtained` structure. If that flag was *not* set, SDL will prepare to * structure. If that flag was *not* set, SDL will prepare to convert your
* convert your callback's float32 audio to int16 before feeding it to the * callback's float32 audio to int16 before feeding it to the hardware and
* hardware and will keep the originally requested format in the `obtained` * will keep the originally requested format in the `obtained` structure.
* structure.
* *
* If your application can only handle one specific data format, pass a zero * If your application can only handle one specific data format, pass a zero
* for `allowed_changes` and let SDL transparently handle any differences. * for `allowed_changes` and let SDL transparently handle any differences.
@ -591,24 +592,24 @@ extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
/** /**
* Load the audio data of a WAVE file into memory. * Load the audio data of a WAVE file into memory.
* *
* Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to
* to be valid pointers. The entire data portion of the file is then loaded * be valid pointers. The entire data portion of the file is then loaded into
* into memory and decoded if necessary. * memory and decoded if necessary.
* *
* If `freesrc` is non-zero, the data source gets automatically closed and * If `freesrc` is non-zero, the data source gets automatically closed and
* freed before the function returns. * freed before the function returns.
* *
* Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and * 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), * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and
* and A-law and mu-law (8 bits). Other formats are currently unsupported and * A-law and mu-law (8 bits). Other formats are currently unsupported and
* cause an error. * cause an error.
* *
* If this function succeeds, the pointer returned by it is equal to `spec` * 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 * 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 * `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 * members `freq`, `channels`, and `format` are set to the values of the audio
* audio data in the buffer. The `samples` member is set to a sane default * data in the buffer. The `samples` member is set to a sane default and all
* and all others are set to zero. * others are set to zero.
* *
* It's necessary to use SDL_FreeWAV() to free the audio data returned in * It's necessary to use SDL_FreeWAV() to free the audio data returned in
* `audio_buf` when it is no longer used. * `audio_buf` when it is no longer used.
@ -617,19 +618,21 @@ extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
* problematic files in the wild that cause issues with strict decoders. To * problematic files in the wild that cause issues with strict decoders. To
* provide compatibility with these files, this decoder is lenient in regards * 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 * 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`, * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`,
* and `SDL_HINT_WAVE_FACT_CHUNK` can be used to tune the behavior of the * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to
* loading process. * tune the behavior of the loading process.
* *
* Any file that is invalid (due to truncation, corruption, or wrong values in * Any file that is invalid (due to truncation, corruption, or wrong values in
* the headers), too big, or unsupported causes an error. Additionally, any * the headers), too big, or unsupported causes an error. Additionally, any
* critical I/O error from the data source will terminate the loading process * 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 * with an error. The function returns NULL on error and in all cases (with
* exception of `src` being NULL), an appropriate error message will be set. * the exception of `src` being NULL), an appropriate error message will be
* set.
* *
* It is required that the data source supports seeking. * It is required that the data source supports seeking.
* *
* Example: * Example:
*
* ```c++ * ```c++
* SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len);
* ``` * ```
@ -645,8 +648,10 @@ extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
* \param freesrc If non-zero, SDL will _always_ free the data source * \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 * \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_buf A pointer filled with the audio data, allocated by the
* \param audio_len A pointer filled with the length of the audio data buffer in bytes * 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 * \returns This function, if successfully called, returns `spec`, which will
* be filled with the audio data format of the wave source data. * be filled with the audio data format of the wave source data.
* `audio_buf` will be filled with a pointer to an allocated buffer * `audio_buf` will be filled with a pointer to an allocated buffer
@ -714,8 +719,7 @@ extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);
* \param dst_format the destination format of the audio data; for more info * \param dst_format the destination format of the audio data; for more info
* see SDL_AudioFormat * see SDL_AudioFormat
* \param dst_channels the number of channels in the destination * \param dst_channels the number of channels in the destination
* \param dst_rate the frequency (sample-frames-per-second) of the * \param dst_rate the frequency (sample-frames-per-second) of the destination
* destination
* \returns 1 if the audio filter is prepared, 0 if no conversion is needed, * \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 * or a negative error code on failure; call SDL_GetError() for more
* information. * information.
@ -750,8 +754,8 @@ extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,
* in-place, the application must allocate a buffer that will fully contain * in-place, the application must allocate a buffer that will fully contain
* the data during its largest conversion pass. After SDL_BuildAudioCVT() * the data during its largest conversion pass. After SDL_BuildAudioCVT()
* returns, the application should set the `cvt->len` field to the size, in * returns, the application should set the `cvt->len` field to the size, in
* bytes, of the source data, and allocate a buffer that is * bytes, of the source data, and allocate a buffer that is `cvt->len *
* `cvt->len * cvt->len_mult` bytes long for the `buf` field. * cvt->len_mult` bytes long for the `buf` field.
* *
* The source data should be copied into this buffer before the call to * The source data should be copied into this buffer before the call to
* SDL_ConvertAudio(). Upon successful return, this buffer will contain the * SDL_ConvertAudio(). Upon successful return, this buffer will contain the
@ -839,10 +843,11 @@ extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const vo
extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); 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 * Get the number of converted/resampled bytes available.
* buffering data behind the scenes until it has enough to resample *
* correctly, so this number might be lower than what you expect, or even * The stream may be buffering data behind the scenes until it has enough to
* be zero. Add more data or flush the stream if you need the data now. * 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.
* *
* \sa SDL_NewAudioStream * \sa SDL_NewAudioStream
* \sa SDL_AudioStreamPut * \sa SDL_AudioStreamPut
@ -857,9 +862,9 @@ extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);
* Tell the stream that you're done sending data, and anything being buffered * Tell the stream that you're done sending data, and anything being buffered
* should be converted/resampled and made available immediately. * should be converted/resampled and made available immediately.
* *
* It is legal to add more data to a stream after flushing, but there will * It is legal to add more data to a stream after flushing, but there will be
* be audio gaps in the output. Generally this is intended to signal the * audio gaps in the output. Generally this is intended to signal the end of
* end of input, so the complete output becomes available. * input, so the complete output becomes available.
* *
* \sa SDL_NewAudioStream * \sa SDL_NewAudioStream
* \sa SDL_AudioStreamPut * \sa SDL_AudioStreamPut
@ -921,8 +926,8 @@ extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
/** /**
* Mix audio data in a specified format. * Mix audio data in a specified format.
* *
* This takes an audio buffer `src` of `len` bytes of `format` data and * This takes an audio buffer `src` of `len` bytes of `format` data and mixes
* mixes it into `dst`, performing addition, volume adjustment, and overflow * it into `dst`, performing addition, volume adjustment, and overflow
* clipping. The buffer pointed to by `dst` must also be `len` bytes of * clipping. The buffer pointed to by `dst` must also be `len` bytes of
* `format` data. * `format` data.
* *
@ -982,6 +987,11 @@ extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,
* You should not call SDL_LockAudio() on the device before queueing; SDL * You should not call SDL_LockAudio() on the device before queueing; SDL
* handles locking internally for this function. * handles locking internally for this function.
* *
* Note that SDL2
* [https://discourse.libsdl.org/t/sdl2-support-for-planar-audio/31263/3 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 dev the device ID to which we will queue audio
* \param data the data to queue to the device for later playback * \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 len the number of bytes (not samples!) to which `data` points
@ -1033,8 +1043,8 @@ extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *da
* \param dev the device ID from which we will dequeue audio * \param dev the device ID from which we will dequeue audio
* \param data a pointer into where audio data should be copied * \param data a pointer into where audio data should be copied
* \param len the number of bytes (not samples!) to which (data) points * \param len the number of bytes (not samples!) to which (data) points
* \returns number of bytes dequeued, which could be less than requested; call * \returns the number of bytes dequeued, which could be less than requested;
* SDL_GetError() for more information. * call SDL_GetError() for more information.
* *
* \since This function is available since SDL 2.0.5. * \since This function is available since SDL 2.0.5.
* *
@ -1046,9 +1056,8 @@ extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *dat
/** /**
* Get the number of bytes of still-queued audio. * Get the number of bytes of still-queued audio.
* *
* For playback devices: this is the number of bytes that have been queued * For playback devices: this is the number of bytes that have been queued for
* for playback with SDL_QueueAudio(), but have not yet been sent to the * playback with SDL_QueueAudio(), but have not yet been sent to the hardware.
* hardware.
* *
* Once we've sent it to the hardware, this function can not decide the exact * 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 * byte boundary of what has been played. It's possible that we just gave the
@ -1142,6 +1151,27 @@ extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
* \sa SDL_OpenAudio * \sa SDL_OpenAudio
*/ */
extern DECLSPEC void SDLCALL SDL_CloseAudio(void); 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()
*
* \sa SDL_OpenAudioDevice
*/
extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);
/* Ends C function definitions when using C++ */ /* Ends C function definitions when using C++ */

View File

@ -45,7 +45,7 @@ extern "C" {
* with 0. This operation can also be stated as "count leading zeroes" and * with 0. This operation can also be stated as "count leading zeroes" and
* "log base 2". * "log base 2".
* *
* \return Index of the most significant bit, or -1 if the value is 0. * \return the index of the most significant bit, or -1 if the value is 0.
*/ */
#if defined(__WATCOMC__) && defined(__386__) #if defined(__WATCOMC__) && defined(__386__)
extern _inline int _SDL_bsr_watcom (Uint32); extern _inline int _SDL_bsr_watcom (Uint32);

View File

@ -109,8 +109,8 @@ typedef enum
* dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);
* ``` * ```
* *
* Where the functions `colorOperation(src, dst)` and * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,
* `alphaOperation(src, dst)` can return one of the following: * dst)` can return one of the following:
* *
* - `src + dst` * - `src + dst`
* - `src - dst` * - `src - dst`
@ -140,8 +140,8 @@ typedef enum
* factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and
* `SDL_BLENDOPERATION_MAXIMUM`. * `SDL_BLENDOPERATION_MAXIMUM`.
* - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
* factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL
* SDL 2.0.6. * 2.0.6.
* - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all
* factors. Color and alpha factors need to be the same. OpenGL ES 1 * factors. Color and alpha factors need to be the same. OpenGL ES 1
* implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT`
@ -149,8 +149,8 @@ typedef enum
* operations being different from each other. May support color and alpha * operations being different from each other. May support color and alpha
* factors being different from each other. * factors being different from each other.
* - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,
* `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` operations * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`
* with all factors. * operations with all factors.
* - **psp**: No custom blend mode support. * - **psp**: No custom blend mode support.
* - **software**: No custom blend mode support. * - **software**: No custom blend mode support.
* *

View File

@ -224,6 +224,7 @@
#cmakedefine HAVE_IMMINTRIN_H 1 #cmakedefine HAVE_IMMINTRIN_H 1
#cmakedefine HAVE_LIBUDEV_H 1 #cmakedefine HAVE_LIBUDEV_H 1
#cmakedefine HAVE_LIBSAMPLERATE_H 1 #cmakedefine HAVE_LIBSAMPLERATE_H 1
#cmakedefine HAVE_LIBDECOR_H 1
#cmakedefine HAVE_D3D_H @HAVE_D3D_H@ #cmakedefine HAVE_D3D_H @HAVE_D3D_H@
#cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@ #cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@
@ -316,6 +317,7 @@
#cmakedefine SDL_JOYSTICK_USBHID @SDL_JOYSTICK_USBHID@ #cmakedefine SDL_JOYSTICK_USBHID @SDL_JOYSTICK_USBHID@
#cmakedefine SDL_HAVE_MACHINE_JOYSTICK_H @SDL_HAVE_MACHINE_JOYSTICK_H@ #cmakedefine SDL_HAVE_MACHINE_JOYSTICK_H @SDL_HAVE_MACHINE_JOYSTICK_H@
#cmakedefine SDL_JOYSTICK_HIDAPI @SDL_JOYSTICK_HIDAPI@ #cmakedefine SDL_JOYSTICK_HIDAPI @SDL_JOYSTICK_HIDAPI@
#cmakedefine SDL_JOYSTICK_RAWINPUT @SDL_JOYSTICK_RAWINPUT@
#cmakedefine SDL_JOYSTICK_EMSCRIPTEN @SDL_JOYSTICK_EMSCRIPTEN@ #cmakedefine SDL_JOYSTICK_EMSCRIPTEN @SDL_JOYSTICK_EMSCRIPTEN@
#cmakedefine SDL_JOYSTICK_VIRTUAL @SDL_JOYSTICK_VIRTUAL@ #cmakedefine SDL_JOYSTICK_VIRTUAL @SDL_JOYSTICK_VIRTUAL@
#cmakedefine SDL_JOYSTICK_VITA @SDL_JOYSTICK_VITA@ #cmakedefine SDL_JOYSTICK_VITA @SDL_JOYSTICK_VITA@
@ -386,6 +388,7 @@
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL@ #cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL@
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR@ #cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR@
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON@ #cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON@
#cmakedefine SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR @SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR@
#cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@ #cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@
@ -473,6 +476,8 @@
#cmakedefine SDL_IPHONE_KEYBOARD @SDL_IPHONE_KEYBOARD@ #cmakedefine SDL_IPHONE_KEYBOARD @SDL_IPHONE_KEYBOARD@
#cmakedefine SDL_IPHONE_LAUNCHSCREEN @SDL_IPHONE_LAUNCHSCREEN@ #cmakedefine SDL_IPHONE_LAUNCHSCREEN @SDL_IPHONE_LAUNCHSCREEN@
#cmakedefine SDL_VIDEO_VITA_PIB @SDL_VIDEO_VITA_PIB@
#if !defined(__WIN32__) && !defined(__WINRT__) #if !defined(__WIN32__) && !defined(__WINRT__)
# if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H) # if !defined(_STDINT_H_) && !defined(_STDINT_H) && !defined(HAVE_STDINT_H) && !defined(_HAVE_STDINT_H)
typedef unsigned int size_t; typedef unsigned int size_t;

View File

@ -225,6 +225,7 @@
#undef HAVE_IMMINTRIN_H #undef HAVE_IMMINTRIN_H
#undef HAVE_LIBUDEV_H #undef HAVE_LIBUDEV_H
#undef HAVE_LIBSAMPLERATE_H #undef HAVE_LIBSAMPLERATE_H
#undef HAVE_LIBDECOR_H
#undef HAVE_DDRAW_H #undef HAVE_DDRAW_H
#undef HAVE_DINPUT_H #undef HAVE_DINPUT_H
@ -365,6 +366,7 @@
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON
#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR
#undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_X11
#undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_RPI
#undef SDL_VIDEO_DRIVER_KMSDRM #undef SDL_VIDEO_DRIVER_KMSDRM

View File

@ -137,6 +137,12 @@
#define HAVE_SYSCONF 1 #define HAVE_SYSCONF 1
#define HAVE_SYSCTLBYNAME 1 #define HAVE_SYSCTLBYNAME 1
#if defined(__has_include) && (defined(__i386__) || defined(__x86_64))
# if __has_include(<immintrin.h>)
# define HAVE_IMMINTRIN_H 1
# endif
#endif
#define HAVE_GCC_ATOMICS 1 #define HAVE_GCC_ATOMICS 1
/* Enable various audio drivers */ /* Enable various audio drivers */

View File

@ -84,7 +84,14 @@ typedef unsigned int uintptr_t;
#define HAVE_XINPUT_H 1 #define HAVE_XINPUT_H 1
#define HAVE_MMDEVICEAPI_H 1 #define HAVE_MMDEVICEAPI_H 1
#define HAVE_AUDIOCLIENT_H 1 #define HAVE_AUDIOCLIENT_H 1
#define HAVE_SENSORSAPI_H #define HAVE_SENSORSAPI_H 1
#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(<immintrin.h>)
# define HAVE_IMMINTRIN_H 1
# endif
#endif
/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ /* This is disabled by default to avoid C runtime dependencies and manifest requirements */
#ifdef HAVE_LIBC #ifdef HAVE_LIBC
@ -195,7 +202,7 @@ typedef unsigned int uintptr_t;
#endif #endif
/* Check to see if we have Windows 10 build environment */ /* Check to see if we have Windows 10 build environment */
#if _MSC_VER >= 1911 /* Visual Studio 15.3 */ #if defined(_MSC_VER) && (_MSC_VER >= 1911) /* Visual Studio 15.3 */
#include <sdkddkver.h> #include <sdkddkver.h>
#if _WIN32_WINNT >= 0x0601 /* Windows 7 */ #if _WIN32_WINNT >= 0x0601 /* Windows 7 */
#define SDL_WINDOWS7_SDK #define SDL_WINDOWS7_SDK

View File

@ -171,7 +171,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);
/** /**
* Determine whether the CPU has AltiVec features. * Determine whether the CPU has AltiVec features.
* *
* This always returns false on CPUs that aren't using PowerPC instruction sets. * 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. * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not.
* *
@ -418,15 +419,16 @@ extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);
* Report the alignment this system needs for SIMD allocations. * Report the alignment this system needs for SIMD allocations.
* *
* This will return the minimum number of bytes to which a pointer must be * 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. * aligned to be compatible with SIMD instructions on the current machine. For
* For example, if the machine supports SSE only, it will return 16, but if * example, if the machine supports SSE only, it will return 16, but if it
* it supports AVX-512F, it'll return 64 (etc). This only reports values for * 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 * 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 * 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. * not 64 for the AVX-512 instructions that exist but SDL doesn't know about.
* Plan accordingly. * Plan accordingly.
* *
* \returns Alignment in bytes needed for available, known SIMD instructions. * \returns the alignment in bytes needed for available, known SIMD
* instructions.
*/ */
extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
@ -434,24 +436,24 @@ extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
* Allocate memory in a SIMD-friendly way. * Allocate memory in a SIMD-friendly way.
* *
* This will allocate a block of memory that is suitable for use with SIMD * This will allocate a block of memory that is suitable for use with SIMD
* instructions. Specifically, it will be properly aligned and padded for * instructions. Specifically, it will be properly aligned and padded for the
* the system's supported vector instructions. * system's supported vector instructions.
* *
* The memory returned will be padded such that it is safe to read or write * The memory returned will be padded such that it is safe to read or write an
* an incomplete vector at the end of the memory block. This can be useful * incomplete vector at the end of the memory block. This can be useful so you
* so you don't have to drop back to a scalar fallback at the end of your * don't have to drop back to a scalar fallback at the end of your SIMD
* SIMD processing loop to deal with the final elements without overflowing * processing loop to deal with the final elements without overflowing the
* the allocated buffer. * allocated buffer.
* *
* You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or
* or delete[], etc. * delete[], etc.
* *
* Note that SDL will only deal with SIMD instruction sets it is aware of; * Note that SDL will only deal with SIMD instruction sets it is aware of; for
* for example, SDL 2.0.8 knows that SSE wants 16-byte vectors * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and
* (SDL_HasSSE()), and AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants
* know that AVX-512 wants 64. To be clear: if you can't decide to use an * 64. To be clear: if you can't decide to use an instruction set with an
* instruction set with an SDL_Has*() function, don't use that instruction * SDL_Has*() function, don't use that instruction set with memory allocated
* set with memory allocated through here. * through here.
* *
* SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't * 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 * out of memory, but you are not allowed to dereference it (because you only
@ -459,7 +461,7 @@ extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);
* *
* \param len The length, in bytes, of the block to allocate. The actual * \param len The length, in bytes, of the block to allocate. The actual
* allocated block might be larger due to padding, etc. * allocated block might be larger due to padding, etc.
* \returns Pointer to newly-allocated block, NULL if out of memory. * \returns a pointer to thenewly-allocated block, NULL if out of memory.
* *
* \sa SDL_SIMDAlignment * \sa SDL_SIMDAlignment
* \sa SDL_SIMDRealloc * \sa SDL_SIMDRealloc
@ -481,7 +483,7 @@ extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);
* allocated block might be larger due to padding, etc. Passing 0 * allocated block might be larger due to padding, etc. Passing 0
* will return a non-NULL pointer, assuming the system isn't out of * will return a non-NULL pointer, assuming the system isn't out of
* memory. * memory.
* \returns Pointer to newly-reallocated block, NULL if out of memory. * \returns a pointer to the newly-reallocated block, NULL if out of memory.
* *
* \sa SDL_SIMDAlignment * \sa SDL_SIMDAlignment
* \sa SDL_SIMDAlloc * \sa SDL_SIMDAlloc
@ -499,12 +501,12 @@ extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);
* However, SDL_SIMDFree(NULL) is a legal no-op. * However, SDL_SIMDFree(NULL) is a legal no-op.
* *
* The memory pointed to by `ptr` is no longer valid for access upon return, * 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. * and may be returned to the system or reused by a future allocation. The
* The pointer passed to this function is no longer safe to dereference once * pointer passed to this function is no longer safe to dereference once this
* this function returns, and should be discarded. * function returns, and should be discarded.
* *
* \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to
* to deallocate. NULL is a legal no-op. * deallocate. NULL is a legal no-op.
* *
* \sa SDL_SIMDAlloc * \sa SDL_SIMDAlloc
* \sa SDL_SIMDRealloc * \sa SDL_SIMDRealloc

View File

@ -65,7 +65,7 @@ _m_prefetch(void *__P)
#elif defined(__OpenBSD__) #elif defined(__OpenBSD__)
#include <endian.h> #include <endian.h>
#define SDL_BYTEORDER BYTE_ORDER #define SDL_BYTEORDER BYTE_ORDER
#elif defined(__FreeBSD__) #elif defined(__FreeBSD__) || defined(__NetBSD__)
#include <sys/endian.h> #include <sys/endian.h>
#define SDL_BYTEORDER BYTE_ORDER #define SDL_BYTEORDER BYTE_ORDER
#else #else

View File

@ -44,8 +44,8 @@ extern "C" {
* *
* Calling this function will replace any previous error message that was set. * Calling this function will replace any previous error message that was set.
* *
* This function always returns -1, since SDL frequently uses -1 to signify * This function always returns -1, since SDL frequently uses -1 to signify an
* an failing result, leading to this idiom: * failing result, leading to this idiom:
* *
* ```c * ```c
* if (error_code) { * if (error_code) {
@ -54,8 +54,8 @@ 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, * \param ... additional parameters matching % tokens in the `fmt` string, if
* if any * any
* \returns always -1. * \returns always -1.
* *
* \sa SDL_ClearError * \sa SDL_ClearError
@ -64,16 +64,17 @@ extern "C" {
extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); 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. * 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(). * It is possible for multiple errors to occur before calling SDL_GetError().
* Only the last error is returned. * Only the last error is returned.
* *
* The message is only applicable when an SDL function has signaled an error. * 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 * You must check the return values of SDL function calls to determine when to
* to appropriately call SDL_GetError(). You should _not_ use the results * appropriately call SDL_GetError(). You should _not_ use the results of
* of SDL_GetError() to decide if an error has occurred! Sometimes SDL will * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set
* set an error string even when reporting success. * an error string even when reporting success.
* *
* SDL will _not_ clear the error string for successful API calls. You _must_ * 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 * check return values for failure cases before you can assume the error
@ -87,10 +88,10 @@ extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fm
* *
* \returns a message with information about the specific error that occurred, * \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 * 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 * the last call to SDL_ClearError(). The message is only applicable
* SDL function has signaled an error. You must check the return * when an SDL function has signaled an error. You must check the
* values of SDL function calls to determine when to appropriately * return values of SDL function calls to determine when to
* call SDL_GetError(). * appropriately call SDL_GetError().
* *
* \sa SDL_ClearError * \sa SDL_ClearError
* \sa SDL_SetError * \sa SDL_SetError
@ -100,13 +101,13 @@ extern DECLSPEC const char *SDLCALL SDL_GetError(void);
/** /**
* Get the last error message that was set for the current thread. * 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, * This allows the caller to copy the error string into a provided buffer, but
* but otherwise operates exactly the same as SDL_GetError(). * otherwise operates exactly the same as SDL_GetError().
* *
* \param errstr A buffer to fill with the last error message that was set * \param errstr A buffer to fill with the last error message that was set for
* for the current thread * the current thread
* \param maxlen The size of the buffer pointed to by the errstr parameter * \param maxlen The size of the buffer pointed to by the errstr parameter
* \returns The pointer passed in as the `errstr` parameter. * \returns the pointer passed in as the `errstr` parameter.
* *
* \sa SDL_GetError * \sa SDL_GetError
*/ */

View File

@ -620,18 +620,24 @@ typedef union SDL_Event
SDL_DollarGestureEvent dgesture; /**< Gesture event data */ SDL_DollarGestureEvent dgesture; /**< Gesture event data */
SDL_DropEvent drop; /**< Drag and drop event data */ SDL_DropEvent drop; /**< Drag and drop event data */
/* This is necessary for ABI compatibility between Visual C++ and GCC /* This is necessary for ABI compatibility between Visual C++ and GCC.
Visual C++ will respect the push pack pragma and use 52 bytes for Visual C++ will respect the push pack pragma and use 52 bytes (size of
this structure, and GCC will use the alignment of the largest datatype SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit
within the union, which is 8 bytes. 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. 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[56]; Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)];
} SDL_Event; } SDL_Event;
/* Make sure we haven't broken binary compatibility */ /* Make sure we haven't broken binary compatibility */
SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == 56); SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding));
/* Function prototypes */ /* Function prototypes */
@ -671,8 +677,8 @@ typedef enum
* *
* `action` may be any of the following: * `action` may be any of the following:
* *
* - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the
* the event queue. * event queue.
* - `SDL_PEEKEVENT`: `numevents` events at the front 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 * within the specified minimum and maximum type, will be returned to the
* caller and will _not_ be removed from the queue. * caller and will _not_ be removed from the queue.
@ -784,10 +790,10 @@ extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);
/** /**
* Poll for currently pending events. * Poll for currently pending events.
* *
* If `event` is not NULL, the next event is removed from the queue and * If `event` is not NULL, the next event is removed from the queue and stored
* stored in the SDL_Event structure pointed to by `event`. The 1 returned * in the SDL_Event structure pointed to by `event`. The 1 returned refers to
* refers to this event, immediately stored in the SDL Event structure -- not * this event, immediately stored in the SDL Event structure -- not an event
* an event to follow. * to follow.
* *
* If `event` is NULL, it simply returns 1 if there is an event in the queue, * If `event` is NULL, it simply returns 1 if there is an event in the queue,
* but will not remove it from the queue. * but will not remove it from the queue.
@ -829,8 +835,8 @@ extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
/** /**
* Wait indefinitely for the next available event. * Wait indefinitely for the next available event.
* *
* If `event` is not NULL, the next event is removed from the queue and * If `event` is not NULL, the next event is removed from the queue and stored
* stored in the SDL_Event structure pointed to by `event`. * in the SDL_Event structure pointed to by `event`.
* *
* As this function implicitly calls SDL_PumpEvents(), you can only call this * As this function implicitly calls SDL_PumpEvents(), you can only call this
* function in the thread that initialized the video subsystem. * function in the thread that initialized the video subsystem.
@ -847,11 +853,11 @@ extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);
extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);
/** /**
* Wait until the specified timeout (in milliseconds) for * Wait until the specified timeout (in milliseconds) for the next available
* the next available event. * event.
* *
* If `event` is not NULL, the next event is removed from the queue and * If `event` is not NULL, the next event is removed from the queue and stored
* stored in the SDL_Event structure pointed to by `event`. * in the SDL_Event structure pointed to by `event`.
* *
* As this function implicitly calls SDL_PumpEvents(), you can only call this * As this function implicitly calls SDL_PumpEvents(), you can only call this
* function in the thread that initialized the video subsystem. * function in the thread that initialized the video subsystem.
@ -909,9 +915,8 @@ extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);
* \param userdata what was passed as `userdata` to SDL_SetEventFilter() * \param userdata what was passed as `userdata` to SDL_SetEventFilter()
* or SDL_AddEventWatch, etc * or SDL_AddEventWatch, etc
* \param event the event that triggered the callback * \param event the event that triggered the callback
* \returns Filters return 1 to permit event to be added to the queue, and * \returns 1 to permit event to be added to the queue, and 0 to disallow
* 0 to disallow it. When used with SDL_AddEventWatch, the return * it. When used with SDL_AddEventWatch, the return value is ignored.
* value is ignored.
* *
* \sa SDL_SetEventFilter * \sa SDL_SetEventFilter
* \sa SDL_AddEventWatch * \sa SDL_AddEventWatch
@ -936,8 +941,8 @@ typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);
* *
* 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 * 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 * application window. If the event filter returns 1, then the window will be
* be closed, otherwise the window will remain open if possible. * closed, otherwise the window will remain open if possible.
* *
* Note: Disabled events never make it to the event filter function; see * Note: Disabled events never make it to the event filter function; see
* SDL_EventState(). * SDL_EventState().
@ -1005,8 +1010,7 @@ extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,
void *userdata); void *userdata);
/** /**
* Remove an event watch callback added with * Remove an event watch callback added with SDL_AddEventWatch().
* SDL_AddEventWatch().
* *
* This function takes the same input as SDL_AddEventWatch() to identify and * This function takes the same input as SDL_AddEventWatch() to identify and
* delete the corresponding callback. * delete the corresponding callback.
@ -1020,8 +1024,8 @@ extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,
void *userdata); void *userdata);
/** /**
* Run a specific filter function on the current event * Run a specific filter function on the current event queue, removing any
* queue, removing any events for which the filter returns 0. * events for which the filter returns 0.
* *
* See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(),
* this function does not change the filter permanently, it only uses the * this function does not change the filter permanently, it only uses the
@ -1074,7 +1078,7 @@ extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);
* 0xFFFFFFFF), but is clearer to write. * 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 * \returns the beginning event number, or (Uint32)-1 if there are not enough
* user-defined events left. * user-defined events left.
* *
* \since This function is available since SDL 2.0.0. * \since This function is available since SDL 2.0.0.

View File

@ -63,8 +63,8 @@ extern "C" {
* 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). * Windows, '/' on most other platforms).
* *
* The pointer returned is owned by the caller. Please call SDL_free() on * The pointer returned is owned by the caller. Please call SDL_free() on the
* the pointer when done with it. * pointer when done with it.
* *
* \returns an absolute path in UTF-8 encoding to the application data * \returns an absolute path in UTF-8 encoding to the application data
* directory. NULL will be returned on error or when the platform * directory. NULL will be returned on error or when the platform
@ -84,9 +84,9 @@ extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
* files (preferences and save games, etc) that are specific to your * files (preferences and save games, etc) that are specific to your
* application. This directory is unique per user, per application. * application. This directory is unique per user, per application.
* *
* This function will decide the appropriate location in the native filesystem, * This function will decide the appropriate location in the native
* create the directory if necessary, and return a string of the absolute * filesystem, create the directory if necessary, and return a string of the
* path to the directory in UTF-8 encoding. * absolute path to the directory in UTF-8 encoding.
* *
* On Windows, the string might look like: * On Windows, the string might look like:
* *
@ -119,8 +119,8 @@ extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
* 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). * Windows, '/' on most other platforms).
* *
* The pointer returned is owned by the caller. Please call SDL_free() on * The pointer returned is owned by the caller. Please call SDL_free() on the
* the pointer when done with it. * pointer when done with it.
* *
* \param org the name of your organization * \param org the name of your organization
* \param app the name of your application * \param app the name of your application

View File

@ -67,7 +67,9 @@ typedef enum
SDL_CONTROLLER_TYPE_PS4, SDL_CONTROLLER_TYPE_PS4,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO,
SDL_CONTROLLER_TYPE_VIRTUAL, SDL_CONTROLLER_TYPE_VIRTUAL,
SDL_CONTROLLER_TYPE_PS5 SDL_CONTROLLER_TYPE_PS5,
SDL_CONTROLLER_TYPE_AMAZON_LUNA,
SDL_CONTROLLER_TYPE_GOOGLE_STADIA
} SDL_GameControllerType; } SDL_GameControllerType;
typedef enum typedef enum
@ -99,6 +101,8 @@ typedef struct SDL_GameControllerButtonBind
/** /**
* To count the number of game controllers in the system for the following: * To count the number of game controllers in the system for the following:
*
* ```c
* int nJoysticks = SDL_NumJoysticks(); * int nJoysticks = SDL_NumJoysticks();
* int nGameControllers = 0; * int nGameControllers = 0;
* for (int i = 0; i < nJoysticks; i++) { * for (int i = 0; i < nJoysticks; i++) {
@ -106,6 +110,7 @@ typedef struct SDL_GameControllerButtonBind
* nGameControllers++; * 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: * 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 * guid,name,mappings
@ -119,8 +124,10 @@ typedef struct SDL_GameControllerButtonBind
* Buttons can be used as a controller axis and vice versa. * Buttons can be used as a controller axis and vice versa.
* *
* This string shows an example of a valid mapping for a controller * This string shows an example of a valid mapping for a controller
* "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",
* *
* ```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",
* ```
*/ */
/** /**
@ -161,8 +168,8 @@ extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw,
#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) #define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1)
/** /**
* Add support for controllers that SDL is unaware of or * Add support for controllers that SDL is unaware of or to cause an existing
* to cause an existing controller to have a different binding. * controller to have a different binding.
* *
* The mapping string has the format "GUID,name,mapping", where GUID is the * The mapping string has the format "GUID,name,mapping", where GUID is the
* string value from SDL_JoystickGetGUIDString(), name is the human readable * string value from SDL_JoystickGetGUIDString(), name is the human readable
@ -174,7 +181,7 @@ extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw,
* *
* This string shows an example of a valid mapping for a controller: * 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" * "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"
* ``` * ```
* *
@ -197,8 +204,8 @@ extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);
/** /**
* Get the mapping at a particular index. * Get the mapping at a particular index.
* *
* \returns the mapping string. Must be freed with SDL_free(). * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
* Returns NULL if the index is out of range. * the index is out of range.
*/ */
extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);
@ -254,8 +261,7 @@ extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gam
extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
/** /**
* Get the implementation dependent name for the game * Get the implementation dependent name for the game controller.
* controller.
* *
* This function can be called before any controllers are opened. * This function can be called before any controllers are opened.
* *
@ -293,8 +299,8 @@ extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(in
* *
* \param joystick_index the device_index of a device, from zero to * \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 * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if
* if no mapping is available. * no mapping is available.
*/ */
extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);
@ -336,11 +342,11 @@ extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL
/** /**
* Get the SDL_GameController associated with a player index. * Get the SDL_GameController associated with a player index.
* *
* Please note that the player index is _not_ the device index, nor is it * Please note that the player index is _not_ the device index, nor is it the
* the instance id! * instance id!
* *
* \param player_index the player index, which is not the device index or * \param player_index the player index, which is not the device index or the
* the instance id! * instance id!
* \returns the SDL_GameController associated with a player index. * \returns the SDL_GameController associated with a player index.
* *
* \sa SDL_GameControllerGetPlayerIndex * \sa SDL_GameControllerGetPlayerIndex
@ -383,7 +389,7 @@ extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_Gam
* For XInput controllers this returns the XInput user index. * For XInput controllers this returns the XInput user index.
* *
* \param gamecontroller the game controller object to query. * \param gamecontroller the game controller object to query.
* \returns player index for controller, or -1 if it's not available. * \returns the player index for controller, or -1 if it's not available.
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);
@ -401,7 +407,7 @@ extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController
* If the vendor ID isn't available this function returns 0. * If the vendor ID isn't available this function returns 0.
* *
* \param gamecontroller the game controller object to query. * \param gamecontroller the game controller object to query.
* \return USB vendor ID, or zero if unavailable. * \return the USB vendor ID, or zero if unavailable.
*/ */
extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller);
@ -411,7 +417,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *g
* If the product ID isn't available this function returns 0. * If the product ID isn't available this function returns 0.
* *
* \param gamecontroller the game controller object to query. * \param gamecontroller the game controller object to query.
* \return USB product ID, or zero if unavailable. * \return the USB product ID, or zero if unavailable.
*/ */
extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller);
@ -421,17 +427,18 @@ extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *
* If the product version isn't available this function returns 0. * If the product version isn't available this function returns 0.
* *
* \param gamecontroller the game controller object to query. * \param gamecontroller the game controller object to query.
* \return USB product version, or zero if unavailable. * \return the USB product version, or zero if unavailable.
*/ */
extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller);
/** /**
* Get the serial number of an opened controller, if available. * Get the serial number of an opened controller, if available.
* *
* Returns the serial number of the controller, or NULL if it is not available. * Returns the serial number of the controller, or NULL if it is not
* available.
* *
* \param gamecontroller the game controller object to query. * \param gamecontroller the game controller object to query.
* \return Serial number, or NULL if unavailable. * \return the serial number, or NULL if unavailable.
*/ */
extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
@ -526,6 +533,10 @@ typedef enum
* SDL_GameController mapping. You do not normally need to call this function * SDL_GameController mapping. You do not normally need to call this function
* unless you are parsing SDL_GameController mappings in your own code. * 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 * \param str string representing a SDL_GameController axis
* \returns the SDL_GameControllerAxis enum corresponding to the input string, * \returns the SDL_GameControllerAxis enum corresponding to the input string,
* or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
@ -553,9 +564,9 @@ extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameC
* *
* \param gamecontroller a game controller * \param gamecontroller a game controller
* \param axis an axis enum value (one of the SDL_GameControllerAxis values) * \param axis an axis enum value (one of the SDL_GameControllerAxis values)
* \returns a SDL_GameControllerButtonBind describing the bind. On * \returns a SDL_GameControllerButtonBind describing the bind. On failure
* failure (like the given Controller axis doesn't exist on the * (like the given Controller axis doesn't exist on the device), its
* device), its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
* *
* \since This function is available since SDL 2.0.0. * \since This function is available since SDL 2.0.0.
* *
@ -619,7 +630,7 @@ typedef enum
SDL_CONTROLLER_BUTTON_DPAD_DOWN, SDL_CONTROLLER_BUTTON_DPAD_DOWN,
SDL_CONTROLLER_BUTTON_DPAD_LEFT, SDL_CONTROLLER_BUTTON_DPAD_LEFT,
SDL_CONTROLLER_BUTTON_DPAD_RIGHT, SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button */ 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 */ SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 */
SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 */ SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 */
SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 */ SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 */
@ -639,7 +650,6 @@ typedef enum
* \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 * \returns the SDL_GameControllerButton enum corresponding to the input
* string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.
*
*/ */
extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str);
@ -664,9 +674,9 @@ extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_Gam
* *
* \param gamecontroller a game controller * \param gamecontroller a game controller
* \param button an button enum value (an SDL_GameControllerButton value) * \param button an button enum value (an SDL_GameControllerButton value)
* \returns a SDL_GameControllerButtonBind describing the bind. On * \returns a SDL_GameControllerButtonBind describing the bind. On failure
* failure (like the given Controller button doesn't exist on the * (like the given Controller button doesn't exist on the device),
* device), its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.
* *
* \since This function is available since SDL 2.0.0. * \since This function is available since SDL 2.0.0.
* *
@ -710,7 +720,8 @@ extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *ga
extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller);
/** /**
* Get the number of supported simultaneous fingers on a touchpad on a game controller. * Get the number of supported simultaneous fingers on a touchpad on a game
* controller.
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad);
@ -724,7 +735,6 @@ extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameControll
* *
* \param gamecontroller The controller to query * \param gamecontroller The controller to query
* \param type The type of sensor to query * \param type The type of sensor to query
*
* \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type);
@ -735,7 +745,6 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController
* \param gamecontroller The controller to update * \param gamecontroller The controller to update
* \param type The type of sensor to enable/disable * \param type The type of sensor to enable/disable
* \param enabled Whether data reporting should be enabled * \param enabled Whether data reporting should be enabled
*
* \returns 0 or -1 if an error occurred. * \returns 0 or -1 if an error occurred.
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled);
@ -745,11 +754,20 @@ extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameControlle
* *
* \param gamecontroller The controller to query * \param gamecontroller The controller to query
* \param type The type of sensor to query * \param type The type of sensor to query
*
* \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.
*/ */
extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); 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.
*/
extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type);
/** /**
* Get the current state of a game controller sensor. * Get the current state of a game controller sensor.
* *
@ -793,9 +811,9 @@ extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecon
* \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 * \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 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 * \param duration_ms The duration of the rumble effect, in milliseconds
*
* \returns 0, or -1 if trigger rumble isn't supported on this controller * \returns 0, or -1 if trigger rumble isn't supported on this controller
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
@ -820,6 +838,17 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *ga
*/ */
extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); 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
*/
extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size);
/** /**
* Close a game controller previously opened with SDL_GameControllerOpen(). * Close a game controller previously opened with SDL_GameControllerOpen().
* *

View File

@ -993,8 +993,7 @@ extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);
extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);
/** /**
* Get the number of effects a haptic device can play at * Get the number of effects a haptic device can play at the same time.
* the same time.
* *
* This is not supported on all platforms, but will always return a value. * This is not supported on all platforms, but will always return a value.
* *
@ -1038,8 +1037,7 @@ extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);
extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);
/** /**
* Check to see if an effect is supported by a haptic * Check to see if an effect is supported by a haptic device.
* device.
* *
* \param haptic the SDL_Haptic device to query * \param haptic the SDL_Haptic device to query
* \param effect the desired effect to query * \param effect the desired effect to query
@ -1125,7 +1123,9 @@ extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,
/** /**
* Stop the haptic effect on its associated haptic device. * Stop the haptic effect on its associated haptic device.
*
* * * *
*
* \param haptic the SDL_Haptic device to stop the effect on * \param haptic the SDL_Haptic device to stop the effect on
* \param effect the ID of the haptic effect to stop * \param effect the ID of the haptic effect to stop
* \returns 0 on success or a negative error code on failure; call * \returns 0 on success or a negative error code on failure; call
@ -1156,8 +1156,7 @@ extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,
int effect); int effect);
/** /**
* Get the status of the current effect on the specified * Get the status of the current effect on the specified haptic device.
* haptic device.
* *
* Device must support the SDL_HAPTIC_STATUS feature. * Device must support the SDL_HAPTIC_STATUS feature.
* *

File diff suppressed because it is too large Load Diff

View File

@ -167,14 +167,14 @@ extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
/** /**
* Get the player index of a joystick, or -1 if it's not available * Get the player index of a joystick, or -1 if it's not available This can be
* This can be called before any joysticks are opened. * called before any joysticks are opened.
*/ */
extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);
/** /**
* Get the implementation-dependent GUID for the joystick * Get the implementation-dependent GUID for the joystick at a given device
* at a given device index. * index.
* *
* This function can be called before any joysticks are opened. * This function can be called before any joysticks are opened.
* *
@ -191,8 +191,8 @@ extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_in
/** /**
* Get the USB vendor ID of a joystick, if available. * Get the USB vendor ID of a joystick, if available.
* *
* This can be called before any joysticks are opened. * This can be called before any joysticks are opened. If the vendor ID isn't
* If the vendor ID isn't available this function returns 0. * available this function returns 0.
* *
* \param device_index the index of the joystick to query (the N'th joystick * \param device_index the index of the joystick to query (the N'th joystick
* on the system * on the system
@ -204,8 +204,8 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);
/** /**
* Get the USB product ID of a joystick, if available. * Get the USB product ID of a joystick, if available.
* *
* This can be called before any joysticks are opened. * This can be called before any joysticks are opened. If the product ID isn't
* If the product ID isn't available this function returns 0. * available this function returns 0.
* *
* \param device_index the index of the joystick to query (the N'th joystick * \param device_index the index of the joystick to query (the N'th joystick
* on the system * on the system
@ -217,8 +217,8 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);
/** /**
* Get the product version of a joystick, if available. * Get the product version of a joystick, if available.
* *
* This can be called before any joysticks are opened. * This can be called before any joysticks are opened. If the product version
* If the product version isn't available this function returns 0. * isn't available this function returns 0.
* *
* \param device_index the index of the joystick to query (the N'th joystick * \param device_index the index of the joystick to query (the N'th joystick
* on the system * on the system
@ -242,8 +242,8 @@ extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_in
/** /**
* Get the instance ID of a joystick. * Get the instance ID of a joystick.
* *
* This can be called before any joysticks are opened. * This can be called before any joysticks are opened. If the index is out of
* If the index is out of range, this function will return -1. * range, this function will return -1.
* *
* \param device_index the index of the joystick to query (the N'th joystick * \param device_index the index of the joystick to query (the N'th joystick
* on the system * on the system
@ -322,11 +322,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);
/** /**
* Set values on an opened, virtual-joystick's axis. * Set values on an opened, virtual-joystick's axis.
* *
* Please note that values set here will not be applied until the next * Please note that values set here will not be applied until the next call to
* call to SDL_JoystickUpdate, which can either be called directly, * SDL_JoystickUpdate, which can either be called directly, or can be called
* or can be called indirectly through various other SDL APIs, * indirectly through various other SDL APIs, including, but not limited to
* including, but not limited to the following: SDL_PollEvent, * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
* SDL_PumpEvents, SDL_WaitEventTimeout, SDL_WaitEvent. * SDL_WaitEvent.
* *
* \param joystick the virtual joystick on which to set state. * \param joystick the virtual joystick on which to set state.
* \param axis the specific axis on the virtual joystick to set. * \param axis the specific axis on the virtual joystick to set.
@ -338,11 +338,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, i
/** /**
* Set values on an opened, virtual-joystick's button. * Set values on an opened, virtual-joystick's button.
* *
* Please note that values set here will not be applied until the next * Please note that values set here will not be applied until the next call to
* call to SDL_JoystickUpdate, which can either be called directly, * SDL_JoystickUpdate, which can either be called directly, or can be called
* or can be called indirectly through various other SDL APIs, * indirectly through various other SDL APIs, including, but not limited to
* including, but not limited to the following: SDL_PollEvent, * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
* SDL_PumpEvents, SDL_WaitEventTimeout, SDL_WaitEvent. * SDL_WaitEvent.
* *
* \param joystick the virtual joystick on which to set state. * \param joystick the virtual joystick on which to set state.
* \param button the specific button on the virtual joystick to set. * \param button the specific button on the virtual joystick to set.
@ -354,11 +354,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick,
/** /**
* Set values on an opened, virtual-joystick's hat. * Set values on an opened, virtual-joystick's hat.
* *
* Please note that values set here will not be applied until the next * Please note that values set here will not be applied until the next call to
* call to SDL_JoystickUpdate, which can either be called directly, * SDL_JoystickUpdate, which can either be called directly, or can be called
* or can be called indirectly through various other SDL APIs, * indirectly through various other SDL APIs, including, but not limited to
* including, but not limited to the following: SDL_PollEvent, * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
* SDL_PumpEvents, SDL_WaitEventTimeout, SDL_WaitEvent. * SDL_WaitEvent.
* *
* \param joystick the virtual joystick on which to set state. * \param joystick the virtual joystick on which to set state.
* \param hat the specific hat on the virtual joystick to set. * \param hat the specific hat on the virtual joystick to set.
@ -437,6 +437,7 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
/** /**
* Get the product version of an opened joystick, if available. * Get the product version of an opened joystick, if available.
*
* If the product version isn't available this function returns 0. * 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()
@ -450,7 +451,8 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joyst
* Returns the serial number of the joystick, or NULL if it is not available. * 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. * \returns the serial number of the selected joystick, or NULL if
* unavailable.
*/ */
extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick);
@ -609,12 +611,11 @@ extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
/** /**
* Get the current state of an axis control on a joystick. * Get the current state of an axis control on a joystick.
* *
* SDL makes no promises about what part of the joystick any given axis * SDL makes no promises about what part of the joystick any given axis refers
* refers to. Your game should have some sort of configuration UI to let * to. Your game should have some sort of configuration UI to let users
* users specify what each axis should be bound to. Alternately, SDL's * specify what each axis should be bound to. Alternately, SDL's higher-level
* higher-level Game Controller API makes a great effort to apply order * Game Controller API makes a great effort to apply order to this lower-level
* to this lower-level interface, so you know that a specific axis is the * interface, so you know that a specific axis is the "left thumb stick," etc.
* "left thumb stick," etc.
* *
* The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to
* 32767) representing the current position of the axis. It may be necessary * 32767) representing the current position of the axis. It may be necessary
@ -688,8 +689,7 @@ extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,
* Get the ball axis change since the last poll. * Get the ball axis change since the last poll.
* *
* Trackballs can only return relative motion since the last call to * Trackballs can only return relative motion since the last call to
* SDL_JoystickGetBall(), these motion deltas are placed into `dx` and * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`.
* `dy`.
* *
* Most joysticks do not have trackballs. * Most joysticks do not have trackballs.
* *
@ -730,7 +730,6 @@ extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,
* \param high_frequency_rumble The intensity of the high frequency (right) * \param high_frequency_rumble The intensity of the high frequency (right)
* rumble motor, from 0 to 0xFFFF * rumble motor, from 0 to 0xFFFF
* \param duration_ms The duration of the rumble effect, in milliseconds * \param duration_ms The duration of the rumble effect, in milliseconds
*
* \returns 0, or -1 if rumble isn't supported on this joystick * \returns 0, or -1 if rumble isn't supported on this joystick
*/ */
extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);
@ -738,12 +737,13 @@ extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 lo
/** /**
* Start a rumble effect in the joystick's triggers * Start a rumble effect in the joystick's triggers
* *
* Each call to this function cancels any previous trigger rumble effect, * Each call to this function cancels any previous trigger rumble effect, and
* and calling it with 0 intensity stops any rumbling. * calling it with 0 intensity stops any rumbling.
* *
* Note that this function is for _trigger_ rumble; the first joystick to * Note that this function is for _trigger_ rumble; the first joystick to
* support this was the PlayStation 5's DualShock 5 controller. If you want * support this was the PlayStation 5's DualShock 5 controller. If you want
* the (more common) whole-controller rumble, use SDL_JoystickRumble() instead. * 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 * \param left_rumble The intensity of the left trigger rumble motor, from 0
@ -751,7 +751,6 @@ extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 lo
* \param right_rumble The intensity of the right trigger rumble motor, from 0 * \param right_rumble The intensity of the right trigger rumble motor, from 0
* to 0xFFFF * to 0xFFFF
* \param duration_ms The duration of the rumble effect, in milliseconds * \param duration_ms The duration of the rumble effect, in milliseconds
*
* \returns 0, or -1 if trigger rumble isn't supported on this joystick * \returns 0, or -1 if trigger rumble isn't supported on this joystick
*/ */
extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);
@ -777,11 +776,20 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);
* \param red The intensity of the red LED * \param red The intensity of the red LED
* \param green The intensity of the green LED * \param green The intensity of the green LED
* \param blue The intensity of the blue LED * \param blue The intensity of the blue LED
*
* \returns 0 on success, -1 if this joystick does not have a modifiable LED * \returns 0 on success, -1 if this joystick does not have a modifiable LED
*/ */
extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); 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
*/
extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size);
/** /**
* Close a joystick previously opened with SDL_JoystickOpen(). * Close a joystick previously opened with SDL_JoystickOpen().
* *

View File

@ -65,8 +65,8 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
* Get a snapshot of the current state of the keyboard. * Get a snapshot of the current state of the keyboard.
* *
* The pointer returned is a pointer to an internal SDL array. It will be * 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 * valid for the whole lifetime of the application and should not be freed by
* by the caller. * the caller.
* *
* A array element with a value of 1 means that the key is pressed and a value * 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 * of 0 means that it is not. Indexes into this array are obtained by using
@ -118,8 +118,8 @@ extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);
extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
/** /**
* Get the key code corresponding to the given scancode * Get the key code corresponding to the given scancode according to the
* according to the current keyboard layout. * current keyboard layout.
* *
* See SDL_Keycode for details. * See SDL_Keycode for details.
* *
@ -132,8 +132,8 @@ extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);
extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);
/** /**
* Get the scancode corresponding to the given key code * Get the scancode corresponding to the given key code according to the
* according to the current keyboard layout. * current keyboard layout.
* *
* See SDL_Scancode for details. * See SDL_Scancode for details.
* *
@ -220,8 +220,8 @@ extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);
* *
* This function will start accepting Unicode text input events in the focused * This function will start accepting Unicode text input events in the focused
* SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and
* SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in
* in pair with SDL_StopTextInput(). * pair with SDL_StopTextInput().
* *
* On some platforms using this function activates the screen keyboard. * On some platforms using this function activates the screen keyboard.
* *

View File

@ -47,41 +47,41 @@ typedef struct SDL_Locale
} SDL_Locale; } SDL_Locale;
/** /**
* \brief Report the user's preferred locale. * Report the user's preferred locale.
* *
* This returns an array of SDL_Locale structs, the final item zeroed out. * This returns an array of SDL_Locale structs, the final item zeroed out.
* When the caller is done with this array, it should call SDL_free() on * When the caller is done with this array, it should call SDL_free() on the
* the returned value; all the memory involved is allocated in a single * returned value; all the memory involved is allocated in a single block, so
* block, so a single SDL_free() will suffice. * a single SDL_free() will suffice.
* *
* Returned language strings are in the format xx, where 'xx' is an ISO-639 * Returned language strings are in the format xx, where 'xx' is an ISO-639
* language specifier (such as "en" for English, "de" for German, etc). * language specifier (such as "en" for English, "de" for German, etc).
* Country strings are in the format YY, where "YY" is an ISO-3166 country * Country strings are in the format YY, where "YY" is an ISO-3166 country
* code (such as "US" for the United States, "CA" for Canada, etc). Country * code (such as "US" for the United States, "CA" for Canada, etc). Country
* might be NULL if there's no specific guidance on them (so you might get * might be NULL if there's no specific guidance on them (so you might get {
* { "en", "US" } for American English, but { "en", NULL } means "English * "en", "US" } for American English, but { "en", NULL } means "English
* language, generically"). Language strings are never NULL, except to * language, generically"). Language strings are never NULL, except to
* terminate the array. * terminate the array.
* *
* Please note that not all of these strings are 2 characters; some are * Please note that not all of these strings are 2 characters; some are three
* three or more. * or more.
* *
* The returned list of locales are in the order of the user's preference. * The returned list of locales are in the order of the user's preference. For
* For example, a German citizen that is fluent in US English and knows * example, a German citizen that is fluent in US English and knows enough
* enough Japanese to navigate around Tokyo might have a list like: * Japanese to navigate around Tokyo might have a list like: { "de", "en_US",
* { "de", "en_US", "jp", NULL }. Someone from England might prefer British * "jp", NULL }. Someone from England might prefer British English (where
* English (where "color" is spelled "colour", etc), but will settle for * "color" is spelled "colour", etc), but will settle for anything like it: {
* anything like it: { "en_GB", "en", NULL }. * "en_GB", "en", NULL }.
* *
* This function returns NULL on error, including when the platform does not * This function returns NULL on error, including when the platform does not
* supply this information at all. * supply this information at all.
* *
* This might be a "slow" call that has to query the operating system. It's * This might be a "slow" call that has to query the operating system. It's
* best to ask for this once and save the results. However, this list can * best to ask for this once and save the results. However, this list can
* change, usually because the user has changed a system preference outside * change, usually because the user has changed a system preference outside of
* of your program; SDL will send an SDL_LOCALECHANGED event in this case, * your program; SDL will send an SDL_LOCALECHANGED event in this case, if
* if possible, and you can call this function again to get an updated copy * possible, and you can call this function again to get an updated copy of
* of preferred locales. * preferred locales.
* *
* \return array of locales, terminated with a locale with a NULL language * \return array of locales, terminated with a locale with a NULL language
* field. Will return NULL on error. * field. Will return NULL on error.

View File

@ -155,9 +155,10 @@ extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);
/** /**
* Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO.
* *
= * \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 * \param ... additional parameters matching % tokens in the `fmt` string, if
* any
* *
* \sa SDL_LogCritical * \sa SDL_LogCritical
* \sa SDL_LogDebug * \sa SDL_LogDebug

View File

@ -122,7 +122,8 @@ extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
/** /**
* Circumvent failure of SDL_Init() when not using SDL_main() as an entry point. * Circumvent failure of SDL_Init() when not using SDL_main() as an entry
* point.
* *
* This function is defined in SDL_main.h, along with the preprocessor rule to * This function is defined in SDL_main.h, along with the preprocessor rule to
* redefine main() as SDL_main(). Thus to ensure that your main() function * redefine main() as SDL_main(). Thus to ensure that your main() function

View File

@ -49,16 +49,14 @@ typedef void *SDL_MetalView;
/* @{ */ /* @{ */
/** /**
* \brief Create a CAMetalLayer-backed NSView/UIView and attach it to the * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified
* specified window. * window.
* *
* On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on its * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on
* own. It is up to user code to do that. * its own. It is up to user code to do that.
* *
* The returned handle can be casted directly to a NSView or UIView. * The returned handle can be casted directly to a NSView or UIView. To access
* To access the backing CAMetalLayer, call SDL_Metal_GetLayer(). * the backing CAMetalLayer, call SDL_Metal_GetLayer().
*
* \note \a window must be created with the SDL_WINDOW_METAL flag.
* *
* \sa SDL_Metal_DestroyView * \sa SDL_Metal_DestroyView
* \sa SDL_Metal_GetLayer * \sa SDL_Metal_GetLayer
@ -66,7 +64,7 @@ typedef void *SDL_MetalView;
extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window);
/** /**
* \brief Destroy an existing SDL_MetalView object. * Destroy an existing SDL_MetalView object.
* *
* This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was
* called after SDL_CreateWindow. * called after SDL_CreateWindow.
@ -76,32 +74,21 @@ extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window);
extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view);
/** /**
* \brief Get a pointer to the backing CAMetalLayer for the given view. * Get a pointer to the backing CAMetalLayer for the given view.
* *
* \sa SDL_MetalCreateView * \sa SDL_MetalCreateView
*/ */
extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
/** /**
* \brief Get the size of a window's underlying drawable in pixels (for use * Get the size of a window's underlying drawable in pixels (for use with
* with setting viewport, scissor & etc). * setting viewport, scissor & etc).
* *
* \param window SDL_Window from which the drawable size should be queried * \param window SDL_Window from which the drawable size should be queried
* \param w Pointer to variable for storing the width in pixels, * \param w Pointer to variable for storing the width in pixels, may be NULL
* may be NULL
* \param h Pointer to variable for storing the height in pixels,
* may be NULL
* *
* This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI * \sa SDL_GetWindowSize
* drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a * \sa SDL_CreateWindow
* platform with high-DPI support (Apple calls this "Retina"), and not disabled
* by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
*
* \note On macOS high-DPI support must be enabled for an application by
* setting NSHighResolutionCapable to true in its Info.plist.
*
* \sa SDL_GetWindowSize()
* \sa SDL_CreateWindow()
*/ */
extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w,
int *h); int *h);

View File

@ -110,9 +110,9 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);
* window might not be in sync at all times. * window might not be in sync at all times.
* *
* Note: SDL_GetMouseState() returns the mouse position as SDL understands it * Note: SDL_GetMouseState() returns the mouse position as SDL understands it
* from the last pump of the event queue. This function, however, queries * from the last pump of the event queue. This function, however, queries the
* the OS for the current mouse position, and as such, might be a slightly * OS for the current mouse position, and as such, might be a slightly less
* less efficient function. Unless you know what you're doing and have a good * efficient function. Unless you know what you're doing and have a good
* reason to use this function, you probably want SDL_GetMouseState() instead. * 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 * \param x filled in with the current X coord relative to the desktop; can be
@ -150,6 +150,9 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);
* *
* This function generates a mouse motion event. * This function generates a mouse motion event.
* *
* Note that this function will appear to succeed, but not actually move the
* mouse when used over Microsoft Remote Desktop.
*
* \param window the window to move the mouse into, or NULL for the current * \param window the window to move the mouse into, or NULL for the current
* mouse focus * mouse focus
* \param x the x coordinate within the window * \param x the x coordinate within the window
@ -168,6 +171,9 @@ extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,
* A failure of this function usually means that it is unsupported by a * A failure of this function usually means that it is unsupported by a
* platform. * platform.
* *
* 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 x the x coordinate
* \param y the y coordinate * \param y the y coordinate
* \returns 0 on success or a negative error code on failure; call * \returns 0 on success or a negative error code on failure; call
@ -186,6 +192,10 @@ extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);
* will try to report continuous motion in the current window. Only relative * will try to report continuous motion in the current window. Only relative
* motion events will be delivered, the mouse position will not change. * motion events will be delivered, the mouse position will not change.
* *
* Note that this function will not be able to provide continuous relative
* motion when used over Microsoft Remote Desktop, instead motion is limited
* to the bounds of the screen.
*
* This function will flush any pending mouse motion. * This function will flush any pending mouse motion.
* *
* \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable.
@ -245,8 +255,7 @@ extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);
extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
/** /**
* Create a cursor using the specified bitmap data and * Create a cursor using the specified bitmap data and mask (in MSB format).
* mask (in MSB format).
* *
* `mask` has to be in MSB (Most Significant Bit) format. * `mask` has to be in MSB (Most Significant Bit) format.
* *
@ -256,7 +265,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);
* *
* - data=0, mask=1: white * - data=0, mask=1: white
* - data=1, mask=1: black * - data=1, mask=1: black
* - data=0, mask=1: transparent * - data=0, mask=0: transparent
* - data=1, mask=0: inverted color if possible, black if not. * - data=1, mask=0: inverted color if possible, black if not.
* *
* Cursors created with this function must be freed with SDL_FreeCursor(). * Cursors created with this function must be freed with SDL_FreeCursor().
@ -379,8 +388,8 @@ extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);
* The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE`
* displays the cursor and passing `SDL_DISABLE` hides it. * displays the cursor and passing `SDL_DISABLE` hides it.
* *
* The current state of the mouse cursor can be queried by passing `SDL_QUERY`; * The current state of the mouse cursor can be queried by passing
* either `SDL_DISABLE` or `SDL_ENABLE` will be returned. * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned.
* *
* \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it,
* `SDL_QUERY` to query the current state without changing it. * `SDL_QUERY` to query the current state without changing it.

View File

@ -86,8 +86,8 @@ extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);
* it. Of all threads waiting to lock the mutex, only one may do so at a time. * it. Of all threads waiting to lock the mutex, only one may do so at a time.
* *
* It is legal for the owning thread to lock an already-locked mutex. It must * It is legal for the owning thread to lock an already-locked mutex. It must
* unlock it the same number of times before it is actually made available * unlock it the same number of times before it is actually made available for
* for other threads in the system (this is known as a "recursive mutex"). * 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. * \return 0, or -1 on error.
@ -105,8 +105,8 @@ extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex);
* don't want to wait for it, and will return to it to try again later. * 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 return 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for
* SDL_GetError() for more information. * more information.
* *
* \sa SDL_CreateMutex * \sa SDL_CreateMutex
* \sa SDL_DestroyMutex * \sa SDL_DestroyMutex
@ -119,8 +119,8 @@ extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex);
* Unlock the mutex. * Unlock the mutex.
* *
* It is legal for the owning thread to lock an already-locked mutex. It must * It is legal for the owning thread to lock an already-locked mutex. It must
* unlock it the same number of times before it is actually made available * unlock it the same number of times before it is actually made available for
* for other threads in the system (this is known as a "recursive mutex"). * other threads in the system (this is known as a "recursive mutex").
* *
* It is an error to unlock a mutex that has not been locked by the current * It is an error to unlock a mutex that has not been locked by the current
* thread, and doing so results in undefined behavior. * thread, and doing so results in undefined behavior.
@ -250,8 +250,7 @@ extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);
extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);
/** /**
* Wait until a semaphore has a positive value and then * Wait until a semaphore has a positive value and then decrements it.
* decrements it.
* *
* This function suspends the calling thread until either the semaphore * This function suspends the calling thread until either the semaphore
* pointed to by `sem` has a positive value, the call is interrupted by a * pointed to by `sem` has a positive value, the call is interrupted by a
@ -371,10 +370,10 @@ extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);
/** /**
* Wait until a condition variable is signaled. * Wait until a condition variable is signaled.
* *
* This function unlocks the specified `mutex` and waits for another thread * This function unlocks the specified `mutex` and waits for another thread to
* to call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
* `cond`. Once the condition variable is signaled, the mutex is re-locked * `cond`. Once the condition variable is signaled, the mutex is re-locked and
* and the function returns. * the function returns.
* *
* The mutex must be locked before calling this function. * The mutex must be locked before calling this function.
* *
@ -397,10 +396,10 @@ extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);
/** /**
* Wait until a condition variable is signaled or a certain time has passed. * Wait until a condition variable is signaled or a certain time has passed.
* *
* This function unlocks the specified `mutex` and waits for another thread * This function unlocks the specified `mutex` and waits for another thread to
* to call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable
* `cond`, or for the specified time to elapse. Once the condition variable * `cond`, or for the specified time to elapse. Once the condition variable is
* is signaled or the time elapsed, the mutex is re-locked and the function * signaled or the time elapsed, the mutex is re-locked and the function
* returns. * returns.
* *
* The mutex must be locked before calling this function. * The mutex must be locked before calling this function.

View File

@ -70,6 +70,27 @@
/* lets us know what version of Mac OS X we're compiling on */ /* lets us know what version of Mac OS X we're compiling on */
#include "AvailabilityMacros.h" #include "AvailabilityMacros.h"
#include "TargetConditionals.h" #include "TargetConditionals.h"
/* Fix building with older SDKs that don't define these
See this for more information:
https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets
*/
#ifndef TARGET_OS_MACCATALYST
#define TARGET_OS_MACCATALYST 0
#endif
#ifndef TARGET_OS_IOS
#define TARGET_OS_IOS 0
#endif
#ifndef TARGET_OS_IPHONE
#define TARGET_OS_IPHONE 0
#endif
#ifndef TARGET_OS_TV
#define TARGET_OS_TV 0
#endif
#ifndef TARGET_OS_SIMULATOR
#define TARGET_OS_SIMULATOR 0
#endif
#if TARGET_OS_TV #if TARGET_OS_TV
#undef __TVOS__ #undef __TVOS__
#define __TVOS__ 1 #define __TVOS__ 1

View File

@ -169,8 +169,8 @@ extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,
/** /**
* Calculate a minimal rectangle enclosing a set of points. * Calculate a minimal rectangle enclosing a set of points.
* *
* If `clip` is not NULL then only points inside of the clipping rectangle * If `clip` is not NULL then only points inside of the clipping rectangle are
* are considered. * considered.
* *
* \param points an array of SDL_Point structures representing points to be * \param points an array of SDL_Point structures representing points to be
* enclosed * enclosed

View File

@ -411,8 +411,7 @@ extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,
Uint8 alpha); Uint8 alpha);
/** /**
* Get the additional alpha value multiplied into render * Get the additional alpha value multiplied into render copy operations.
* copy operations.
* *
* \param texture the texture to query * \param texture the texture to query
* \param alpha a pointer filled in with the current alpha value * \param alpha a pointer filled in with the current alpha value
@ -426,8 +425,7 @@ extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,
Uint8 * alpha); Uint8 * alpha);
/** /**
* Set the blend mode for a texture, used by * Set the blend mode for a texture, used by SDL_RenderCopy().
* SDL_RenderCopy().
* *
* If the blend mode is not supported, the closest supported mode is chosen * If the blend mode is not supported, the closest supported mode is chosen
* and this function returns -1. * and this function returns -1.
@ -465,7 +463,7 @@ extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,
* \param scaleMode the SDL_ScaleMode to use for texture scaling. * \param scaleMode the SDL_ScaleMode to use for texture scaling.
* \returns 0 on success, or -1 if the texture is not valid. * \returns 0 on success, or -1 if the texture is not valid.
* *
* \sa SDL_GetTextureScaleMode() * \sa SDL_GetTextureScaleMode
*/ */
extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture,
SDL_ScaleMode scaleMode); SDL_ScaleMode scaleMode);
@ -477,7 +475,7 @@ extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture,
* \param scaleMode a pointer filled in with the current scale mode. * \param scaleMode a pointer filled in with the current scale mode.
* \return 0 on success, or -1 if the texture is not valid. * \return 0 on success, or -1 if the texture is not valid.
* *
* \sa SDL_SetTextureScaleMode() * \sa SDL_SetTextureScaleMode
*/ */
extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture,
SDL_ScaleMode *scaleMode); SDL_ScaleMode *scaleMode);
@ -514,8 +512,8 @@ extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,
const void *pixels, int pitch); const void *pixels, int pitch);
/** /**
* Update a rectangle within a planar YV12 or IYUV * Update a rectangle within a planar YV12 or IYUV texture with new pixel
* texture with new pixel data. * data.
* *
* You can use SDL_UpdateTexture() as long as your pixel data is a contiguous * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous
* block of Y and U/V planes in the proper order, but this function is * block of Y and U/V planes in the proper order, but this function is
@ -557,9 +555,11 @@ extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,
* \param rect a pointer to the rectangle of pixels to update, or NULL to * \param rect a pointer to the rectangle of pixels to update, or NULL to
* update the entire texture. * update the entire texture.
* \param Yplane the raw pixel data for the Y plane. * \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 Ypitch the number of bytes between rows of pixel data for the Y
* plane.
* \param UVplane the raw pixel data for the UV plane. * \param UVplane the raw pixel data for the UV plane.
* \param UVpitch the number of bytes between rows of pixel data for the UV plane. * \param UVpitch the number of bytes between rows of pixel data for the UV
* plane.
* \return 0 on success, or -1 if the texture is not valid. * \return 0 on success, or -1 if the texture is not valid.
*/ */
extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture,
@ -623,8 +623,8 @@ extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,
* \returns 0 on success, or -1 if the texture is not valid or was not created * \returns 0 on success, or -1 if the texture is not valid or was not created
* with `SDL_TEXTUREACCESS_STREAMING` * with `SDL_TEXTUREACCESS_STREAMING`
* *
* \sa SDL_LockTexture() * \sa SDL_LockTexture
* \sa SDL_UnlockTexture() * \sa SDL_UnlockTexture
*/ */
extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,
const SDL_Rect *rect, const SDL_Rect *rect,
@ -638,8 +638,8 @@ extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,
* be provided. You must fully initialize any area of a texture that you lock * be provided. You must fully initialize any area of a texture that you lock
* before unlocking it, as the pixels might otherwise be uninitialized memory. * before unlocking it, as the pixels might otherwise be uninitialized memory.
* *
* Which is to say: locking and immediately unlocking a texture can result * Which is to say: locking and immediately unlocking a texture can result in
* in corrupted textures, depending on the renderer in use. * corrupted textures, depending on the renderer in use.
* *
* \param texture a texture locked by SDL_LockTexture() * \param texture a texture locked by SDL_LockTexture()
* *
@ -663,8 +663,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *rendere
* Set a texture as the current rendering target. * Set a texture as the current rendering target.
* *
* Before using this function, you should check the * Before using this function, you should check the
* `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if
* if render targets are supported. * render targets are supported.
* *
* The default render target is the window for which the renderer was created. * 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 * To stop rendering to a texture and render to the window again, call this
@ -672,8 +672,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *rendere
* *
* \param renderer the rendering context * \param renderer the rendering context
* \param texture the targeted texture, which must be created with the * \param texture the targeted texture, which must be created with the
* `SDL_TEXTUREACCESS_TARGET` flag, or NULL * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the
* to render to the window instead of a texture. * window instead of a texture.
* \returns 0 on success or a negative error code on failure; call * \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information. * SDL_GetError() for more information.
* *
@ -709,7 +709,8 @@ extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer
* *
* If the output display is a window, mouse and touch events in the window * If the output display is a window, mouse and touch events in the window
* will be filtered and scaled so they seem to arrive within the logical * will be filtered and scaled so they seem to arrive within the logical
* resolution. * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether
* relative motion events are also scaled.
* *
* If this function results in scaling or subpixel drawing by the rendering * If this function results in scaling or subpixel drawing by the rendering
* backend, it will be handled using the appropriate quality hints. * backend, it will be handled using the appropriate quality hints.
@ -779,8 +780,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * render
/** /**
* Set the drawing area for rendering on the current target. * Set the drawing area for rendering on the current target.
* *
* When the window is resized, the viewport is reset to fill the entire * When the window is resized, the viewport is reset to fill the entire new
* new window size. * window size.
* *
* \param renderer the rendering context * \param renderer the rendering context
* \param rect the SDL_Rect structure representing the drawing area, or NULL * \param rect the SDL_Rect structure representing the drawing area, or NULL
@ -891,8 +892,8 @@ extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,
/** /**
* Set the color used for drawing operations (Rect, Line and Clear). * Set the color used for drawing operations (Rect, Line and Clear).
* *
* Set the color for drawing or filling rectangles, lines, and points, * Set the color for drawing or filling rectangles, lines, and points, and for
* and for SDL_RenderClear(). * SDL_RenderClear().
* *
* \param renderer the rendering context * \param renderer the rendering context
* \param r the red value used to draw on the rendering target * \param r the red value used to draw on the rendering target
@ -1234,9 +1235,9 @@ extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,
* Copy a portion of the texture to the current rendering, with optional * Copy a portion of the texture to the current rendering, with optional
* rotation and flipping. * rotation and flipping.
* *
* Copy a portion of the texture to the current rendering * Copy a portion of the texture to the current rendering target, optionally
* target, optionally rotating it by angle around the given center and also * rotating it by angle around the given center and also flipping it
* flipping it top-bottom and/or left-right. * top-bottom and/or left-right.
* *
* The texture is blended with the destination based on its blend mode set * The texture is blended with the destination based on its blend mode set
* with SDL_SetTextureBlendMode(). * with SDL_SetTextureBlendMode().
@ -1329,7 +1330,8 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,
* Draw a rectangle on the current rendering target at subpixel precision. * Draw a rectangle on the current rendering target at subpixel precision.
* *
* \param renderer The renderer which should draw a rectangle. * \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. * \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
*/ */
extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,
@ -1349,8 +1351,8 @@ extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,
int count); int count);
/** /**
* Fill a rectangle on the current rendering target with the drawing color * Fill a rectangle on the current rendering target with the drawing color at
* at subpixel precision. * subpixel precision.
* *
* \param renderer The renderer which should fill a rectangle. * \param renderer The renderer which should fill a rectangle.
* \param rect A pointer to the destination rectangle, or NULL for the entire * \param rect A pointer to the destination rectangle, or NULL for the entire
@ -1391,8 +1393,8 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
const SDL_FRect * dstrect); const SDL_FRect * dstrect);
/** /**
* Copy a portion of the source texture to the current rendering target, * Copy a portion of the source texture to the current rendering target, with
* with rotation and flipping, at subpixel precision. * rotation and flipping, at subpixel precision.
* *
* \param renderer The renderer which should copy parts of a texture. * \param renderer The renderer which should copy parts of a texture.
* \param texture The source texture. * \param texture The source texture.
@ -1400,10 +1402,13 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,
* texture. * texture.
* \param dstrect A pointer to the destination rectangle, or NULL for the * \param dstrect A pointer to the destination rectangle, or NULL for the
* entire rendering target. * 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 * \param angle An angle in degrees that indicates the rotation that will be
* \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). * applied to dstrect, rotating it in a clockwise direction
* \param flip An SDL_RendererFlip value stating which flipping actions should be performed on the texture * \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 * \return 0 on success, or -1 on error
*/ */
extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
@ -1421,7 +1426,7 @@ extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,
* frequently. * frequently.
* *
* `pitch` specifies the number of bytes between rows in the destination * `pitch` specifies the number of bytes between rows in the destination
* `pixels data. This allows you to write to a subrectangle or have padded * `pixels` data. This allows you to write to a subrectangle or have padded
* rows in the destination. Generally, `pitch` should equal the number of * rows in the destination. Generally, `pitch` should equal the number of
* pixels per row in the `pixels` data times the number of bytes per pixel, * pixels per row in the `pixels` data times the number of bytes per pixel,
* but it might contain additional padding (for example, 24bit RGB Windows * but it might contain additional padding (for example, 24bit RGB Windows
@ -1443,8 +1448,7 @@ extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,
void *pixels, int pitch); void *pixels, int pitch);
/** /**
* Update the screen with any rendering performed since * Update the screen with any rendering performed since the previous call.
* the previous call.
* *
* SDL's rendering functions operate on a backbuffer; that is, calling a * SDL's rendering functions operate on a backbuffer; that is, calling a
* rendering function such as SDL_RenderDrawLine() does not directly put a * rendering function such as SDL_RenderDrawLine() does not directly put a
@ -1504,9 +1508,9 @@ extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
* Force the rendering context to flush any pending commands to the underlying * Force the rendering context to flush any pending commands to the underlying
* rendering API. * rendering API.
* *
* You do not need to (and in fact, shouldn't) call this function unless * You do not need to (and in fact, shouldn't) call this function unless you
* you are planning to call into OpenGL/Direct3D/Metal/whatever directly * are planning to call into OpenGL/Direct3D/Metal/whatever directly in
* in addition to using an SDL_Renderer. * addition to using an SDL_Renderer.
* *
* This is for a very-specific case: if you are using SDL's render API, you * This is for a very-specific case: if you are using SDL's render API, you
* asked for a specific renderer backend (OpenGL, Direct3D, etc), you set * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set
@ -1519,9 +1523,9 @@ extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);
* maximum performance out of a specific situation. In all other cases, SDL * maximum performance out of a specific situation. In all other cases, SDL
* will do the right thing, perhaps at a performance loss. * will do the right thing, perhaps at a performance loss.
* *
* This function is first available in SDL 2.0.10, and is not needed in * This function is first available in SDL 2.0.10, and is not needed in 2.0.9
* 2.0.9 and earlier, as earlier versions did not queue rendering commands * and earlier, as earlier versions did not queue rendering commands at all,
* at all, instead flushing them to the OS immediately. * 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 * \returns 0 on success or a negative error code on failure; call
@ -1589,10 +1593,10 @@ extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);
* headers, but it can be safely cast to a `CAMetalLayer *`. * headers, but it can be safely cast to a `CAMetalLayer *`.
* *
* \param renderer The renderer to query * \param renderer The renderer to query
* \returns CAMetalLayer* on success, or NULL if the renderer isn't a Metal * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a
* renderer * Metal renderer
* *
* \sa SDL_RenderGetMetalCommandEncoder() * \sa SDL_RenderGetMetalCommandEncoder
*/ */
extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
@ -1603,10 +1607,10 @@ extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);
* headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`. * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`.
* *
* \param renderer The renderer to query * \param renderer The renderer to query
* \returns `id<MTLRenderCommandEncoder>` on success, or NULL if the renderer * \returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the
* isn't a Metal renderer. * renderer isn't a Metal renderer.
* *
* \sa SDL_RenderGetMetalLayer() * \sa SDL_RenderGetMetalLayer
*/ */
extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);

View File

@ -230,8 +230,8 @@ extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,
/** /**
* Determine the current read/write offset in an SDL_RWops data stream. * Determine the current read/write offset in an SDL_RWops data stream.
* *
* SDL_RWtell is actually a wrapper function that calls the SDL_RWops's * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek`
* `seek` method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify
* application development. * application development.
* *
* \param context a SDL_RWops data stream object from which to get the current * \param context a SDL_RWops data stream object from which to get the current
@ -284,9 +284,9 @@ extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,
* Write to an SDL_RWops data stream. * Write to an SDL_RWops data stream.
* *
* This function writes exactly `num` objects each of size `size` from the * This function writes exactly `num` objects each of size `size` from the
* area pointed at by `ptr` to the stream. If this fails for any reason, * area pointed at by `ptr` to the stream. If this fails for any reason, it'll
* it'll return less than `num` to demonstrate how far the write progressed. * return less than `num` to demonstrate how far the write progressed. On
* On success, it returns `num`. * success, it returns `num`.
* *
* SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's
* `write` method appropriately, to simplify application development. * `write` method appropriately, to simplify application development.
@ -321,8 +321,8 @@ extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,
* Note that if this fails to flush the stream to disk, this function reports * Note that if this fails to flush the stream to disk, this function reports
* an error, but the SDL_RWops is still invalid once this function returns. * an error, but the SDL_RWops is still invalid once this function returns.
* *
* SDL_RWclose() is actually a macro that calls the SDL_RWops's `close` * SDL_RWclose() is actually a macro that calls the SDL_RWops's `close` method
* method appropriately, to simplify application development. * appropriately, to simplify application development.
* *
* \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 * \returns 0 on success or a negative error code on failure; call

View File

@ -130,9 +130,9 @@ typedef enum
* If you are using the sensor API or handling events from multiple threads * If you are using the sensor API or handling events from multiple threads
* you should use these locking functions to protect access to the sensors. * you should use these locking functions to protect access to the sensors.
* *
* In particular, you are guaranteed that the sensor list won't change, so * In particular, you are guaranteed that the sensor list won't change, so the
* the API functions that take a sensor index will be valid, and sensor * API functions that take a sensor index will be valid, and sensor events
* events will not be delivered. * will not be delivered.
*/ */
extern DECLSPEC void SDLCALL SDL_LockSensors(void); extern DECLSPEC void SDLCALL SDL_LockSensors(void);
extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); extern DECLSPEC void SDLCALL SDL_UnlockSensors(void);
@ -140,7 +140,7 @@ extern DECLSPEC void SDLCALL SDL_UnlockSensors(void);
/** /**
* Count the number of sensors attached to the system right now. * Count the number of sensors attached to the system right now.
* *
* \returns The number of sensors detected. * \returns the number of sensors detected.
*/ */
extern DECLSPEC int SDLCALL SDL_NumSensors(void); extern DECLSPEC int SDLCALL SDL_NumSensors(void);
@ -148,7 +148,7 @@ extern DECLSPEC int SDLCALL SDL_NumSensors(void);
* Get the implementation dependent name of a sensor. * 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. * \returns the sensor name, or NULL if `device_index` is out of range.
*/ */
extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
@ -156,7 +156,7 @@ extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
* Get the type of a sensor. * 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 * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is
* out of range. * out of range.
*/ */
extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
@ -165,7 +165,7 @@ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index)
* Get the platform dependent type of a sensor. * 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 * \returns the sensor platform dependent type, or -1 if `device_index` is out
* of range. * of range.
*/ */
extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
@ -174,7 +174,7 @@ extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index)
* Get the instance ID of a sensor. * 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. * \returns the sensor instance ID, or -1 if `device_index` is out of range.
*/ */
extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
@ -182,7 +182,7 @@ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_in
* Open a sensor for use. * 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. * \returns an SDL_Sensor sensor object, or NULL if an error occurred.
*/ */
extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
@ -190,7 +190,7 @@ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
* Return the SDL_Sensor associated with an instance id. * 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. * \returns an SDL_Sensor object.
*/ */
extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
@ -198,7 +198,7 @@ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instan
* Get the implementation dependent name of a sensor * 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. * \returns the sensor name, or NULL if `sensor` is NULL.
*/ */
extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
@ -206,7 +206,7 @@ extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
* Get the type of a 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 * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is
* NULL. * NULL.
*/ */
extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
@ -215,7 +215,7 @@ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
* Get the platform dependent type of a 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. * \returns the sensor platform dependent type, or -1 if `sensor` is NULL.
*/ */
extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
@ -223,7 +223,7 @@ extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
* Get the instance ID of a 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. * \returns the sensor instance ID, or -1 if `sensor` is NULL.
*/ */
extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);

View File

@ -44,7 +44,8 @@ extern "C" {
#define SDL_WINDOW_LACKS_SHAPE -3 #define SDL_WINDOW_LACKS_SHAPE -3
/** /**
* \brief Create a window that can be shaped with the specified position, dimensions, and flags. * Create a window that can be shaped with the specified position, dimensions,
* and flags.
* *
* \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 * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
@ -53,24 +54,24 @@ extern "C" {
* ::SDL_WINDOWPOS_UNDEFINED. * ::SDL_WINDOWPOS_UNDEFINED.
* \param w The width of the window. * \param w The width of the window.
* \param h The height 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: * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with
* ::SDL_WINDOW_OPENGL, ::SDL_WINDOW_INPUT_GRABBED, * any of the following: ::SDL_WINDOW_OPENGL,
* ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_RESIZABLE, * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN,
* ::SDL_WINDOW_MAXIMIZED, ::SDL_WINDOW_MINIMIZED, * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
* ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset. * ::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.
* *
* \return The window created, or NULL if window creation failed. * \sa SDL_DestroyWindow
*
* \sa SDL_DestroyWindow()
*/ */
extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
/** /**
* \brief Return whether the given window is a shaped window. * Return whether the given window is a shaped window.
* *
* \param window The window to query for being shaped. * \param window The window to query for being shaped.
* * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if
* \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL. * the window is unshaped or NULL.
* *
* \sa SDL_CreateShapedWindow * \sa SDL_CreateShapedWindow
*/ */
@ -106,29 +107,31 @@ typedef struct SDL_WindowShapeMode {
} SDL_WindowShapeMode; } SDL_WindowShapeMode;
/** /**
* \brief Set the shape and parameters of a shaped window. * Set the shape and parameters of a shaped window.
* *
* \param window The shaped window whose parameters should be set. * \param window The shaped window whose parameters should be set.
* \param shape A surface encoding the desired shape for the window. * \param shape A surface encoding the desired shape for the window.
* \param shape_mode The parameters to set for the shaped window. * \param shape_mode The parameters to set for the shaped window.
* * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape
* \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does
* if the SDL_Window given does not reference a valid shaped window. * not reference a valid shaped window.
* *
* \sa SDL_WindowShapeMode * \sa SDL_WindowShapeMode
* \sa SDL_GetShapedWindowMode. * \sa SDL_GetShapedWindowMode
*/ */
extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
/** /**
* \brief Get the shape parameters of a shaped window. * Get the shape parameters of a shaped window.
* *
* \param window The shaped window whose parameters should be retrieved. * \param window The shaped window whose parameters should be retrieved.
* \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape. * \param shape_mode An empty shape-mode structure to fill, or NULL to check
* * whether the window has a shape.
* \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode * \return 0 if the window has a shape and, provided shape_mode was not NULL,
* data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if * shape_mode has been filled with the mode data,
* the SDL_Window given is a shapeable window currently lacking a shape. * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped
* window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a
* shapeable window currently lacking a shape.
* *
* \sa SDL_WindowShapeMode * \sa SDL_WindowShapeMode
* \sa SDL_SetWindowShape * \sa SDL_SetWindowShape

View File

@ -403,7 +403,7 @@ typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
typedef void (SDLCALL *SDL_free_func)(void *mem); typedef void (SDLCALL *SDL_free_func)(void *mem);
/** /**
* \brief Get the current set of SDL memory functions * Get the current set of SDL memory functions
*/ */
extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
SDL_calloc_func *calloc_func, SDL_calloc_func *calloc_func,
@ -411,12 +411,7 @@ extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func
SDL_free_func *free_func); SDL_free_func *free_func);
/** /**
* \brief Replace SDL's memory allocation functions with a custom set * Replace SDL's memory allocation functions with a custom set
*
* \note If you are replacing SDL's memory functions, you should call
* SDL_GetNumAllocations() and be very careful if it returns non-zero.
* That means that your free function will be called with memory
* allocated by the previous memory allocation functions.
*/ */
extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
SDL_calloc_func calloc_func, SDL_calloc_func calloc_func,
@ -424,7 +419,7 @@ extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
SDL_free_func free_func); SDL_free_func free_func);
/** /**
* \brief Get the number of outstanding (unfreed) allocations * Get the number of outstanding (unfreed) allocations
*/ */
extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);

View File

@ -188,8 +188,8 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
* not allocate memory for the pixel data, instead the caller provides an * not allocate memory for the pixel data, instead the caller provides an
* existing buffer of data for the surface to use. * existing buffer of data for the surface to use.
* *
* No copy is made of the pixel data. Pixel data is not managed * No copy is made of the pixel data. Pixel data is not managed automatically;
* automatically; you must free the surface before you free the pixel data. * you must free the surface before you free the pixel data.
* *
* \param pixels a pointer to existing pixel data * \param pixels a pointer to existing pixel data
* \param width the width of the surface * \param width the width of the surface
@ -226,8 +226,8 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
* instead of providing pixel color masks, you provide it with a predefined * instead of providing pixel color masks, you provide it with a predefined
* format from SDL_PixelFormatEnum. * format from SDL_PixelFormatEnum.
* *
* No copy is made of the pixel data. Pixel data is not managed * No copy is made of the pixel data. Pixel data is not managed automatically;
* automatically; you must free the surface before you free the pixel data. * you must free the surface before you free the pixel data.
* *
* \param pixels a pointer to existing pixel data * \param pixels a pointer to existing pixel data
* \param width the width of the surface * \param width the width of the surface
@ -298,7 +298,7 @@ extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
* *
* \param surface the SDL_Surface structure to be unlocked * \param surface the SDL_Surface structure to be unlocked
* *
* \sa SDL_LockSurface() * \sa SDL_LockSurface
*/ */
extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
@ -389,7 +389,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface);
* Set the color key (transparent pixel) in a surface. * Set the color key (transparent pixel) in a surface.
* *
* The color key defines a pixel value that will be treated as transparent in * The color key defines a pixel value that will be treated as transparent in
* a blit. It is a pixel of the format used by the surface, as generated by * a blit. For example, one can use this to specify that cyan pixels should be
* considered transparent, and therefore not rendered.
*
* It is a pixel of the format used by the surface, as generated by
* SDL_MapRGB(). * SDL_MapRGB().
* *
* RLE acceleration can substantially speed up blitting of images with large * RLE acceleration can substantially speed up blitting of images with large
@ -545,8 +548,8 @@ extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
/** /**
* Set the clipping rectangle for a surface. * Set the clipping rectangle for a surface.
* *
* When `surface` is the destination of a blit, only the area within the * When `surface` is the destination of a blit, only the area within the clip
* clip rectangle is drawn into. * rectangle is drawn into.
* *
* Note that blits are automatically clipped to the edges of the source and * Note that blits are automatically clipped to the edges of the source and
* destination surfaces. * destination surfaces.
@ -566,8 +569,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
/** /**
* Get the clipping rectangle for a surface. * Get the clipping rectangle for a surface.
* *
* When `surface` is the destination of a blit, only the area within the * When `surface` is the destination of a blit, only the area within the clip
* clip rectangle is drawn into. * rectangle is drawn into.
* *
* \param surface the SDL_Surface structure representing the surface to be * \param surface the SDL_Surface structure representing the surface to be
* clipped * clipped
@ -618,8 +621,8 @@ extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
* Copy an existing surface to a new surface of the specified format enum. * Copy an existing surface to a new surface of the specified format enum.
* *
* This function operates just like SDL_ConvertSurface(), but accepts an * This function operates just like SDL_ConvertSurface(), but accepts an
* SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such,
* such, it might be easier to call but it doesn't have access to palette * 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. * 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
@ -714,7 +717,7 @@ extern DECLSPEC int SDLCALL SDL_FillRects
* surface (\c src or \c dst) is copied. The final blit rectangles are saved * 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. * in \c srcrect and \c dstrect after all clipping is performed.
* *
* \return If the blit is successful, it returns 0, otherwise it returns -1. * \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.
* *
@ -768,8 +771,8 @@ extern DECLSPEC int SDLCALL SDL_FillRects
/** /**
* Perform a fast blit from the source surface to the destination surface. * Perform a fast blit from the source surface to the destination surface.
* *
* SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a
* a macro for this function with a less confusing name. * macro for this function with a less confusing name.
* *
* \sa SDL_BlitSurface * \sa SDL_BlitSurface
*/ */
@ -806,8 +809,6 @@ extern DECLSPEC int SDLCALL SDL_LowerBlit
* Perform a fast, low quality, stretch blit between two surfaces of the * Perform a fast, low quality, stretch blit between two surfaces of the
* same format. * same format.
* *
* **Warning**: This function uses a static buffer, and is not thread-safe.
*
* Please use SDL_BlitScaled() instead. * Please use SDL_BlitScaled() instead.
*/ */
extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
@ -870,7 +871,8 @@ extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mo
extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
/** /**
* Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC * Get the YUV conversion mode, returning the correct mode for the resolution
* when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC
*/ */
extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);

View File

@ -178,8 +178,8 @@ extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
* return type, even if the implementation returns a jobject. The rationale * return type, even if the implementation returns a jobject. The rationale
* being that the SDL headers can avoid including jni.h. * being that the SDL headers can avoid including jni.h.
* *
* The jobject returned by the function is a local reference and must * The jobject returned by the function is a local reference and must be
* be released by the caller. See the PushLocalFrame() and PopLocalFrame() or * released by the caller. See the PushLocalFrame() and PopLocalFrame() or
* DeleteLocalRef() functions of the Java native interface: * DeleteLocalRef() functions of the Java native interface:
* *
* https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
@ -218,7 +218,7 @@ extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
* - API level 11: Android 3.0 * - API level 11: Android 3.0
* - API level 10: Android 2.3.3 * - API level 10: Android 2.3.3
* *
* \returns Android API level. * \returns the Android API level.
*/ */
extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);
@ -311,8 +311,7 @@ extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
/** /**
* Request permissions at runtime. * Request permissions at runtime.
* *
* This blocks the calling thread until the permission is granted or * This blocks the calling thread until the permission is granted or denied.
* denied.
* *
* \param permission The permission to request. * \param permission The permission to request.
* \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise.
@ -439,7 +438,7 @@ extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathT
/** /**
* Detects the device family of WinRT plattform at runtime. * Detects the device family of WinRT plattform at runtime.
* *
* \returns A value from the SDL_WinRT_DeviceFamily enum. * \returns a value from the SDL_WinRT_DeviceFamily enum.
*/ */
extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();

View File

@ -289,8 +289,9 @@ struct SDL_SysWMinfo
{ {
struct wl_display *display; /**< Wayland display */ struct wl_display *display; /**< Wayland display */
struct wl_surface *surface; /**< Wayland surface */ struct wl_surface *surface; /**< Wayland surface */
struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */
struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */
struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */
} wl; } wl;
#endif #endif
#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ #if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */
@ -351,8 +352,8 @@ typedef struct SDL_SysWMinfo SDL_SysWMinfo;
* You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo.
* *
* The caller must initialize the `info` structure's version by using * The caller must initialize the `info` structure's version by using
* `SDL_VERSION(&info.version)`, and then this function will fill in the * `SDL_VERSION(&info.version)`, and then this function will fill in the rest
* rest of the structure with information about the given window. * of the structure with information about the given window.
* *
* \param window the window about which information is being requested * \param window the window about which information is being requested
* \param info an SDL_SysWMinfo structure filled in with window information * \param info an SDL_SysWMinfo structure filled in with window information

View File

@ -66,7 +66,7 @@ void SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *as
* \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0). * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
* \param assertDescription Message to log with the assert describing it. * \param assertDescription Message to log with the assert describing it.
* *
* \returns Returns the assertCondition so it can be used to externally to break execution flow if desired. * \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); int SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);

View File

@ -37,6 +37,9 @@
#if defined(__PSP__) #if defined(__PSP__)
#define DEFAULT_WINDOW_WIDTH 480 #define DEFAULT_WINDOW_WIDTH 480
#define DEFAULT_WINDOW_HEIGHT 272 #define DEFAULT_WINDOW_HEIGHT 272
#elif defined(__VITA__)
#define DEFAULT_WINDOW_WIDTH 960
#define DEFAULT_WINDOW_HEIGHT 544
#else #else
#define DEFAULT_WINDOW_WIDTH 640 #define DEFAULT_WINDOW_WIDTH 640
#define DEFAULT_WINDOW_HEIGHT 480 #define DEFAULT_WINDOW_HEIGHT 480
@ -61,6 +64,7 @@ typedef struct
const char *window_title; const char *window_title;
const char *window_icon; const char *window_icon;
Uint32 window_flags; Uint32 window_flags;
SDL_bool flash_on_focus_loss;
int window_x; int window_x;
int window_y; int window_y;
int window_w; int window_w;
@ -126,7 +130,7 @@ extern "C" {
* \param argv Array of command line parameters * \param argv Array of command line parameters
* \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO) * \param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)
* *
* \returns Returns a newly allocated common state object. * \returns a newly allocated common state object.
*/ */
SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags); SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
@ -136,7 +140,7 @@ SDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);
* \param state The common state describing the test window to create. * \param state The common state describing the test window to create.
* \param index The index of the argument to process in argv[]. * \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. * \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); int SDLTest_CommonArg(SDLTest_CommonState * state, int index);
@ -164,7 +168,7 @@ void SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, cons
* those strings' memory is freed and can no longer be used. * those strings' memory is freed and can no longer be used.
* *
* \param state The common state describing the test window to create. * \param state The common state describing the test window to create.
* \returns String with usage information * \returns a string with usage information
*/ */
const char *SDLTest_CommonUsage(SDLTest_CommonState * state); const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
@ -173,7 +177,7 @@ const char *SDLTest_CommonUsage(SDLTest_CommonState * state);
* *
* \param state The common state describing the test window to create. * \param state The common state describing the test window to create.
* *
* \returns True if initialization succeeded, false otherwise * \returns SDL_TRUE if initialization succeeded, false otherwise
*/ */
SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state); SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
@ -184,7 +188,7 @@ SDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);
* \param argc argc, as supplied to SDL_main * \param argc argc, as supplied to SDL_main
* \param argv argv, as supplied to SDL_main * \param argv argv, as supplied to SDL_main
* *
* \returns False if app should quit, true otherwise. * \returns SDL_FALSE if app should quit, true otherwise.
*/ */
SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv); SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);

View File

@ -48,7 +48,7 @@ extern "C" {
* \param y The Y 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. * \param c The character to draw.
* *
* \returns Returns 0 on success, -1 on failure. * \returns 0 on success, -1 on failure.
*/ */
int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c); int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
@ -60,7 +60,7 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c);
* \param y The Y 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. * \param s The string to draw.
* *
* \returns Returns 0 on success, -1 on failure. * \returns 0 on success, -1 on failure.
*/ */
int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s); int SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);

View File

@ -66,14 +66,14 @@ void SDLTest_FuzzerInit(Uint64 execKey);
/** /**
* Returns a random Uint8 * Returns a random Uint8
* *
* \returns Generated integer * \returns a generated integer
*/ */
Uint8 SDLTest_RandomUint8(void); Uint8 SDLTest_RandomUint8(void);
/** /**
* Returns a random Sint8 * Returns a random Sint8
* *
* \returns Generated signed integer * \returns a generated signed integer
*/ */
Sint8 SDLTest_RandomSint8(void); Sint8 SDLTest_RandomSint8(void);
@ -81,14 +81,14 @@ Sint8 SDLTest_RandomSint8(void);
/** /**
* Returns a random Uint16 * Returns a random Uint16
* *
* \returns Generated integer * \returns a generated integer
*/ */
Uint16 SDLTest_RandomUint16(void); Uint16 SDLTest_RandomUint16(void);
/** /**
* Returns a random Sint16 * Returns a random Sint16
* *
* \returns Generated signed integer * \returns a generated signed integer
*/ */
Sint16 SDLTest_RandomSint16(void); Sint16 SDLTest_RandomSint16(void);
@ -96,7 +96,7 @@ Sint16 SDLTest_RandomSint16(void);
/** /**
* Returns a random integer * Returns a random integer
* *
* \returns Generated integer * \returns a generated integer
*/ */
Sint32 SDLTest_RandomSint32(void); Sint32 SDLTest_RandomSint32(void);
@ -104,14 +104,14 @@ Sint32 SDLTest_RandomSint32(void);
/** /**
* Returns a random positive integer * Returns a random positive integer
* *
* \returns Generated integer * \returns a generated integer
*/ */
Uint32 SDLTest_RandomUint32(void); Uint32 SDLTest_RandomUint32(void);
/** /**
* Returns random Uint64. * Returns random Uint64.
* *
* \returns Generated integer * \returns a generated integer
*/ */
Uint64 SDLTest_RandomUint64(void); Uint64 SDLTest_RandomUint64(void);
@ -119,28 +119,28 @@ Uint64 SDLTest_RandomUint64(void);
/** /**
* Returns random Sint64. * Returns random Sint64.
* *
* \returns Generated signed integer * \returns a generated signed integer
*/ */
Sint64 SDLTest_RandomSint64(void); Sint64 SDLTest_RandomSint64(void);
/** /**
* \returns random float in range [0.0 - 1.0[ * \returns a random float in range [0.0 - 1.0]
*/ */
float SDLTest_RandomUnitFloat(void); float SDLTest_RandomUnitFloat(void);
/** /**
* \returns random double in range [0.0 - 1.0[ * \returns a random double in range [0.0 - 1.0]
*/ */
double SDLTest_RandomUnitDouble(void); double SDLTest_RandomUnitDouble(void);
/** /**
* \returns random float. * \returns a random float.
* *
*/ */
float SDLTest_RandomFloat(void); float SDLTest_RandomFloat(void);
/** /**
* \returns random double. * \returns a random double.
* *
*/ */
double SDLTest_RandomDouble(void); double SDLTest_RandomDouble(void);
@ -162,7 +162,7 @@ double SDLTest_RandomDouble(void);
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or 0 with error set * \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); Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
@ -183,7 +183,7 @@ Uint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_boo
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or 0 with error set * \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); Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
@ -204,7 +204,7 @@ Uint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or 0 with error set * \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); Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
@ -225,7 +225,7 @@ Uint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or 0 with error set * \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); Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
@ -246,7 +246,7 @@ Uint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or SINT8_MIN with error set * \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); Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
@ -268,7 +268,7 @@ Sint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_boo
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or SINT16_MIN with error set * \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); Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
@ -289,7 +289,7 @@ Sint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or SINT32_MIN with error set * \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); Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
@ -310,7 +310,7 @@ Sint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL
* \param boundary2 Upper boundary limit * \param boundary2 Upper boundary limit
* \param validDomain Should the generated boundary be valid (=within the bounds) or not? * \param validDomain Should the generated boundary be valid (=within the bounds) or not?
* *
* \returns Random boundary value for the given range and domain or SINT64_MIN with error set * \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); Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
@ -324,7 +324,7 @@ Sint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL
* \param min Minimum inclusive value of returned random number * \param min Minimum inclusive value of returned random number
* \param max Maximum inclusive value of returned random number * \param max Maximum inclusive value of returned random number
* *
* \returns Generated random integer in range * \returns a generated random integer in range
*/ */
Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max); Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
@ -336,7 +336,7 @@ Sint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);
* *
* Note: Returned string needs to be deallocated. * Note: Returned string needs to be deallocated.
* *
* \returns Newly allocated random string; or NULL if length was invalid or string could not be allocated. * \returns a newly allocated random string; or NULL if length was invalid or string could not be allocated.
*/ */
char * SDLTest_RandomAsciiString(void); char * SDLTest_RandomAsciiString(void);
@ -350,7 +350,7 @@ char * SDLTest_RandomAsciiString(void);
* *
* \param maxLength The maximum length of the generated string. * \param maxLength The maximum length of the generated string.
* *
* \returns Newly allocated random string; or NULL if maxLength was invalid or string could not be allocated. * \returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.
*/ */
char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength); char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
@ -364,12 +364,14 @@ char * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);
* *
* \param size The length of the generated string * \param size The length of the generated string
* *
* \returns Newly allocated random string; or NULL if size was invalid or string could not be allocated. * \returns a newly allocated random string; or NULL if size was invalid or string could not be allocated.
*/ */
char * SDLTest_RandomAsciiStringOfSize(int size); char * SDLTest_RandomAsciiStringOfSize(int size);
/** /**
* Returns the invocation count for the fuzzer since last ...FuzzerInit. * Get the invocation count for the fuzzer since last ...FuzzerInit.
*
* \returns the invocation count.
*/ */
int SDLTest_GetFuzzerInvocationCount(void); int SDLTest_GetFuzzerInvocationCount(void);

View File

@ -105,7 +105,7 @@ typedef struct SDLTest_TestSuiteReference {
* *
* \param length The length of the seed string to generate * \param length The length of the seed string to generate
* *
* \returns The generated seed string * \returns the generated seed string
*/ */
char *SDLTest_GenerateRunSeed(const int length); char *SDLTest_GenerateRunSeed(const int length);
@ -118,7 +118,7 @@ char *SDLTest_GenerateRunSeed(const int length);
* \param filter Filter specification. NULL disables. Case sensitive. * \param filter Filter specification. NULL disables. Case sensitive.
* \param testIterations Number of iterations to run each test case. * \param testIterations Number of iterations to run each test case.
* *
* \returns Test run result; 0 when all tests passed, 1 if any tests failed. * \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); int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);

View File

@ -98,7 +98,7 @@ extern "C" {
* *
* \param rndContext pointer to context structure * \param rndContext pointer to context structure
* *
* \returns A random number (32bit unsigned integer) * \returns a random number (32bit unsigned integer)
* *
*/ */
unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext); unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);

View File

@ -214,30 +214,29 @@ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
/** /**
* Create a new thread with a specific stack size. * Create a new thread with a specific stack size.
* *
* SDL makes an attempt to report `name` to the system, so that debuggers * SDL makes an attempt to report `name` to the system, so that debuggers can
* can display it. Not all platforms support this. * display it. Not all platforms support this.
* *
* Thread naming is a little complicated: Most systems have very small * Thread naming is a little complicated: Most systems have very small limits
* limits for the string length (Haiku has 32 bytes, Linux currently has 16, * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual
* Visual C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to
* have to see what happens with your system's debugger. The name should be * see what happens with your system's debugger. The name should be UTF-8 (but
* UTF-8 (but using the naming limits of C identifiers is a better bet). * using the naming limits of C identifiers is a better bet). There are no
* There are no requirements for thread naming conventions, so long as the * requirements for thread naming conventions, so long as the string is
* string is null-terminated UTF-8, but these guidelines are helpful in * null-terminated UTF-8, but these guidelines are helpful in choosing a name:
* choosing a name:
* *
* https://stackoverflow.com/questions/149932/naming-conventions-for-threads * https://stackoverflow.com/questions/149932/naming-conventions-for-threads
* *
* If a system imposes requirements, SDL will try to munge the string for * If a system imposes requirements, SDL will try to munge the string for it
* it (truncate, etc), but the original string contents will be available * (truncate, etc), but the original string contents will be available from
* from SDL_GetThreadName(). * SDL_GetThreadName().
* *
* The size (in bytes) of the new stack can be specified. Zero means "use * The size (in bytes) of the new stack can be specified. Zero means "use the
* the system default" which might be wildly different between platforms. * system default" which might be wildly different between platforms. x86
* x86 Linux generally defaults to eight megabytes, an embedded device * Linux generally defaults to eight megabytes, an embedded device might be a
* might be a few kilobytes instead. You generally need to specify a stack * few kilobytes instead. You generally need to specify a stack that is a
* that is a multiple of the system's page size (in many cases, this is 4 * multiple of the system's page size (in many cases, this is 4 kilobytes, but
* kilobytes, but check your system documentation). * check your system documentation).
* *
* In SDL 2.1, stack size will be folded into the original SDL_CreateThread * In SDL 2.1, stack size will be folded into the original SDL_CreateThread
* function, but for backwards compatibility, this is currently a separate * function, but for backwards compatibility, this is currently a separate
@ -307,8 +306,8 @@ extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
* Set the priority for the current thread. * Set the priority for the current thread.
* *
* Note that some platforms will not let you alter the priority (or at least, * Note that some platforms will not let you alter the priority (or at least,
* promote the thread to a higher priority) at all, and some require you * promote the thread to a higher priority) at all, and some require you to be
* to be an administrator account. Be prepared for this to fail. * 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 * \returns 0 on success or a negative error code on failure; call
@ -388,8 +387,8 @@ extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
/** /**
* Create a piece of thread-local storage. * Create a piece of thread-local storage.
* *
* This creates an identifier that is globally visible to all * This creates an identifier that is globally visible to all threads but
* threads but refers to data that is thread-specific. * refers to data that is thread-specific.
* *
* \returns the newly created thread local storage identifier or 0 on error. * \returns the newly created thread local storage identifier or 0 on error.
* *
@ -440,7 +439,7 @@ extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
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, void (SDLCALL *destructor)(void*));
/** /**
* \brief Cleanup all TLS data for this thread. * Cleanup all TLS data for this thread.
*/ */
extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); extern DECLSPEC void SDLCALL SDL_TLSCleanup(void);

View File

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

View File

@ -188,6 +188,9 @@ typedef enum
SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */ SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */
} SDL_DisplayEventID; } SDL_DisplayEventID;
/**
* \brief Display orientation
*/
typedef enum typedef enum
{ {
SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
@ -197,6 +200,16 @@ typedef enum
SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
} SDL_DisplayOrientation; } SDL_DisplayOrientation;
/**
* \brief Window flash operation
*/
typedef enum
{
SDL_FLASH_CANCEL, /**< Cancel any window flash state */
SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */
SDL_FLASH_UNTIL_FOCUSED, /**< Flash the window until it gets focus */
} SDL_FlashOperation;
/** /**
* \brief An opaque handle to an OpenGL context. * \brief An opaque handle to an OpenGL context.
*/ */
@ -443,7 +456,7 @@ extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, fl
* \returns The SDL_DisplayOrientation enum value of the display, or * \returns The SDL_DisplayOrientation enum value of the display, or
* `SDL_ORIENTATION_UNKNOWN` if it isn't available. * `SDL_ORIENTATION_UNKNOWN` if it isn't available.
* *
* \sa SDL_GetNumVideoDisplays() * \sa SDL_GetNumVideoDisplays
*/ */
extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
@ -532,12 +545,12 @@ extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_Disp
/** /**
* Get the closest match to the requested display mode. * Get the closest match to the requested display mode.
* *
* The available display modes are scanned and `closest` is filled in with * The available display modes are scanned and `closest` is filled in with the
* the closest mode matching the requested mode and returned. The mode format * closest mode matching the requested mode and returned. The mode format and
* and refresh rate default to the desktop mode if they are set to 0. The * refresh rate default to the desktop mode if they are set to 0. The modes
* modes are scanned with size being first priority, format being second * are scanned with size being first priority, format being second priority,
* priority, and finally checking the refresh rate. If all the available modes * and finally checking the refresh rate. If all the available modes are too
* are too small, then NULL is returned. * 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 * \param mode an SDL_DisplayMode structure containing the desired display
@ -638,13 +651,13 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
* *
* If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size
* in pixels may differ from its size in screen coordinates on platforms with * in pixels may differ from its size in screen coordinates on platforms with
* high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the
* the client area's size in screen coordinates, and SDL_GL_GetDrawableSize() * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or
* or SDL_GetRendererOutputSize() to query the drawable size in pixels. * SDL_GetRendererOutputSize() to query the drawable size in pixels.
* *
* If the window is set fullscreen, the width and height parameters `w` and * If the window is set fullscreen, the width and height parameters `w` and
* `h` will not be used. However, invalid size parameters (e.g. too large) * `h` will not be used. However, invalid size parameters (e.g. too large) may
* may still fail. Window size is actually limited to 16384 x 16384 for all * still fail. Window size is actually limited to 16384 x 16384 for all
* platforms at window creation. * platforms at window creation.
* *
* If the window is created with any of the SDL_WINDOW_OPENGL or * If the window is created with any of the SDL_WINDOW_OPENGL or
@ -722,8 +735,8 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
* these events to specific SDL_Window objects. * 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; * \returns the window associated with `id` or NULL if it doesn't exist; call
* call SDL_GetError() for more information. * SDL_GetError() for more information.
* *
* \sa SDL_GetWindowID * \sa SDL_GetWindowID
*/ */
@ -1190,8 +1203,8 @@ extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
/** /**
* Set a window's keyboard grab mode. * Set a window's keyboard grab mode.
* *
* If the caller enables a grab while another window is currently grabbed, * If the caller enables a grab while another window is currently grabbed, the
* the other window loses its grab in favor of the caller's window. * other window loses its grab in favor of the caller's window.
* *
* \param window The window for which the keyboard grab mode should be set. * \param window The window for which the keyboard grab mode should be set.
* \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release.
@ -1207,10 +1220,6 @@ extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window,
* Set a window's mouse grab mode. * Set a window's mouse grab mode.
* *
* \param window The window for which the mouse grab mode should be set. * \param window The window for which the mouse grab mode should be set.
* \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release.
*
* 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.
* *
* \sa SDL_GetWindowMouseGrab * \sa SDL_GetWindowMouseGrab
* \sa SDL_SetWindowKeyboardGrab * \sa SDL_SetWindowKeyboardGrab
@ -1244,7 +1253,7 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window);
* Get a window's mouse grab mode. * Get a window's mouse grab mode.
* *
* \param window the window to query * \param window the window to query
* \returns This returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise.
* *
* \sa SDL_SetWindowKeyboardGrab * \sa SDL_SetWindowKeyboardGrab
* \sa SDL_GetWindowGrab * \sa SDL_GetWindowGrab
@ -1382,12 +1391,13 @@ extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
* the video hardware. Each table is an array of 256 16-bit quantities, * the video hardware. Each table is an array of 256 16-bit quantities,
* representing a mapping between the input and output for that channel. The * representing a mapping between the input and output for that channel. The
* input is the index into the array, and the output is the 16-bit gamma value * input is the index into the array, and the output is the 16-bit gamma value
* at that index, scaled to the output color precision. Despite the name and * at that index, scaled to the output color precision.
* signature, this method sets the gamma ramp of the entire display, not an *
* individual window. A window is considered to be owned by the display that * Despite the name and signature, this method sets the gamma ramp of the
* contains the window's center pixel. (The index of this display can be * entire display, not an individual window. A window is considered to be
* retrieved using SDL_GetWindowDisplayIndex().) The gamma ramp set will not * owned by the display that contains the window's center pixel. (The index of
* follow the window if it is moved to another display. * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma
* 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 * \param window the window used to select the display whose gamma ramp will
* be changed * be changed
@ -1511,16 +1521,14 @@ extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
void *callback_data); void *callback_data);
/** /**
* Request a window to give a signal, e.g. a visual signal, to demand attention from the user. * Request a window to demand attention from the user.
* *
* \param window the window to be flashed
* \param operation the flash operation
* \returns 0 on success or a negative error code on failure; call * \returns 0 on success or a negative error code on failure; call
* SDL_GetError() for more information. * SDL_GetError() for more information.
*
* \param window the window to request the flashing for
* \param flash_count number of times the window gets flashed on systems that support flashing the
* window multiple times, like Windows, else it is ignored
*/ */
extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, Uint32 flash_count); extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation);
/** /**
* Destroy a window. * Destroy a window.
@ -1615,31 +1623,31 @@ extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
* these quirks without any platform-specific code, though: * these quirks without any platform-specific code, though:
* *
* - On Windows, function pointers are specific to the current GL context; * - On Windows, function pointers are specific to the current GL context;
* this means you need to have created a GL context and made it current before * this means you need to have created a GL context and made it current
* calling SDL_GL_GetProcAddress(). If you recreate your context or create a * before calling SDL_GL_GetProcAddress(). If you recreate your context or
* second context, you should assume that any existing function pointers * create a second context, you should assume that any existing function
* aren't valid to use with it. This is (currently) a Windows-specific * pointers aren't valid to use with it. This is (currently) a
* limitation, and in practice lots of drivers don't suffer this limitation, * Windows-specific limitation, and in practice lots of drivers don't suffer
* but it is still the way the wgl API is documented to work and you should * this limitation, but it is still the way the wgl API is documented to
* expect crashes if you don't respect it. Store a copy of the function * work and you should expect crashes if you don't respect it. Store a copy
* pointers that comes and goes with context lifespan. * of the function pointers that comes and goes with context lifespan.
* - On X11, function pointers returned by this function are valid for any * - On X11, function pointers returned by this function are valid for any
* context, and can even be looked up before a context is created at all. This * context, and can even be looked up before a context is created at all.
* means that, for at least some common OpenGL implementations, if you look up * This means that, for at least some common OpenGL implementations, if you
* a function that doesn't exist, you'll get a non-NULL result that is _NOT_ * look up a function that doesn't exist, you'll get a non-NULL result that
* safe to call. You must always make sure the function is actually available * is _NOT_ safe to call. You must always make sure the function is actually
* for a given GL context before calling it, by checking for the existence of * available for a given GL context before calling it, by checking for the
* the appropriate extension with SDL_GL_ExtensionSupported(), or verifying * existence of the appropriate extension with SDL_GL_ExtensionSupported(),
* that the version of OpenGL you're using offers the function as core * or verifying that the version of OpenGL you're using offers the function
* functionality. * as core functionality.
* - Some OpenGL drivers, on all platforms, *will* return NULL if a function * - Some OpenGL drivers, on all platforms, *will* return NULL if a function
* isn't supported, but you can't count on this behavior. Check for extensions * isn't supported, but you can't count on this behavior. Check for
* you use, and if you get a NULL anyway, act as if that extension wasn't * extensions you use, and if you get a NULL anyway, act as if that
* available. This is probably a bug in the driver, but you can code * extension wasn't available. This is probably a bug in the driver, but you
* defensively for this scenario anyhow. * can code defensively for this scenario anyhow.
* - Just because you're on Linux/Unix, don't assume you'll be using X11. * - Just because you're on Linux/Unix, don't assume you'll be using X11.
* Next-gen display servers are waiting to replace it, and may or may not make * Next-gen display servers are waiting to replace it, and may or may not
* the same promises about function pointers. * make the same promises about function pointers.
* - OpenGL function pointers must be declared `APIENTRY` as in the example * - OpenGL function pointers must be declared `APIENTRY` as in the example
* code. This will ensure the proper calling convention is followed on * code. This will ensure the proper calling convention is followed on
* platforms where this matters (Win32) thereby avoiding stack corruption. * platforms where this matters (Win32) thereby avoiding stack corruption.
@ -1690,18 +1698,16 @@ extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
* *
* \sa SDL_GL_GetAttribute * \sa SDL_GL_GetAttribute
* \sa SDL_GL_SetAttribute * \sa SDL_GL_SetAttribute
* \sa <!-- #Remove this section if empty -->
*/ */
extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
/** /**
* Set an OpenGL window attribute before window creation. * Set an OpenGL window attribute before window creation.
* *
* This function sets the OpenGL attribute `attr` to `value`. The * This function sets the OpenGL attribute `attr` to `value`. The requested
* requested attributes should be set before creating an OpenGL window. You * attributes should be set before creating an OpenGL window. You should use
* should use SDL_GL_GetAttribute() to check the values after creating the * SDL_GL_GetAttribute() to check the values after creating the OpenGL
* OpenGL context, since the values obtained can differ from the requested * context, since the values obtained can differ from the requested ones.
* ones.
* *
* \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set
* \param value the desired value for the attribute * \param value the desired value for the attribute
@ -1738,8 +1744,8 @@ 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. * 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; * \returns the OpenGL context associated with `window` or NULL on error; call
* call SDL_GetError() for more details. * SDL_GetError() for more details.
* *
* \sa SDL_GL_DeleteContext * \sa SDL_GL_DeleteContext
* \sa SDL_GL_MakeCurrent * \sa SDL_GL_MakeCurrent
@ -1813,8 +1819,8 @@ extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
* Some systems allow specifying -1 for the interval, to enable adaptive * Some systems allow specifying -1 for the interval, to enable adaptive
* vsync. Adaptive vsync works the same as vsync, but if you've already missed * vsync. Adaptive vsync works the same as vsync, but if you've already missed
* the vertical retrace for a given frame, it swaps buffers immediately, which * the vertical retrace for a given frame, it swaps buffers immediately, which
* might be less jarring for the user during occasional framerate drops. If * might be less jarring for the user during occasional framerate drops. If an
* an application requests adaptive vsync and the system does not support it, * application requests adaptive vsync and the system does not support it,
* this function will fail and return -1. In such a case, you should probably * this function will fail and return -1. In such a case, you should probably
* retry the call with 1 for the interval. * retry the call with 1 for the interval.
* *
@ -1863,8 +1869,8 @@ extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
* *
* This is used with double-buffered OpenGL contexts, which are the default. * This is used with double-buffered OpenGL contexts, which are the default.
* *
* On macOS, make sure you bind 0 to the draw framebuffer before swapping * On macOS, make sure you bind 0 to the draw framebuffer before swapping the
* the window, otherwise nothing will happen. If you aren't using * window, otherwise nothing will happen. If you aren't using
* glBindFramebuffer(), this is the default and you won't have to do anything * glBindFramebuffer(), this is the default and you won't have to do anything
* extra. * extra.
* *

View File

@ -77,21 +77,21 @@ typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */
* application links to a dynamic library and both it and SDL use the same * application links to a dynamic library and both it and SDL use the same
* search path. * search path.
* *
* If you specify a non-NULL `path`, an application should retrieve * If you specify a non-NULL `path`, an application should retrieve all of the
* all of the Vulkan functions it uses from the dynamic library using * Vulkan functions it uses from the dynamic library using
* SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points
* points to the same vulkan loader library the application linked to. * to the same vulkan loader library the application linked to.
* *
* On Apple devices, if `path` is NULL, SDL will attempt to find the * On Apple devices, if `path` is NULL, SDL will attempt to find the
* `vkGetInstanceProcAddr` address within all the Mach-O images of the * `vkGetInstanceProcAddr` address within all the Mach-O images of the current
* current process. This is because it is fairly common for Vulkan * process. This is because it is fairly common for Vulkan applications to
* applications to link with libvulkan (and historically MoltenVK was provided * link with libvulkan (and historically MoltenVK was provided as a static
* as a static library). If it is not found, on macOS, SDL will attempt * library). If it is not found, on macOS, SDL will attempt to load
* to load `vulkan.framework/vulkan`, `libvulkan.1.dylib`, * `vulkan.framework/vulkan`, `libvulkan.1.dylib`,
* `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On
* order. On iOS, SDL will attempt to load `libMoltenVK.dylib`. * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a
* Applications using a dynamic framework or .dylib must ensure it is included * dynamic framework or .dylib must ensure it is included in its application
* in its application bundle. * bundle.
* *
* On non-Apple devices, application linking with a static libvulkan is not * On non-Apple devices, application linking with a static libvulkan is not
* supported. Either do not link to the Vulkan loader or link to a dynamic * supported. Either do not link to the Vulkan loader or link to a dynamic
@ -111,10 +111,10 @@ extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);
/** /**
* Get the address of the `vkGetInstanceProcAddr` function. * Get the address of the `vkGetInstanceProcAddr` function.
* *
* This should be called after either calling SDL_Vulkan_LoadLibrary() * This should be called after either calling SDL_Vulkan_LoadLibrary() or
* or creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag.
* *
* \returns The function pointer for `vkGetInstanceProcAddr` or NULL on error. * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error.
*/ */
extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
@ -128,27 +128,25 @@ extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);
extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);
/** /**
* Get the names of the Vulkan instance extensions needed * Get the names of the Vulkan instance extensions needed to create a surface
* to create a surface with SDL_Vulkan_CreateSurface. * with SDL_Vulkan_CreateSurface.
* *
* If `pNames` is NULL, then the number of required Vulkan instance * If `pNames` is NULL, then the number of required Vulkan instance extensions
* extensions is returned in `pCount`. Otherwise, `pCount` must point * is returned in `pCount`. Otherwise, `pCount` must point to a variable set
* to a variable set to the number of elements in the `pNames` array, and * to the number of elements in the `pNames` array, and on return the variable
* on return the variable is overwritten with the number of names actually * is overwritten with the number of names actually written to `pNames`. If
* written to `pNames`. If `pCount` is less than the number of * `pCount` is less than the number of required extensions, at most `pCount`
* required extensions, at most `pCount` structures will be written. If * structures will be written. If `pCount` is smaller than the number of
* `pCount` is smaller than the number of required extensions, * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to
* SDL_FALSE will be returned instead of SDL_TRUE, to indicate * indicate that not all the required extensions were returned.
* that not all the required extensions were returned.
* *
* The `window` parameter is currently needed to be valid as of * The `window` parameter is currently needed to be valid as of SDL 2.0.8,
* SDL 2.0.8, however, this parameter will likely be removed in future * however, this parameter will likely be removed in future releases
* releases
* *
* \param window A window for which the required Vulkan instance extensions * \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 * \param pCount A pointer to an unsigned int corresponding to the number of
* number of extensions to be returned * extensions to be returned
* \param pNames NULL or a pointer to an array to be filled with required * \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. * \returns SDL_TRUE on success, SDL_FALSE on error.
@ -187,8 +185,8 @@ extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window,
* Get the size of the window's underlying drawable dimensions in pixels. * Get the size of the window's underlying drawable dimensions in pixels.
* *
* This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
* drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a
* on a platform with high-DPI support (Apple calls this "Retina"), and not * platform with high-DPI support (Apple calls this "Retina"), and not
* disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.
* *
* \param window an SDL_Window for which the size is to be queried * \param window an SDL_Window for which the size is to be queried

View File

@ -3,37 +3,79 @@
set(prefix "@prefix@") set(prefix "@prefix@")
set(exec_prefix "@exec_prefix@") set(exec_prefix "@exec_prefix@")
set(libdir "@libdir@") set(libdir "@libdir@")
set(SDL2_PREFIX "@prefix@") set(includedir "@includedir@")
set(SDL2_EXEC_PREFIX "@prefix@") set(SDL2_PREFIX "${prefix}")
set(SDL2_LIBDIR "@libdir@") set(SDL2_EXEC_PREFIX "${exec_prefix}")
set(SDL2_INCLUDE_DIRS "@includedir@/SDL2") set(SDL2_LIBDIR "${libdir}")
set(SDL2_INCLUDE_DIRS "${includedir}/SDL2")
set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} @SDL_RLD_FLAGS@ @SDL_LIBS@") set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} @SDL_RLD_FLAGS@ @SDL_LIBS@")
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES) string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
if(NOT TARGET SDL2::SDL2) if(NOT TARGET SDL2::SDL2)
# provide SDL2::SDL2, SDL2::SDL2main and SDL2::SDL2-static targets, like SDL2Config.cmake does, for compatibility
# Remove -lSDL2 as that is handled by CMake, note the space at the end so it does not replace e.g. -lSDL2main # Remove -lSDL2 as that is handled by CMake, note the space at the end so it does not replace e.g. -lSDL2main
# This may require "libdir" beeing set (from above) # This may require "libdir" beeing set (from above)
string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS "@SDL_RLD_FLAGS@ @SDL_LIBS@ ") string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS "@SDL_RLD_FLAGS@ @SDL_LIBS@ ")
# also get rid of -lSDL2main, if you want to link against that use both SDL2::SDL2main and SDL2::SDL2 (in that order)
# (SDL2Config.cmake has the same behavior)
string(REPLACE "-lSDL2main" "" SDL2_EXTRA_LINK_FLAGS ${SDL2_EXTRA_LINK_FLAGS})
string(STRIP "${SDL2_EXTRA_LINK_FLAGS}" SDL2_EXTRA_LINK_FLAGS) string(STRIP "${SDL2_EXTRA_LINK_FLAGS}" SDL2_EXTRA_LINK_FLAGS)
string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS_STATIC "@SDL_STATIC_LIBS@ ") string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS_STATIC "@SDL_STATIC_LIBS@ ")
string(STRIP "${SDL2_EXTRA_LINK_FLAGS_STATIC}" SDL2_EXTRA_LINK_FLAGS_STATIC) string(STRIP "${SDL2_EXTRA_LINK_FLAGS_STATIC}" SDL2_EXTRA_LINK_FLAGS_STATIC)
if(WIN32 AND NOT MSVC)
# MINGW needs very special handling, because the link order must be exactly -lmingw32 -lSDL2main -lSDL2
# for it to work at all (and -mwindows somewhere); a normal SHARED IMPORTED or STATIC IMPORTED library always puts itself first
# so handle this like a header-only lib and put everything in INTERFACE_LINK_LIBRARIES
add_library(SDL2::SDL2 INTERFACE IMPORTED)
set_target_properties(SDL2::SDL2 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "-L${SDL2_LIBDIR} -lSDL2")
add_library(SDL2::SDL2main INTERFACE IMPORTED)
set_target_properties(SDL2::SDL2main PROPERTIES
INTERFACE_LINK_LIBRARIES "-L${SDL2_LIBDIR} -lmingw32 -lSDL2main -mwindows")
else() # (not WIN32) or MSVC
add_library(SDL2::SDL2 SHARED IMPORTED) add_library(SDL2::SDL2 SHARED IMPORTED)
set_target_properties(SDL2::SDL2 PROPERTIES set_target_properties(SDL2::SDL2 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2" INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C" IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "@libdir@/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}" IMPORTED_LOCATION "${SDL2_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}")
INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS}")
add_library(SDL2::SDL2-static STATIC IMPORTED) if(MSVC)
set_target_properties(SDL2::SDL2-static PROPERTIES # This file is generated when building SDL2 with autotools and MinGW, and MinGW/dlltool
INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2" # isn't able to generate .lib files that are usable by recent MSVC versions
IMPORTED_LINK_INTERFACE_LANGUAGES "C" # (something about "module unsafe for SAFESEH"; SAFESEH is enabled by default in MSVC).
IMPORTED_LOCATION "@libdir@/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}" # The .lib file for SDL2.dll *could* be generated with `gendef SDL2.dll` and then
INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS_STATIC}") # `lib.exe /machine:x86 /def:SDL2.def /out:SDL2.lib` (or /machine:amd64)
# but that requires lib.exe from a Visual Studio installation - and that still doesn't
# give you a static SDL2main.lib with SAFESEH support that you'll need (unless you don't use SDL2main)
# Note that when building SDL2 with CMake and MSVC, the result works with both MinGW and MSVC.
message(FATAL_ERROR, "This build of libSDL2 only supports MinGW, not MSVC (Visual C++), because it lacks .lib files!")
# MSVC needs SDL2.lib set as IMPORTED_IMPLIB to link against (comment out message() call above if you added SDL2.lib yourself)
set_target_properties(SDL2::SDL2 PROPERTIES IMPORTED_IMPLIB "${SDL2_LIBDIR}/SDL2.lib")
else()
# this mustn't be set for MSVC, so do it here in an extra call here
set_target_properties(SDL2::SDL2 PROPERTIES INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS}")
endif()
add_library(SDL2::SDL2main STATIC IMPORTED) add_library(SDL2::SDL2main STATIC IMPORTED)
set_target_properties(SDL2::SDL2main PROPERTIES set_target_properties(SDL2::SDL2main PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C" IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "@libdir@/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2main${CMAKE_STATIC_LIBRARY_SUFFIX}") IMPORTED_LOCATION "${SDL2_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2main${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
endif() # (not WIN32) or MSVC
add_library(SDL2::SDL2-static STATIC IMPORTED)
set_target_properties(SDL2::SDL2-static PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${SDL2_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}"
INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS_STATIC}")
endif() # NOT TARGET SDL2::SDL2

Some files were not shown because too many files have changed in this diff Show More