Browse Source

removed WinRT support.

Ozkan Sezer 2 years ago
parent
commit
dc2a3e06e9
86 changed files with 81 additions and 8098 deletions
  1. 0 3
      .github/workflows/msvc.yml
  2. 25 82
      CMakeLists.txt
  3. 1 1
      Makefile.in
  4. 0 40
      VisualC-WinRT/SDL-UWP.sln
  5. 0 594
      VisualC-WinRT/SDL-UWP.vcxproj
  6. 0 849
      VisualC-WinRT/SDL-UWP.vcxproj.filters
  7. 0 6
      build-scripts/fnsince.pl
  8. 2 2
      cmake/test/CMakeLists.txt
  9. 0 519
      docs/README-winrt.md
  10. 0 1
      docs/README.md
  11. 0 2
      include/SDL_config.h
  12. 0 2
      include/SDL_config.h.cmake
  13. 0 2
      include/SDL_config_windows.h
  14. 0 220
      include/SDL_config_winrt.h
  15. 1 1
      include/SDL_cpuinfo.h
  16. 0 28
      include/SDL_main.h
  17. 1 2
      include/SDL_platform.h
  18. 0 103
      include/SDL_system.h
  19. 0 11
      include/SDL_syswm.h
  20. 2 2
      include/begin_code.h
  21. 1 3
      src/SDL.c
  22. 7 7
      src/SDL_log.c
  23. 1 1
      src/atomic/SDL_spinlock.c
  24. 1 1
      src/audio/wasapi/SDL_wasapi.c
  25. 2 2
      src/audio/wasapi/SDL_wasapi_win32.c
  26. 0 447
      src/audio/wasapi/SDL_wasapi_winrt.cpp
  27. 0 4
      src/core/windows/SDL_hid.c
  28. 0 4
      src/core/windows/SDL_hid.h
  29. 10 27
      src/core/windows/SDL_windows.c
  30. 0 2
      src/core/windows/SDL_windows.h
  31. 3 3
      src/core/windows/SDL_xinput.c
  32. 0 67
      src/core/winrt/SDL_winrtapp_common.cpp
  33. 0 31
      src/core/winrt/SDL_winrtapp_common.h
  34. 0 797
      src/core/winrt/SDL_winrtapp_direct3d.cpp
  35. 0 92
      src/core/winrt/SDL_winrtapp_direct3d.h
  36. 0 160
      src/core/winrt/SDL_winrtapp_xaml.cpp
  37. 0 33
      src/core/winrt/SDL_winrtapp_xaml.h
  38. 2 2
      src/cpuinfo/SDL_cpuinfo.c
  39. 0 2
      src/dynapi/SDL_dynapi.h
  40. 0 4
      src/dynapi/SDL_dynapi_overrides.h
  41. 0 8
      src/dynapi/SDL_dynapi_procs.h
  42. 0 3
      src/file/SDL_rwops.c
  43. 0 242
      src/filesystem/winrt/SDL_sysfilesystem.cpp
  44. 0 4
      src/joystick/SDL_joystick.c
  45. 0 5
      src/joystick/windows/SDL_rawinputjoystick.c
  46. 5 22
      src/joystick/windows/SDL_windows_gaming_input.c
  47. 5 9
      src/joystick/windows/SDL_windowsjoystick.c
  48. 3 7
      src/joystick/windows/SDL_xinputjoystick.c
  49. 0 8
      src/loadso/windows/SDL_sysloadso.c
  50. 0 58
      src/locale/winrt/SDL_syslocale.c
  51. BIN
      src/main/winrt/SDL3-WinRTResource_BlankCursor.cur
  52. 0 3
      src/main/winrt/SDL3-WinRTResources.rc
  53. 0 54
      src/main/winrt/SDL_winrt_main_NonXAML.cpp
  54. 0 41
      src/misc/winrt/SDL_sysurl.cpp
  55. 0 3
      src/power/SDL_power.c
  56. 0 1
      src/power/SDL_syspower.h
  57. 0 44
      src/power/winrt/SDL_syspower.cpp
  58. 1 56
      src/render/direct3d11/SDL_render_d3d11.c
  59. 0 116
      src/render/direct3d11/SDL_render_winrt.cpp
  60. 0 40
      src/render/direct3d11/SDL_render_winrt.h
  61. 0 8
      src/render/opengles2/SDL_render_gles2.c
  62. 0 31
      src/thread/stdcpp/SDL_systhread.cpp
  63. 0 12
      src/thread/windows/SDL_syscond_cv.c
  64. 0 16
      src/thread/windows/SDL_sysmutex.c
  65. 0 15
      src/thread/windows/SDL_syssem.c
  66. 1 3
      src/thread/windows/SDL_systhread.c
  67. 0 12
      src/thread/windows/SDL_systls.c
  68. 1 21
      src/timer/windows/SDL_systimer.c
  69. 4 6
      src/video/SDL_egl.c
  70. 1 1
      src/video/SDL_stretch.c
  71. 0 1
      src/video/SDL_sysvideo.h
  72. 1 54
      src/video/SDL_video.c
  73. 0 153
      src/video/winrt/SDL_winrtevents.cpp
  74. 0 83
      src/video/winrt/SDL_winrtevents_c.h
  75. 0 196
      src/video/winrt/SDL_winrtgamebar.cpp
  76. 0 35
      src/video/winrt/SDL_winrtgamebar_cpp.h
  77. 0 466
      src/video/winrt/SDL_winrtkeyboard.cpp
  78. 0 118
      src/video/winrt/SDL_winrtmessagebox.cpp
  79. 0 29
      src/video/winrt/SDL_winrtmessagebox.h
  80. 0 222
      src/video/winrt/SDL_winrtmouse.cpp
  81. 0 40
      src/video/winrt/SDL_winrtmouse_c.h
  82. 0 203
      src/video/winrt/SDL_winrtopengles.cpp
  83. 0 70
      src/video/winrt/SDL_winrtopengles.h
  84. 0 407
      src/video/winrt/SDL_winrtpointerinput.cpp
  85. 0 907
      src/video/winrt/SDL_winrtvideo.cpp
  86. 0 106
      src/video/winrt/SDL_winrtvideo_cpp.h

+ 0 - 3
.github/workflows/msvc.yml

@@ -19,8 +19,6 @@ jobs:
         - { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32 }
         - { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32 }
         - { name: Windows (ARM),          flags: -A ARM }
         - { name: Windows (ARM),          flags: -A ARM }
         - { name: Windows (ARM64),        flags: -A ARM64 }
         - { name: Windows (ARM64),        flags: -A ARM64 }
-        - { name: UWP (x64),              flags: -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0" -DSDL_TESTS=OFF, nowerror: true,
-            project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0' }
 
 
     steps:
     steps:
     - uses: actions/checkout@v3
     - uses: actions/checkout@v3
@@ -59,7 +57,6 @@ jobs:
         echo "SDL3_DIR=$Env:GITHUB_WORKSPACE/prefix" >> $Env:GITHUB_ENV
         echo "SDL3_DIR=$Env:GITHUB_WORKSPACE/prefix" >> $Env:GITHUB_ENV
         cmake --install build/
         cmake --install build/
     - name: Verify CMake configuration files
     - name: Verify CMake configuration files
-      if: ${{ !contains(matrix.platform.name, 'UWP') }}  # FIXME: cmake/test/CMakeLists.txt should support UWP
       run: |
       run: |
         cmake -S cmake/test -B cmake_config_build `
         cmake -S cmake/test -B cmake_config_build `
           -DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }} `
           -DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }} `

+ 25 - 82
CMakeLists.txt

@@ -26,12 +26,6 @@ set(EXTRA_LDFLAGS)
 #  etc. See https://github.com/libsdl-org/SDL/issues/4150
 #  etc. See https://github.com/libsdl-org/SDL/issues/4150
 add_library(sdl-build-options INTERFACE)
 add_library(sdl-build-options INTERFACE)
 
 
-if(WINDOWS_STORE)
-  cmake_minimum_required(VERSION 3.11.0)
-  target_compile_definitions(sdl-build-options INTERFACE "-DSDL_BUILDING_WINRT=1")
-  target_compile_options(sdl-build-options INTERFACE "-ZW")
-endif()
-
 # Build in parallel under Visual Studio. Not enabled by default.
 # Build in parallel under Visual Studio. Not enabled by default.
 if(MSVC)
 if(MSVC)
   target_compile_options(sdl-build-options INTERFACE "/MP")
   target_compile_options(sdl-build-options INTERFACE "/MP")
@@ -239,7 +233,7 @@ endif()
 #  so we'll just use libusb when it's available. libusb does not support iOS,
 #  so we'll just use libusb when it's available. libusb does not support iOS,
 #  so we default to yes on iOS.
 #  so we default to yes on iOS.
 #  TODO: Windows can support libusb, the hid.c file just depends on Unix APIs
 #  TODO: Windows can support libusb, the hid.c file just depends on Unix APIs
-if((WINDOWS AND NOT WINDOWS_STORE) OR IOS OR TVOS OR ANDROID)
+if(WINDOWS OR IOS OR TVOS OR ANDROID)
   set(HIDAPI_SKIP_LIBUSB TRUE)
   set(HIDAPI_SKIP_LIBUSB TRUE)
 else()
 else()
   set(HIDAPI_SKIP_LIBUSB FALSE)
   set(HIDAPI_SKIP_LIBUSB FALSE)
@@ -1665,11 +1659,6 @@ elseif(WINDOWS)
   file(GLOB CORE_SOURCES ${SDL3_SOURCE_DIR}/src/core/windows/*.c)
   file(GLOB CORE_SOURCES ${SDL3_SOURCE_DIR}/src/core/windows/*.c)
   list(APPEND SOURCE_FILES ${CORE_SOURCES})
   list(APPEND SOURCE_FILES ${CORE_SOURCES})
 
 
-  if(WINDOWS_STORE)
-    file(GLOB WINRT_SOURCE_FILES ${SDL3_SOURCE_DIR}/src/core/winrt/*.c ${SDL3_SOURCE_DIR}/src/core/winrt/*.cpp)
-    list(APPEND SOURCE_FILES ${WINRT_SOURCE_FILES})
-  endif()
-
   if(MSVC AND NOT SDL_LIBC)
   if(MSVC AND NOT SDL_LIBC)
     # Prevent codegen that would use the VC runtime libraries.
     # Prevent codegen that would use the VC runtime libraries.
     set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/GS-")
     set_property(DIRECTORY . APPEND PROPERTY COMPILE_OPTIONS "/GS-")
@@ -1679,11 +1668,7 @@ elseif(WINDOWS)
   endif()
   endif()
 
 
   if(SDL_MISC)
   if(SDL_MISC)
-    if(WINDOWS_STORE)
-      file(GLOB MISC_SOURCES ${SDL3_SOURCE_DIR}/src/misc/winrt/*.cpp)
-    else()
-      file(GLOB MISC_SOURCES ${SDL3_SOURCE_DIR}/src/misc/windows/*.c)
-    endif()
+    file(GLOB MISC_SOURCES ${SDL3_SOURCE_DIR}/src/misc/windows/*.c)
     list(APPEND SOURCE_FILES ${MISC_SOURCES})
     list(APPEND SOURCE_FILES ${MISC_SOURCES})
     set(HAVE_SDL_MISC TRUE)
     set(HAVE_SDL_MISC TRUE)
   endif()
   endif()
@@ -1713,7 +1698,7 @@ elseif(WINDOWS)
     check_include_file(ddraw.h HAVE_DDRAW_H)
     check_include_file(ddraw.h HAVE_DDRAW_H)
     check_include_file(dsound.h HAVE_DSOUND_H)
     check_include_file(dsound.h HAVE_DSOUND_H)
     check_include_file(dinput.h HAVE_DINPUT_H)
     check_include_file(dinput.h HAVE_DINPUT_H)
-    if(WINDOWS_STORE OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
+    if(CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
       set(HAVE_DINPUT_H 0)
       set(HAVE_DINPUT_H 0)
     endif()
     endif()
     check_include_file(dxgi.h HAVE_DXGI_H)
     check_include_file(dxgi.h HAVE_DXGI_H)
@@ -1760,7 +1745,7 @@ elseif(WINDOWS)
   check_include_file(shellscalingapi.h HAVE_SHELLSCALINGAPI_H)
   check_include_file(shellscalingapi.h HAVE_SHELLSCALINGAPI_H)
 
 
   if(SDL_AUDIO)
   if(SDL_AUDIO)
-    if(HAVE_DSOUND_H AND NOT WINDOWS_STORE)
+    if(HAVE_DSOUND_H)
       set(SDL_AUDIO_DRIVER_DSOUND 1)
       set(SDL_AUDIO_DRIVER_DSOUND 1)
       file(GLOB DSOUND_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/directsound/*.c)
       file(GLOB DSOUND_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/directsound/*.c)
       list(APPEND SOURCE_FILES ${DSOUND_AUDIO_SOURCES})
       list(APPEND SOURCE_FILES ${DSOUND_AUDIO_SOURCES})
@@ -1771,9 +1756,6 @@ elseif(WINDOWS)
       set(SDL_AUDIO_DRIVER_WASAPI 1)
       set(SDL_AUDIO_DRIVER_WASAPI 1)
       set(HAVE_WASAPI TRUE)
       set(HAVE_WASAPI TRUE)
       file(GLOB WASAPI_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/wasapi/*.c)
       file(GLOB WASAPI_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/wasapi/*.c)
-      if(WINDOWS_STORE)
-        list(APPEND WASAPI_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/wasapi/SDL_wasapi_winrt.cpp)
-      endif()
       list(APPEND SOURCE_FILES ${WASAPI_AUDIO_SOURCES})
       list(APPEND SOURCE_FILES ${WASAPI_AUDIO_SOURCES})
       set(HAVE_SDL_AUDIO TRUE)
       set(HAVE_SDL_AUDIO TRUE)
     endif()
     endif()
@@ -1784,20 +1766,11 @@ elseif(WINDOWS)
     if(NOT SDL_LOADSO)
     if(NOT SDL_LOADSO)
       message_error("SDL_VIDEO requires SDL_LOADSO, which is not enabled")
       message_error("SDL_VIDEO requires SDL_LOADSO, which is not enabled")
     endif()
     endif()
-    if(WINDOWS_STORE)
-      set(SDL_VIDEO_DRIVER_WINRT 1)
-      file(GLOB WIN_VIDEO_SOURCES
-        ${SDL3_SOURCE_DIR}/src/video/winrt/*.c
-        ${SDL3_SOURCE_DIR}/src/video/winrt/*.cpp
-        ${SDL3_SOURCE_DIR}/src/render/direct3d11/*.cpp
-        )
-    else()
-      set(SDL_VIDEO_DRIVER_WINDOWS 1)
-      file(GLOB WIN_VIDEO_SOURCES ${SDL3_SOURCE_DIR}/src/video/windows/*.c)
-    endif()
+    set(SDL_VIDEO_DRIVER_WINDOWS 1)
+    file(GLOB WIN_VIDEO_SOURCES ${SDL3_SOURCE_DIR}/src/video/windows/*.c)
     list(APPEND SOURCE_FILES ${WIN_VIDEO_SOURCES})
     list(APPEND SOURCE_FILES ${WIN_VIDEO_SOURCES})
 
 
-    if(SDL_RENDER_D3D AND HAVE_D3D_H AND NOT WINDOWS_STORE)
+    if(SDL_RENDER_D3D AND HAVE_D3D_H)
       set(SDL_VIDEO_RENDER_D3D 1)
       set(SDL_VIDEO_RENDER_D3D 1)
       set(HAVE_RENDER_D3D TRUE)
       set(HAVE_RENDER_D3D TRUE)
     endif()
     endif()
@@ -1805,7 +1778,7 @@ elseif(WINDOWS)
       set(SDL_VIDEO_RENDER_D3D11 1)
       set(SDL_VIDEO_RENDER_D3D11 1)
       set(HAVE_RENDER_D3D TRUE)
       set(HAVE_RENDER_D3D TRUE)
     endif()
     endif()
-    if(SDL_RENDER_D3D AND HAVE_D3D12_H AND NOT WINDOWS_STORE)
+    if(SDL_RENDER_D3D AND HAVE_D3D12_H)
       set(SDL_VIDEO_RENDER_D3D12 1)
       set(SDL_VIDEO_RENDER_D3D12 1)
       set(HAVE_RENDER_D3D TRUE)
       set(HAVE_RENDER_D3D TRUE)
     endif()
     endif()
@@ -1825,7 +1798,7 @@ elseif(WINDOWS)
     set(HAVE_SDL_THREADS TRUE)
     set(HAVE_SDL_THREADS TRUE)
   endif()
   endif()
 
 
-  if(SDL_SENSOR AND HAVE_SENSORSAPI_H AND NOT WINDOWS_STORE)
+  if(SDL_SENSOR AND HAVE_SENSORSAPI_H)
     set(SDL_SENSOR_WINDOWS 1)
     set(SDL_SENSOR_WINDOWS 1)
     set(HAVE_SDL_SENSORS TRUE)
     set(HAVE_SDL_SENSORS TRUE)
     file(GLOB WINDOWS_SENSOR_SOURCES ${SDL3_SOURCE_DIR}/src/sensor/windows/*.c)
     file(GLOB WINDOWS_SENSOR_SOURCES ${SDL3_SOURCE_DIR}/src/sensor/windows/*.c)
@@ -1833,50 +1806,26 @@ elseif(WINDOWS)
   endif()
   endif()
 
 
   if(SDL_POWER)
   if(SDL_POWER)
-    if(WINDOWS_STORE)
-      set(SDL_POWER_WINRT 1)
-      list(APPEND SOURCE_FILES ${SDL3_SOURCE_DIR}/src/power/winrt/SDL_syspower.cpp)
-    else()
-      set(SDL_POWER_WINDOWS 1)
-      list(APPEND SOURCE_FILES ${SDL3_SOURCE_DIR}/src/power/windows/SDL_syspower.c)
-      set(HAVE_SDL_POWER TRUE)
-    endif()
+    set(SDL_POWER_WINDOWS 1)
+    list(APPEND SOURCE_FILES ${SDL3_SOURCE_DIR}/src/power/windows/SDL_syspower.c)
+    set(HAVE_SDL_POWER TRUE)
   endif()
   endif()
 
 
   if(SDL_LOCALE)
   if(SDL_LOCALE)
-    if(WINDOWS_STORE)
-      file(GLOB LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/winrt/*.c)
-    else()
-      file(GLOB LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/windows/*.c)
-    endif()
+    file(GLOB LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/windows/*.c)
     list(APPEND SOURCE_FILES ${LOCALE_SOURCES})
     list(APPEND SOURCE_FILES ${LOCALE_SOURCES})
     set(HAVE_SDL_LOCALE TRUE)
     set(HAVE_SDL_LOCALE TRUE)
   endif()
   endif()
 
 
   if(SDL_FILESYSTEM)
   if(SDL_FILESYSTEM)
     set(SDL_FILESYSTEM_WINDOWS 1)
     set(SDL_FILESYSTEM_WINDOWS 1)
-    if(WINDOWS_STORE)
-      file(GLOB FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/winrt/*.cpp)
-    else()
-      file(GLOB FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/windows/*.c)
-    endif()
+    file(GLOB FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/windows/*.c)
     list(APPEND SOURCE_FILES ${FILESYSTEM_SOURCES})
     list(APPEND SOURCE_FILES ${FILESYSTEM_SOURCES})
     set(HAVE_SDL_FILESYSTEM TRUE)
     set(HAVE_SDL_FILESYSTEM TRUE)
   endif()
   endif()
 
 
   # Libraries for Win32 native and MinGW
   # Libraries for Win32 native and MinGW
-  if(NOT WINDOWS_STORE)
-    list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 setupapi shell32)
-  endif()
-
-  if(WINDOWS_STORE)
-    list(APPEND EXTRA_LIBS
-      -nodefaultlib:vccorlib$<$<CONFIG:Debug>:d>
-      -nodefaultlib:msvcrt$<$<CONFIG:Debug>:d>
-      vccorlib$<$<CONFIG:Debug>:d>.lib
-      msvcrt$<$<CONFIG:Debug>:d>.lib
-    )
-  endif()
+  list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 setupapi shell32)
 
 
   if(SDL_TIMERS)
   if(SDL_TIMERS)
     set(SDL_TIMER_WINDOWS 1)
     set(SDL_TIMER_WINDOWS 1)
@@ -1896,7 +1845,7 @@ elseif(WINDOWS)
   list(APPEND SOURCE_FILES ${CORE_SOURCES})
   list(APPEND SOURCE_FILES ${CORE_SOURCES})
 
 
   if(SDL_VIDEO)
   if(SDL_VIDEO)
-    if(SDL_OPENGL AND NOT WINDOWS_STORE)
+    if(SDL_OPENGL)
       set(SDL_VIDEO_OPENGL 1)
       set(SDL_VIDEO_OPENGL 1)
       set(SDL_VIDEO_OPENGL_WGL 1)
       set(SDL_VIDEO_OPENGL_WGL 1)
       set(SDL_VIDEO_RENDER_OGL 1)
       set(SDL_VIDEO_RENDER_OGL 1)
@@ -1924,18 +1873,14 @@ elseif(WINDOWS)
     file(GLOB JOYSTICK_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/windows/*.c)
     file(GLOB JOYSTICK_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/windows/*.c)
     list(APPEND SOURCE_FILES ${JOYSTICK_SOURCES})
     list(APPEND SOURCE_FILES ${JOYSTICK_SOURCES})
 
 
-    if(NOT WINDOWS_STORE)
-      set(SDL_JOYSTICK_RAWINPUT 1)
-    endif()
+    set(SDL_JOYSTICK_RAWINPUT 1)
     if(HAVE_DINPUT_H)
     if(HAVE_DINPUT_H)
       set(SDL_JOYSTICK_DINPUT 1)
       set(SDL_JOYSTICK_DINPUT 1)
       list(APPEND EXTRA_LIBS dinput8)
       list(APPEND EXTRA_LIBS dinput8)
     endif()
     endif()
     if(HAVE_XINPUT_H)
     if(HAVE_XINPUT_H)
-      if(NOT WINDOWS_STORE)
-        set(SDL_JOYSTICK_XINPUT 1)
-        set(HAVE_XINPUT TRUE)
-      endif()
+      set(SDL_JOYSTICK_XINPUT 1)
+      set(HAVE_XINPUT TRUE)
       if(HAVE_WINDOWS_GAMING_INPUT_H)
       if(HAVE_WINDOWS_GAMING_INPUT_H)
         set(SDL_JOYSTICK_WGI 1)
         set(SDL_JOYSTICK_WGI 1)
       endif()
       endif()
@@ -1943,7 +1888,7 @@ elseif(WINDOWS)
     set(HAVE_SDL_JOYSTICK TRUE)
     set(HAVE_SDL_JOYSTICK TRUE)
 
 
     if(SDL_HAPTIC)
     if(SDL_HAPTIC)
-      if((HAVE_DINPUT_H OR HAVE_XINPUT_H) AND NOT WINDOWS_STORE)
+      if(HAVE_DINPUT_H OR HAVE_XINPUT_H)
         file(GLOB HAPTIC_SOURCES ${SDL3_SOURCE_DIR}/src/haptic/windows/*.c)
         file(GLOB HAPTIC_SOURCES ${SDL3_SOURCE_DIR}/src/haptic/windows/*.c)
         if(HAVE_DINPUT_H)
         if(HAVE_DINPUT_H)
           set(SDL_HAPTIC_DINPUT 1)
           set(SDL_HAPTIC_DINPUT 1)
@@ -3117,7 +3062,7 @@ endif()
 # Ensure that the extra cflags are used at compile time
 # Ensure that the extra cflags are used at compile time
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${EXTRA_CFLAGS_BUILD}")
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${EXTRA_CFLAGS_BUILD}")
 
 
-if(NOT WINDOWS_STORE AND NOT SDL3_DISABLE_SDL3MAIN)
+if(NOT SDL3_DISABLE_SDL3MAIN)
   # Build SDLmain
   # Build SDLmain
   add_library(SDL3main STATIC ${SDLMAIN_SOURCES})
   add_library(SDL3main STATIC ${SDLMAIN_SOURCES})
   add_dependencies(SDL3main sdl_headers_copy)
   add_dependencies(SDL3main sdl_headers_copy)
@@ -3199,10 +3144,8 @@ if(SDL_SHARED)
   # Note: The clang toolset for Visual Studio does not support /NODEFAULTLIB.
   # Note: The clang toolset for Visual Studio does not support /NODEFAULTLIB.
   if(MSVC AND NOT SDL_LIBC AND NOT MSVC_CLANG AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
   if(MSVC AND NOT SDL_LIBC AND NOT MSVC_CLANG AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM")
     # Don't try to link with the default set of libraries.
     # Don't try to link with the default set of libraries.
-    if(NOT WINDOWS_STORE)
-      set_target_properties(SDL3 PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB")
-      set_target_properties(SDL3 PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB")
-    endif()
+    set_target_properties(SDL3 PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB")
+    set_target_properties(SDL3 PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB")
     set_target_properties(SDL3 PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB")
     set_target_properties(SDL3 PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB")
   endif()
   endif()
   # FIXME: if CMAKE_VERSION >= 3.13, use target_link_options for EXTRA_LDFLAGS
   # FIXME: if CMAKE_VERSION >= 3.13, use target_link_options for EXTRA_LDFLAGS
@@ -3284,7 +3227,7 @@ if(NOT SDL3_DISABLE_INSTALL)
       RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
       RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
   endif()
   endif()
 
 
-  if(NOT WINDOWS_STORE AND NOT SDL3_DISABLE_SDL3MAIN)
+  if(NOT SDL3_DISABLE_SDL3MAIN)
     install(TARGETS SDL3main EXPORT SDL3mainTargets
     install(TARGETS SDL3main EXPORT SDL3mainTargets
       LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
       LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
       ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
       ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -3337,7 +3280,7 @@ if(NOT SDL3_DISABLE_INSTALL)
     endif()
     endif()
   endif()
   endif()
 
 
-  if(NOT WINDOWS_STORE AND NOT SDL3_DISABLE_SDL3MAIN)
+  if(NOT SDL3_DISABLE_SDL3MAIN)
     install(EXPORT SDL3mainTargets
     install(EXPORT SDL3mainTargets
       FILE SDL3mainTargets.cmake
       FILE SDL3mainTargets.cmake
       NAMESPACE SDL3::
       NAMESPACE SDL3::

+ 1 - 1
Makefile.in

@@ -51,7 +51,7 @@ WAYLAND_SCANNER_CODE_MODE = @WAYLAND_SCANNER_CODE_MODE@
 
 
 INSTALL_SDL3_CONFIG = @INSTALL_SDL3_CONFIG@
 INSTALL_SDL3_CONFIG = @INSTALL_SDL3_CONFIG@
 
 
-SRC_DIST = *.md *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.ac docs include Makefile.* mingw sdl3-config.cmake.in sdl3-config-version.cmake.in sdl3-config.in sdl3.m4 sdl3.pc.in SDL3.spec.in SDL3Config.cmake.in 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 docs include Makefile.* mingw sdl3-config.cmake.in sdl3-config-version.cmake.in sdl3-config.in sdl3.m4 sdl3.pc.in SDL3.spec.in SDL3Config.cmake.in src test VisualC Xcode Xcode-iOS wayland-protocols
 GEN_DIST = SDL3.spec
 GEN_DIST = SDL3.spec
 
 
 ifneq ($V,1)
 ifneq ($V,1)

+ 0 - 40
VisualC-WinRT/SDL-UWP.sln

@@ -1,40 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3-UWP", "SDL-UWP.vcxproj", "{89E9B32E-A86A-47C3-A948-D2B1622925CE}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|ARM = Debug|ARM
-		Debug|ARM64 = Debug|ARM64
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|ARM = Release|ARM
-		Release|ARM64 = Release|ARM64
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM.ActiveCfg = Debug|ARM
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM.Build.0 = Debug|ARM
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM64.ActiveCfg = Debug|ARM64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM64.Build.0 = Debug|ARM64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x64.ActiveCfg = Debug|x64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x64.Build.0 = Debug|x64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x86.ActiveCfg = Debug|Win32
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x86.Build.0 = Debug|Win32
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM.ActiveCfg = Release|ARM
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM.Build.0 = Release|ARM
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM64.ActiveCfg = Release|ARM64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM64.Build.0 = Release|ARM64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x64.ActiveCfg = Release|x64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x64.Build.0 = Release|x64
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x86.ActiveCfg = Release|Win32
-		{89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x86.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 594
VisualC-WinRT/SDL-UWP.vcxproj

@@ -1,594 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|ARM64">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ARM">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <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|ARM">
-      <Configuration>Release</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ARM64">
-      <Configuration>Release</Configuration>
-      <Platform>ARM64</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>
-  <ItemGroup>
-    <ClInclude Include="..\include\begin_code.h" />
-    <ClInclude Include="..\include\close_code.h" />
-    <ClInclude Include="..\include\SDL.h" />
-    <ClInclude Include="..\include\SDL_assert.h" />
-    <ClInclude Include="..\include\SDL_atomic.h" />
-    <ClInclude Include="..\include\SDL_audio.h" />
-    <ClInclude Include="..\include\SDL_blendmode.h" />
-    <ClInclude Include="..\include\SDL_clipboard.h" />
-    <ClInclude Include="..\include\SDL_config.h" />
-    <ClInclude Include="..\include\SDL_config_minimal.h" />
-    <ClInclude Include="..\include\SDL_config_winrt.h" />
-    <ClInclude Include="..\include\SDL_copying.h" />
-    <ClInclude Include="..\include\SDL_cpuinfo.h" />
-    <ClInclude Include="..\include\SDL_egl.h" />
-    <ClInclude Include="..\include\SDL_endian.h" />
-    <ClInclude Include="..\include\SDL_error.h" />
-    <ClInclude Include="..\include\SDL_events.h" />
-    <ClInclude Include="..\include\SDL_filesystem.h" />
-    <ClInclude Include="..\include\SDL_guid.h" />
-    <ClInclude Include="..\include\SDL_haptic.h" />
-    <ClInclude Include="..\include\SDL_hints.h" />
-    <ClInclude Include="..\include\SDL_hidapi.h" />
-    <ClInclude Include="..\include\SDL_input.h" />
-    <ClInclude Include="..\include\SDL_joystick.h" />
-    <ClInclude Include="..\include\SDL_keyboard.h" />
-    <ClInclude Include="..\include\SDL_keycode.h" />
-    <ClInclude Include="..\include\SDL_loadso.h" />
-    <ClInclude Include="..\include\SDL_locale.h" />
-    <ClInclude Include="..\include\SDL_log.h" />
-    <ClInclude Include="..\include\SDL_main.h" />
-    <ClInclude Include="..\include\SDL_misc.h" />
-    <ClInclude Include="..\include\SDL_mouse.h" />
-    <ClInclude Include="..\include\SDL_mutex.h" />
-    <ClInclude Include="..\include\SDL_name.h" />
-    <ClInclude Include="..\include\SDL_opengles2.h" />
-    <ClInclude Include="..\include\SDL_pixels.h" />
-    <ClInclude Include="..\include\SDL_platform.h" />
-    <ClInclude Include="..\include\SDL_power.h" />
-    <ClInclude Include="..\include\SDL_quit.h" />
-    <ClInclude Include="..\include\SDL_rect.h" />
-    <ClInclude Include="..\include\SDL_render.h" />
-    <ClInclude Include="..\include\SDL_revision.h" />
-    <ClInclude Include="..\include\SDL_rwops.h" />
-    <ClInclude Include="..\include\SDL_scancode.h" />
-    <ClInclude Include="..\include\SDL_sensor.h" />
-    <ClInclude Include="..\include\SDL_shape.h" />
-    <ClInclude Include="..\include\SDL_stdinc.h" />
-    <ClInclude Include="..\include\SDL_surface.h" />
-    <ClInclude Include="..\include\SDL_system.h" />
-    <ClInclude Include="..\include\SDL_syswm.h" />
-    <ClInclude Include="..\include\SDL_thread.h" />
-    <ClInclude Include="..\include\SDL_timer.h" />
-    <ClInclude Include="..\include\SDL_touch.h" />
-    <ClInclude Include="..\include\SDL_types.h" />
-    <ClInclude Include="..\include\SDL_version.h" />
-    <ClInclude Include="..\include\SDL_video.h" />
-    <ClInclude Include="..\src\audio\disk\SDL_diskaudio.h" />
-    <ClInclude Include="..\src\audio\dummy\SDL_dummyaudio.h" />
-    <ClInclude Include="..\src\audio\SDL_audiodev_c.h" />
-    <ClInclude Include="..\src\audio\SDL_audio_c.h" />
-    <ClInclude Include="..\src\audio\SDL_sysaudio.h" />
-    <ClInclude Include="..\src\audio\SDL_wave.h" />
-    <ClInclude Include="..\src\audio\wasapi\SDL_wasapi.h" />
-    <ClInclude Include="..\src\core\windows\SDL_directx.h" />
-    <ClInclude Include="..\src\core\windows\SDL_windows.h" />
-    <ClInclude Include="..\src\core\windows\SDL_xinput.h" />
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_common.h" />
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_direct3d.h" />
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_xaml.h" />
-    <ClInclude Include="..\src\dynapi\SDL_dynapi.h" />
-    <ClInclude Include="..\src\dynapi\SDL_dynapi_overrides.h" />
-    <ClInclude Include="..\src\dynapi\SDL_dynapi_procs.h" />
-    <ClInclude Include="..\src\events\blank_cursor.h" />
-    <ClInclude Include="..\src\events\default_cursor.h" />
-    <ClInclude Include="..\src\events\SDL_clipboardevents_c.h" />
-    <ClInclude Include="..\src\events\SDL_displayevents_c.h" />
-    <ClInclude Include="..\src\events\SDL_dropevents_c.h" />
-    <ClInclude Include="..\src\events\SDL_events_c.h" />
-    <ClInclude Include="..\src\events\SDL_keyboard_c.h" />
-    <ClInclude Include="..\src\events\SDL_mouse_c.h" />
-    <ClInclude Include="..\src\events\SDL_touch_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\windows\SDL_dinputhaptic_c.h" />
-    <ClInclude Include="..\src\haptic\windows\SDL_windowshaptic_c.h" />
-    <ClInclude Include="..\src\haptic\windows\SDL_xinputhaptic_c.h" />
-    <ClInclude Include="..\src\joystick\controller_type.h" />
-    <ClInclude Include="..\src\joystick\SDL_gamecontrollerdb.h" />
-    <ClInclude Include="..\src\joystick\SDL_joystick_c.h" />
-    <ClInclude Include="..\src\joystick\SDL_sysjoystick.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_windowsjoystick_c.h" />
-    <ClInclude Include="..\src\joystick\windows\SDL_xinputjoystick_c.h" />
-    <ClInclude Include="..\src\locale\SDL_syslocale.h" />
-    <ClInclude Include="..\src\render\direct3d11\SDL_render_winrt.h" />
-    <ClInclude Include="..\src\render\direct3d11\SDL_shaders_d3d11.h" />
-    <ClInclude Include="..\src\render\opengles2\SDL_gles2funcs.h" />
-    <ClInclude Include="..\src\render\opengles2\SDL_shaders_gles2.h" />
-    <ClInclude Include="..\src\render\SDL_d3dmath.h" />
-    <ClInclude Include="..\src\render\SDL_sysrender.h" />
-    <ClInclude Include="..\src\render\SDL_yuv_sw_c.h" />
-    <ClInclude Include="..\src\render\software\SDL_blendfillrect.h" />
-    <ClInclude Include="..\src\render\software\SDL_blendline.h" />
-    <ClInclude Include="..\src\render\software\SDL_blendpoint.h" />
-    <ClInclude Include="..\src\render\software\SDL_draw.h" />
-    <ClInclude Include="..\src\render\software\SDL_drawline.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_rotate.h" />
-    <ClInclude Include="..\src\render\software\SDL_triangle.h" />
-    <ClInclude Include="..\src\SDL_assert_c.h" />
-    <ClInclude Include="..\src\SDL_dataqueue.h" />
-    <ClInclude Include="..\src\SDL_error_c.h" />
-    <ClInclude Include="..\src\SDL_fatal.h" />
-    <ClInclude Include="..\src\SDL_hints_c.h" />
-    <ClInclude Include="..\src\SDL_internal.h" />
-    <ClInclude Include="..\src\SDL_list.h" />
-    <ClInclude Include="..\src\SDL_log_c.h" />
-    <ClInclude Include="..\src\sensor\dummy\SDL_dummysensor.h" />
-    <ClInclude Include="..\src\sensor\SDL_sensor_c.h" />
-    <ClInclude Include="..\src\sensor\SDL_syssensor.h" />
-    <ClInclude Include="..\src\thread\SDL_systhread.h" />
-    <ClInclude Include="..\src\thread\SDL_thread_c.h" />
-    <ClInclude Include="..\src\thread\stdcpp\SDL_sysmutex_c.h" />
-    <ClInclude Include="..\src\thread\stdcpp\SDL_systhread_c.h" />
-    <ClInclude Include="..\src\timer\SDL_timer_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_nullvideo.h" />
-    <ClInclude Include="..\src\video\SDL_blit.h" />
-    <ClInclude Include="..\src\video\SDL_blit_auto.h" />
-    <ClInclude Include="..\src\video\SDL_blit_copy.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_rect_c.h" />
-    <ClInclude Include="..\src\video\SDL_RLEaccel_c.h" />
-    <ClInclude Include="..\src\video\SDL_shape_internals.h" />
-    <ClInclude Include="..\src\video\SDL_sysvideo.h" />
-    <ClInclude Include="..\src\video\SDL_yuv_c.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtevents_c.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtgamebar_cpp.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtmessagebox.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtmouse_c.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtopengles.h" />
-    <ClInclude Include="..\src\video\winrt\SDL_winrtvideo_cpp.h" />
-    <ClInclude Include="..\src\video\yuv2rgb\yuv_rgb.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\src\atomic\SDL_atomic.c" />
-    <ClCompile Include="..\src\atomic\SDL_spinlock.c" />
-    <ClCompile Include="..\src\audio\disk\SDL_diskaudio.c" />
-    <ClCompile Include="..\src\audio\dummy\SDL_dummyaudio.c" />
-    <ClCompile Include="..\src\audio\SDL_audio.c" />
-    <ClCompile Include="..\src\audio\SDL_audiocvt.c" />
-    <ClCompile Include="..\src\audio\SDL_audiodev.c" />
-    <ClCompile Include="..\src\audio\SDL_audiotypecvt.c" />
-    <ClCompile Include="..\src\audio\SDL_mixer.c" />
-    <ClCompile Include="..\src\audio\SDL_wave.c" />
-    <ClCompile Include="..\src\audio\wasapi\SDL_wasapi.c" />
-    <ClCompile Include="..\src\audio\wasapi\SDL_wasapi_winrt.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\core\windows\SDL_windows.c" />
-    <ClCompile Include="..\src\core\windows\SDL_xinput.c" />
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_common.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_direct3d.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_xaml.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\cpuinfo\SDL_cpuinfo.c" />
-    <ClCompile Include="..\src\dynapi\SDL_dynapi.c" />
-    <ClCompile Include="..\src\events\SDL_clipboardevents.c" />
-    <ClCompile Include="..\src\events\SDL_displayevents.c" />
-    <ClCompile Include="..\src\events\SDL_dropevents.c" />
-    <ClCompile Include="..\src\events\SDL_events.c" />
-    <ClCompile Include="..\src\events\SDL_gesture.c" />
-    <ClCompile Include="..\src\events\SDL_keyboard.c" />
-    <ClCompile Include="..\src\events\SDL_mouse.c" />
-    <ClCompile Include="..\src\events\SDL_quit.c" />
-    <ClCompile Include="..\src\events\SDL_touch.c" />
-    <ClCompile Include="..\src\events\SDL_windowevents.c" />
-    <ClCompile Include="..\src\filesystem\winrt\SDL_sysfilesystem.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\file\SDL_rwops.c" />
-    <ClCompile Include="..\src\haptic\dummy\SDL_syshaptic.c" />
-    <ClCompile Include="..\src\haptic\SDL_haptic.c" />
-    <ClCompile Include="..\src\haptic\windows\SDL_dinputhaptic.c" />
-    <ClCompile Include="..\src\haptic\windows\SDL_windowshaptic.c" />
-    <ClCompile Include="..\src\haptic\windows\SDL_xinputhaptic.c" />
-    <ClCompile Include="..\src\hidapi\SDL_hidapi.c" />
-    <ClCompile Include="..\src\joystick\dummy\SDL_sysjoystick.c" />
-    <ClCompile Include="..\src\joystick\controller_type.c" />
-    <ClCompile Include="..\src\joystick\SDL_gamecontroller.c" />
-    <ClCompile Include="..\src\joystick\SDL_joystick.c" />
-    <ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c" />
-    <ClCompile Include="..\src\joystick\windows\SDL_dinputjoystick.c" />
-    <ClCompile Include="..\src\joystick\windows\SDL_windowsjoystick.c" />
-    <ClCompile Include="..\src\joystick\windows\SDL_windows_gaming_input.c" />
-    <ClCompile Include="..\src\joystick\windows\SDL_xinputjoystick.c" />
-    <ClCompile Include="..\src\loadso\windows\SDL_sysloadso.c" />
-    <ClCompile Include="..\src\locale\SDL_locale.c" />
-    <ClCompile Include="..\src\locale\winrt\SDL_syslocale.c" />
-    <ClCompile Include="..\src\misc\SDL_url.c" />
-    <ClCompile Include="..\src\misc\winrt\SDL_sysurl.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\power\SDL_power.c" />
-    <ClCompile Include="..\src\power\winrt\SDL_syspower.cpp" />
-    <ClCompile Include="..\src\render\direct3d11\SDL_render_d3d11.c" />
-    <ClCompile Include="..\src\render\direct3d11\SDL_render_winrt.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\render\direct3d11\SDL_shaders_d3d11.c" />
-    <ClCompile Include="..\src\render\opengles2\SDL_render_gles2.c" />
-    <ClCompile Include="..\src\render\opengles2\SDL_shaders_gles2.c" />
-    <ClCompile Include="..\src\render\SDL_d3dmath.c" />
-    <ClCompile Include="..\src\render\SDL_render.c" />
-    <ClCompile Include="..\src\render\SDL_yuv_sw.c" />
-    <ClCompile Include="..\src\render\software\SDL_blendfillrect.c" />
-    <ClCompile Include="..\src\render\software\SDL_blendline.c" />
-    <ClCompile Include="..\src\render\software\SDL_blendpoint.c" />
-    <ClCompile Include="..\src\render\software\SDL_drawline.c" />
-    <ClCompile Include="..\src\render\software\SDL_drawpoint.c" />
-    <ClCompile Include="..\src\render\software\SDL_render_sw.c" />
-    <ClCompile Include="..\src\render\software\SDL_rotate.c" />
-    <ClCompile Include="..\src\render\software\SDL_triangle.c" />
-    <ClCompile Include="..\src\SDL.c" />
-    <ClCompile Include="..\src\SDL_assert.c" />
-    <ClCompile Include="..\src\SDL_dataqueue.c" />
-    <ClCompile Include="..\src\SDL_list.c" />
-    <ClCompile Include="..\src\SDL_error.c" />
-    <ClCompile Include="..\src\SDL_guid.c" />
-    <ClCompile Include="..\src\SDL_hints.c" />
-    <ClCompile Include="..\src\SDL_log.c" />
-    <ClCompile Include="..\src\SDL_utils.c" />
-    <ClCompile Include="..\src\sensor\dummy\SDL_dummysensor.c" />
-    <ClCompile Include="..\src\sensor\SDL_sensor.c" />
-    <ClCompile Include="..\src\stdlib\SDL_crc16.c" />
-    <ClCompile Include="..\src\stdlib\SDL_crc32.c" />
-    <ClCompile Include="..\src\stdlib\SDL_getenv.c" />
-    <ClCompile Include="..\src\stdlib\SDL_iconv.c" />
-    <ClCompile Include="..\src\stdlib\SDL_malloc.c" />
-    <ClCompile Include="..\src\stdlib\SDL_mslibc.c" />
-    <ClCompile Include="..\src\stdlib\SDL_qsort.c" />
-    <ClCompile Include="..\src\stdlib\SDL_stdlib.c" />
-    <ClCompile Include="..\src\stdlib\SDL_string.c" />
-    <ClCompile Include="..\src\stdlib\SDL_strtokr.c" />
-    <ClCompile Include="..\src\thread\generic\SDL_syssem.c" />
-    <ClCompile Include="..\src\thread\SDL_thread.c" />
-    <ClCompile Include="..\src\thread\stdcpp\SDL_syscond.cpp" />
-    <ClCompile Include="..\src\thread\stdcpp\SDL_sysmutex.cpp" />
-    <ClCompile Include="..\src\thread\stdcpp\SDL_systhread.cpp" />
-    <ClCompile Include="..\src\timer\SDL_timer.c" />
-    <ClCompile Include="..\src\timer\windows\SDL_systimer.c" />
-    <ClCompile Include="..\src\video\dummy\SDL_nullevents.c" />
-    <ClCompile Include="..\src\video\dummy\SDL_nullframebuffer.c" />
-    <ClCompile Include="..\src\video\dummy\SDL_nullvideo.c" />
-    <ClCompile Include="..\src\video\SDL_blit.c" />
-    <ClCompile Include="..\src\video\SDL_blit_0.c" />
-    <ClCompile Include="..\src\video\SDL_blit_1.c" />
-    <ClCompile Include="..\src\video\SDL_blit_A.c" />
-    <ClCompile Include="..\src\video\SDL_blit_auto.c" />
-    <ClCompile Include="..\src\video\SDL_blit_copy.c" />
-    <ClCompile Include="..\src\video\SDL_blit_N.c" />
-    <ClCompile Include="..\src\video\SDL_blit_slow.c" />
-    <ClCompile Include="..\src\video\SDL_bmp.c" />
-    <ClCompile Include="..\src\video\SDL_clipboard.c" />
-    <ClCompile Include="..\src\video\SDL_egl.c" />
-    <ClCompile Include="..\src\video\SDL_fillrect.c" />
-    <ClCompile Include="..\src\video\SDL_pixels.c" />
-    <ClCompile Include="..\src\video\SDL_rect.c" />
-    <ClCompile Include="..\src\video\SDL_RLEaccel.c" />
-    <ClCompile Include="..\src\video\SDL_shape.c" />
-    <ClCompile Include="..\src\video\SDL_stretch.c" />
-    <ClCompile Include="..\src\video\SDL_surface.c" />
-    <ClCompile Include="..\src\video\SDL_video.c" />
-    <ClCompile Include="..\src\video\SDL_yuv.c" />
-    <ClCompile Include="..\src\video\winrt\SDL_winrtevents.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtgamebar.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtkeyboard.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtmessagebox.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtmouse.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtopengles.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtpointerinput.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtvideo.cpp">
-      <CompileAsWinRT>true</CompileAsWinRT>
-    </ClCompile>
-    <ClCompile Include="..\src\video\yuv2rgb\yuv_rgb.c" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{89e9b32e-a86a-47c3-a948-d2b1622925ce}</ProjectGuid>
-    <Keyword>DynamicLibrary</Keyword>
-    <ProjectName>SDL3-UWP</ProjectName>
-    <RootNamespace>SDL3</RootNamespace>
-    <DefaultLanguage>en-US</DefaultLanguage>
-    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
-    <AppContainerApplication>true</AppContainerApplication>
-    <ApplicationType>Windows Store</ApplicationType>
-    <ApplicationTypeRevision>8.2</ApplicationTypeRevision>
-    <TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
-    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
-    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v142</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="Shared">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <GenerateManifest>false</GenerateManifest>
-    <IgnoreImportLibrary>false</IgnoreImportLibrary>
-    <TargetName>SDL3</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <CompileAsWinRT>false</CompileAsWinRT>
-      <AdditionalIncludeDirectories>..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalOptions>/nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions)</AdditionalOptions>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 849
VisualC-WinRT/SDL-UWP.vcxproj.filters

@@ -1,849 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{fa0ff2df-c3d6-498a-96f1-1f88e7ce0da3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{68e1b30b-19ed-4612-93e4-6260c5a979e5}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\include\begin_code.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\close_code.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_assert.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_atomic.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_audio.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_blendmode.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_clipboard.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_config_minimal.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_config_winrt.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_copying.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_cpuinfo.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_egl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_endian.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_error.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_events.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_filesystem.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_guid.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_haptic.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_hints.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_hidapi.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_input.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_joystick.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_keyboard.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_keycode.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_loadso.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_locale.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_log.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_main.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_mouse.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_mutex.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_name.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_opengles2.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_pixels.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_platform.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_power.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_quit.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_rect.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_render.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_revision.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_rwops.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_scancode.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_shape.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_stdinc.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_surface.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_system.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_syswm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_thread.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_timer.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_touch.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_types.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_video.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\SDL_gamecontrollerdb.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\disk\SDL_diskaudio.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\dummy\SDL_dummyaudio.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\SDL_audiodev_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\SDL_audio_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\SDL_sysaudio.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\SDL_wave.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\windows\SDL_directx.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\windows\SDL_windows.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\windows\SDL_xinput.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_common.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_direct3d.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\core\winrt\SDL_winrtapp_xaml.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\dynapi\SDL_dynapi.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\dynapi\SDL_dynapi_overrides.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\dynapi\SDL_dynapi_procs.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\blank_cursor.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\default_cursor.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_clipboardevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_dropevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_events_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_keyboard_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_mouse_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_touch_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_windowevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\haptic\SDL_haptic_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\haptic\SDL_syshaptic.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\SDL_joystick_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\SDL_sysjoystick.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\virtual\SDL_virtualjoystick_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\windows\SDL_dinputjoystick_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\windows\SDL_windowsjoystick_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\joystick\windows\SDL_xinputjoystick_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\direct3d11\SDL_render_winrt.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\opengles2\SDL_gles2funcs.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\opengles2\SDL_shaders_gles2.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\SDL_d3dmath.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\SDL_sysrender.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\SDL_yuv_sw_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_blendfillrect.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_blendline.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_blendpoint.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_draw.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_drawline.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_drawpoint.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_render_sw_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_rotate.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\software\SDL_triangle.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_assert_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_error_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_fatal.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_hints_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_internal.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_log_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\locale\SDL_syslocale.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\thread\SDL_systhread.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\thread\SDL_thread_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\thread\stdcpp\SDL_sysmutex_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\thread\stdcpp\SDL_systhread_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\timer\SDL_timer_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\dummy\SDL_nullevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\dummy\SDL_nullframebuffer_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\dummy\SDL_nullvideo.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_blit.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_blit_auto.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_blit_copy.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_blit_slow.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_egl_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_pixels_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_rect_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_RLEaccel_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_shape_internals.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_sysvideo.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtmessagebox.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtmouse_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtopengles.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtvideo_cpp.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\audio\wasapi\SDL_wasapi.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\winrt\SDL_winrtgamebar_cpp.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_dataqueue.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\SDL_list.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\haptic\windows\SDL_xinputhaptic_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\haptic\windows\SDL_dinputhaptic_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\haptic\windows\SDL_windowshaptic_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\SDL_yuv_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\video\yuv2rgb\yuv_rgb.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\render\direct3d11\SDL_shaders_d3d11.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_sensor.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\sensor\SDL_sensor_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\sensor\SDL_syssensor.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\sensor\dummy\SDL_dummysensor.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\events\SDL_displayevents_c.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\include\SDL_misc.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClCompile Include="..\src\atomic\SDL_atomic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\atomic\SDL_spinlock.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\disk\SDL_diskaudio.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\dummy\SDL_dummyaudio.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_audio.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_audiocvt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_audiodev.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_audiotypecvt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_mixer.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\SDL_wave.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\wasapi\SDL_wasapi_winrt.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\core\windows\SDL_windows.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\core\windows\SDL_xinput.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_common.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_direct3d.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\core\winrt\SDL_winrtapp_xaml.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\cpuinfo\SDL_cpuinfo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\dynapi\SDL_dynapi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_clipboardevents.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_dropevents.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_events.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_gesture.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_keyboard.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_mouse.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_quit.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_touch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_windowevents.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\filesystem\winrt\SDL_sysfilesystem.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\file\SDL_rwops.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\haptic\dummy\SDL_syshaptic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\haptic\SDL_haptic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\hidapi\SDL_hidapi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\dummy\SDL_sysjoystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\SDL_gamecontroller.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\SDL_joystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\virtual\SDL_virtualjoystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\windows\SDL_dinputjoystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\windows\SDL_windowsjoystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\windows\SDL_xinputjoystick.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\loadso\windows\SDL_sysloadso.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\power\SDL_power.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\power\winrt\SDL_syspower.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\direct3d11\SDL_render_d3d11.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\direct3d11\SDL_render_winrt.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\opengles2\SDL_render_gles2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\opengles2\SDL_shaders_gles2.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\SDL_d3dmath.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\SDL_render.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\SDL_yuv_sw.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_blendfillrect.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_blendline.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_blendpoint.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_drawline.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_drawpoint.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_render_sw.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_rotate.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\software\SDL_triangle.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_assert.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_error.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_guid.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_hints.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_log.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\locale\SDL_locale.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\locale\winrt\SDL_syslocale.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_crc16.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_crc32.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_getenv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_iconv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_malloc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_qsort.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_stdlib.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_string.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_strtokr.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\thread\generic\SDL_syssem.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\thread\SDL_thread.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\thread\stdcpp\SDL_syscond.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\thread\stdcpp\SDL_sysmutex.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\thread\stdcpp\SDL_systhread.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\timer\SDL_timer.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\timer\windows\SDL_systimer.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\dummy\SDL_nullevents.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\dummy\SDL_nullframebuffer.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\dummy\SDL_nullvideo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_0.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_1.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_A.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_auto.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_copy.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_N.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_blit_slow.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_bmp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_clipboard.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_egl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_fillrect.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_pixels.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_rect.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_RLEaccel.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_shape.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_stretch.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_surface.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_video.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtevents.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtkeyboard.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtmessagebox.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtmouse.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtopengles.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtpointerinput.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtvideo.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\audio\wasapi\SDL_wasapi.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\winrt\SDL_winrtgamebar.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_dataqueue.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_list.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\SDL_utils.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\haptic\windows\SDL_dinputhaptic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\haptic\windows\SDL_windowshaptic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\haptic\windows\SDL_xinputhaptic.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\SDL_yuv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\video\yuv2rgb\yuv_rgb.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\render\direct3d11\SDL_shaders_d3d11.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\sensor\SDL_sensor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\sensor\dummy\SDL_dummysensor.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\events\SDL_displayevents.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\misc\winrt\SDL_sysurl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\misc\SDL_url.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClInclude Include="..\src\joystick\controller_type.h">
-      <Filter>Source Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\src\joystick\windows\SDL_windows_gaming_input.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\joystick\controller_type.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\src\stdlib\SDL_mslibc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>

+ 0 - 6
build-scripts/fnsince.pl

@@ -119,12 +119,6 @@ $funcs{'SDL_DetachThread'} = '2.0.2';
 $funcs{'SDL_GL_ResetAttributes'} = '2.0.2';
 $funcs{'SDL_GL_ResetAttributes'} = '2.0.2';
 $funcs{'SDL_DXGIGetOutputInfo'} = '2.0.2';
 $funcs{'SDL_DXGIGetOutputInfo'} = '2.0.2';
 
 
-# these are incorrect in the dynapi header, because we forgot to add them
-#  until a later release, but are available in the older release.
-$funcs{'SDL_WinRTGetFSPathUNICODE'} = '2.0.3';
-$funcs{'SDL_WinRTGetFSPathUTF8'} = '2.0.3';
-$funcs{'SDL_WinRTRunApp'} = '2.0.3';
-
 if (not defined $wikipath) {
 if (not defined $wikipath) {
     foreach my $release (@releases) {
     foreach my $release (@releases) {
         foreach my $fn (sort keys %funcs) {
         foreach my $fn (sort keys %funcs) {

+ 2 - 2
cmake/test/CMakeLists.txt

@@ -29,7 +29,7 @@ add_feature_info("TEST_STATIC" TEST_STATIC "Test linking with static library")
 
 
 if(TEST_SHARED)
 if(TEST_SHARED)
     find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3)
     find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3)
-    if(EMSCRIPTEN OR (WIN32 AND NOT WINDOWS_STORE))
+    if(EMSCRIPTEN OR WIN32)
         find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3main)
         find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3main)
     endif()
     endif()
     add_executable(gui-shared WIN32 main_gui.c)
     add_executable(gui-shared WIN32 main_gui.c)
@@ -79,7 +79,7 @@ endif()
 
 
 if(TEST_STATIC)
 if(TEST_STATIC)
     find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-static)
     find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-static)
-    if(EMSCRIPTEN OR (WIN32 AND NOT WINDOWS_STORE))
+    if(EMSCRIPTEN OR WIN32)
         find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3main)
         find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3main)
     endif()
     endif()
     add_executable(gui-static WIN32 main_gui.c)
     add_executable(gui-static WIN32 main_gui.c)

+ 0 - 519
docs/README-winrt.md

@@ -1,519 +0,0 @@
-WinRT
-=====
-
-This port allows SDL applications to run on Microsoft's platforms that require
-use of "Windows Runtime", aka. "WinRT", APIs.  Microsoft may, in some cases,
-refer to them as either "Windows Store", or for Windows 10, "UWP" apps.
-
-In the past, SDL has supported Windows RT 8.x, Windows Phone, etc, but in
-modern times this port is focused on UWP apps, which run on Windows 10,
-and modern Xbox consoles.
-
-
-Requirements
-------------
-
-* Microsoft Visual C++ (aka Visual Studio) 2019.
-  - Free, "Community" or "Express" editions may be used, so long as they
-    include support for either "Windows Store" or "Windows Phone" apps.
-    "Express" versions marked as supporting "Windows Desktop" development
-    typically do not include support for creating WinRT apps, to note.
-    (The "Community" editions of Visual C++ do, however, support both
-    desktop/Win32 and WinRT development).
-* A valid Microsoft account - This requirement is not imposed by SDL, but
-  rather by Microsoft's Visual C++ toolchain.  This is required to launch or 
-  debug apps.
-
-
-Status
-------
-
-Here is a rough list of what works, and what doesn't:
-
-* What works:
-  * compilation via Visual C++ 2019.
-  * compile-time platform detection for SDL programs.  The C/C++ #define,
-    `__WINRT__`, will be set to 1 (by SDL) when compiling for WinRT.
-  * GPU-accelerated 2D rendering, via SDL_Renderer.
-  * OpenGL ES 2, via the ANGLE library (included separately from SDL)
-  * software rendering, via either SDL_Surface (optionally in conjunction with
-    SDL_GetWindowSurface() and SDL_UpdateWindowSurface()) or via the
-    SDL_Renderer APIs
-  * threads
-  * timers (via SDL_GetTicks(), SDL_AddTimer(), SDL_GetPerformanceCounter(),
-    SDL_GetPerformanceFrequency(), etc.)
-  * file I/O via SDL_RWops
-  * mouse input  (unsupported on Windows Phone)
-  * audio, via SDL's WASAPI backend (if you want to record, your app must 
-    have "Microphone" capabilities enabled in its manifest, and the user must 
-    not have blocked access. Otherwise, capture devices will fail to work,
-    presenting as a device disconnect shortly after opening it.)
-  * .DLL file loading.  Libraries *MUST* be packaged inside applications.  Loading
-    anything outside of the app is not supported.
-  * system path retrieval via SDL's filesystem APIs
-  * game controllers.  Support is provided via the SDL_Joystick and
-    SDL_GameController APIs, and is backed by Microsoft's XInput API.  Please
-    note, however, that Windows limits game-controller support in UWP apps to,
-    "Xbox compatible controllers" (many controllers that work in Win32 apps,
-    do not work in UWP, due to restrictions in UWP itself.) 
-  * multi-touch input
-  * app events.  SDL_APP_WILLENTER* and SDL_APP_DIDENTER* events get sent out as
-    appropriate.
-  * window events
-  * using Direct3D 11.x APIs outside of SDL.  Non-XAML / Direct3D-only apps can
-    choose to render content directly via Direct3D, using SDL to manage the
-    internal WinRT window, as well as input and audio.  (Use
-    SDL_GetWindowWMInfo() to get the WinRT 'CoreWindow', and pass it into
-    IDXGIFactory2::CreateSwapChainForCoreWindow() as appropriate.)
-
-* What partially works:
-  * keyboard input.  Most of WinRT's documented virtual keys are supported, as
-    well as many keys with documented hardware scancodes.  Converting
-    SDL_Scancodes to or from SDL_Keycodes may not work, due to missing APIs
-    (MapVirtualKey()) in Microsoft's Windows Store / UWP APIs.
-  * SDLmain.  WinRT uses a different signature for each app's main() function.
-    SDL-based apps that use this port must compile in SDL_winrt_main_NonXAML.cpp
-    (in `SDL\src\main\winrt\`) directly in order for their C-style main()
-    functions to be called.
-
-* What doesn't work:
-  * compilation with anything other than Visual C++
-  * programmatically-created custom cursors.  These don't appear to be supported
-    by WinRT.  Different OS-provided cursors can, however, be created via
-    SDL_CreateSystemCursor() (unsupported on Windows Phone)
-  * SDL_WarpMouseInWindow() or SDL_WarpMouseGlobal().  This are not currently
-    supported by WinRT itself.
-  * joysticks and game controllers that either are not supported by
-    Microsoft's XInput API, or are not supported within UWP apps (many
-    controllers that work in Win32, do not work in UWP, due to restrictions in
-    UWP itself).
-  * turning off VSync when rendering on Windows Phone.  Attempts to turn VSync
-    off on Windows Phone result either in Direct3D not drawing anything, or it
-    forcing VSync back on.  As such, SDL_RENDERER_PRESENTVSYNC will always get
-    turned-on on Windows Phone.  This limitation is not present in non-Phone
-    WinRT (such as Windows 8.x), where turning off VSync appears to work.
-  * probably anything else that's not listed as supported
-
-
-
-Upgrade Notes
--------------
-
-#### SDL_GetPrefPath() usage when upgrading WinRT apps from SDL 2.0.3
-
-SDL 2.0.4 fixes two bugs found in the WinRT version of SDL_GetPrefPath().
-The fixes may affect older, SDL 2.0.3-based apps' save data.  Please note
-that these changes only apply to SDL-based WinRT apps, and not to apps for
-any other platform.
-
-1. SDL_GetPrefPath() would return an invalid path, one in which the path's
-   directory had not been created.  Attempts to create files there
-   (via fopen(), for example), would fail, unless that directory was
-   explicitly created beforehand.
-
-2. SDL_GetPrefPath(), for non-WinPhone-based apps, would return a path inside
-   a WinRT 'Roaming' folder, the contents of which get automatically
-   synchronized across multiple devices.  This process can occur while an
-   application runs, and can cause existing save-data to be overwritten
-   at unexpected times, with data from other devices.  (Windows Phone apps
-   written with SDL 2.0.3 did not utilize a Roaming folder, due to API
-   restrictions in Windows Phone 8.0).
-
-
-SDL_GetPrefPath(), starting with SDL 2.0.4, addresses these by:
-
-1. making sure that SDL_GetPrefPath() returns a directory in which data
-   can be written to immediately, without first needing to create directories.
-
-2. basing SDL_GetPrefPath() off of a different, non-Roaming folder, the
-   contents of which do not automatically get synchronized across devices
-   (and which require less work to use safely, in terms of data integrity).
-
-Apps that wish to get their Roaming folder's path can do so either by using
-SDL_WinRTGetFSPathUTF8(), SDL_WinRTGetFSPathUNICODE() (which returns a
-UCS-2/wide-char string), or directly through the WinRT class,
-Windows.Storage.ApplicationData.
-
-
-
-Setup, High-Level Steps
------------------------
-
-The steps for setting up a project for an SDL/WinRT app looks like the
-following, at a high-level:
-
-1. create a new Visual C++ project using Microsoft's template for a,
-   "Direct3D App".
-2. remove most of the files from the project.
-3. make your app's project directly reference SDL/WinRT's own Visual C++
-   project file, via use of Visual C++'s "References" dialog.  This will setup
-   the linker, and will copy SDL's .dll files to your app's final output.
-4. adjust your app's build settings, at minimum, telling it where to find SDL's
-   header files.
-5. add files that contains a WinRT-appropriate main function, along with some
-   data to make sure mouse-cursor-hiding (via SDL_ShowCursor(SDL_DISABLE) calls)
-   work properly.
-6. add SDL-specific app code.
-7. build and run your app.
-
-
-Setup, Detailed Steps
----------------------
-
-### 1. Create a new project ###
-
-Create a new project using one of Visual C++'s templates for a plain, non-XAML,
-"Direct3D App" (XAML support for SDL/WinRT is not yet ready for use).  If you
-don't see one of these templates, in Visual C++'s 'New Project' dialog, try
-using the textbox titled, 'Search Installed Templates' to look for one.
-
-
-### 2. Remove unneeded files from the project ###
-
-In the new project, delete any file that has one of the following extensions:
-
-- .cpp
-- .h
-- .hlsl
-
-When you are done, you should be left with a few files, each of which will be a
-necessary part of your app's project.  These files will consist of:
-
-- an .appxmanifest file, which contains metadata on your WinRT app.  This is
-  similar to an Info.plist file on iOS, or an AndroidManifest.xml on Android.
-- a few .png files, one of which is a splash screen (displayed when your app
-  launches), others are app icons.
-- a .pfx file, used for code signing purposes.
-
-
-### 3. Add references to SDL's project files ###
-
-SDL/WinRT can be built in multiple variations, spanning across three different
-CPU architectures (x86, x64, and ARM) and two different configurations
-(Debug and Release).  WinRT and Visual C++ do not currently provide a means
-for combining multiple variations of one library into a single file.
-Furthermore, it does not provide an easy means for copying pre-built .dll files
-into your app's final output (via Post-Build steps, for example).  It does,
-however, provide a system whereby an app can reference the MSVC projects of
-libraries such that, when the app is built:
-
-1. each library gets built for the appropriate CPU architecture(s) and WinRT
-   platform(s).
-2. each library's output, such as .dll files, get copied to the app's build 
-   output.
-
-To set this up for SDL/WinRT, you'll need to run through the following steps:
-
-1. open up the Solution Explorer inside Visual C++ (under the "View" menu, then
-   "Solution Explorer")
-2. right click on your app's solution.
-3. navigate to "Add", then to "Existing Project..."
-4. find SDL/WinRT's Visual C++ project file and open it, in the `VisualC-WinRT`
-   directory.
-5. once the project has been added, right-click on your app's project and
-   select, "References..."
-6. click on the button titled, "Add New Reference..."
-7. check the box next to SDL
-8. click OK to close the dialog
-9. SDL will now show up in the list of references.  Click OK to close that
-   dialog.
-
-Your project is now linked to SDL's project, insofar that when the app is
-built, SDL will be built as well, with its build output getting included with
-your app.
-
-
-### 4. Adjust Your App's Build Settings ###
-
-Some build settings need to be changed in your app's project.  This guide will
-outline the following:
-
-- making sure that the compiler knows where to find SDL's header files
-- **Optional for C++, but NECESSARY for compiling C code:** telling the
-  compiler not to use Microsoft's C++ extensions for WinRT development.
-- **Optional:** telling the compiler not generate errors due to missing
-  precompiled header files.
-
-To change these settings:
-
-1. right-click on the project
-2. choose "Properties"
-3. in the drop-down box next to "Configuration", choose, "All Configurations"
-4. in the drop-down box next to "Platform", choose, "All Platforms"
-5. in the left-hand list, expand the "C/C++" section
-6. select "General"
-7. edit the "Additional Include Directories" setting, and add a path to SDL's
-   "include" directory
-8. **Optional: to enable compilation of C code:** change the setting for
-   "Consume Windows Runtime Extension" from "Yes (/ZW)" to "No".  If you're 
-   working with a completely C++ based project, this step can usually be 
-   omitted.
-9. **Optional: to disable precompiled headers (which can produce 
-   'stdafx.h'-related build errors, if setup incorrectly:** in the left-hand 
-   list, select "Precompiled Headers", then change the setting for "Precompiled 
-   Header" from "Use (/Yu)" to "Not Using Precompiled Headers".
-10. close the dialog, saving settings, by clicking the "OK" button
-
-
-### 5. Add a WinRT-appropriate main function, and a blank-cursor image, to the app. ###
-
-A few files should be included directly in your app's MSVC project, specifically:
-1. a WinRT-appropriate main function (which is different than main() functions on
-   other platforms)
-2. a Win32-style cursor resource, used by SDL_ShowCursor() to hide the mouse cursor
-   (if and when the app needs to do so).  *If this cursor resource is not
-   included, mouse-position reporting may fail if and when the cursor is
-   hidden, due to possible bugs/design-oddities in Windows itself.*
-
-To include these files for C/C++ projects:
-
-1. right-click on your project (again, in Visual C++'s Solution Explorer), 
-   navigate to "Add", then choose "Existing Item...".
-2. navigate to the directory containing SDL's source code, then into its
-   subdirectory, 'src/main/winrt/'.  Select, then add, the following files:
-   - `SDL_winrt_main_NonXAML.cpp`
-   - `SDL3-WinRTResources.rc`
-   - `SDL3-WinRTResource_BlankCursor.cur`
-3. right-click on the file `SDL_winrt_main_NonXAML.cpp` (as listed in your
-   project), then click on "Properties...".
-4. in the drop-down box next to "Configuration", choose, "All Configurations"
-5. in the drop-down box next to "Platform", choose, "All Platforms"
-6. in the left-hand list, click on "C/C++"
-7. change the setting for "Consume Windows Runtime Extension" to "Yes (/ZW)".
-8. click the OK button.  This will close the dialog.
-
-**NOTE: C++/CX compilation is currently required in at least one file of your 
-app's project.  This is to make sure that Visual C++'s linker builds a 'Windows 
-Metadata' file (.winmd) for your app.  Not doing so can lead to build errors.**
-
-For non-C++ projects, you will need to call SDL_WinRTRunApp from your language's
-main function, and generate SDL3-WinRTResources.res manually by using `rc` via
-the Developer Command Prompt and including it as a <Win32Resource> within the
-first <PropertyGroup> block in your Visual Studio project file.
-
-### 6. Add app code and assets ###
-
-At this point, you can add in SDL-specific source code.  Be sure to include a 
-C-style main function (ie: `int main(int argc, char *argv[])`).  From there you 
-should be able to create a single `SDL_Window` (WinRT apps can only have one 
-window, at present), as well as an `SDL_Renderer`.  Direct3D will be used to 
-draw content.  Events are received via SDL's usual event functions 
-(`SDL_PollEvent`, etc.)  If you have a set of existing source files and assets, 
-you can start adding them to the project now.  If not, or if you would like to 
-make sure that you're setup correctly, some short and simple sample code is 
-provided below.
-
-
-#### 6.A. ... when creating a new app ####
-
-If you are creating a new app (rather than porting an existing SDL-based app), 
-or if you would just like a simple app to test SDL/WinRT with before trying to 
-get existing code working, some working SDL/WinRT code is provided below.  To 
-set this up:
-
-1. right click on your app's project
-2. select Add, then New Item.  An "Add New Item" dialog will show up.
-3. from the left-hand list, choose "Visual C++"
-4. from the middle/main list, choose "C++ File (.cpp)"
-5. near the bottom of the dialog, next to "Name:", type in a name for your 
-source file, such as, "main.cpp".
-6. click on the Add button.  This will close the dialog, add the new file to 
-your project, and open the file in Visual C++'s text editor.
-7. Copy and paste the following code into the new file, then save it.
-
-```c
-#include <SDL.h>
-    
-int main(int argc, char **argv)
-{
-    SDL_DisplayMode mode;
-    SDL_Window * window = NULL;
-    SDL_Renderer * renderer = NULL;
-    SDL_Event evt;
-    SDL_bool keep_going = SDL_TRUE;
-  
-    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
-        return 1;
-    } else if (SDL_GetCurrentDisplayMode(0, &mode) != 0) {
-        return 1;
-    } else if (SDL_CreateWindowAndRenderer(mode.w, mode.h, SDL_WINDOW_FULLSCREEN, &window, &renderer) != 0) {
-        return 1;
-    }
-    
-    while (keep_going) {
-        while (SDL_PollEvent(&evt)) {
-            if ((evt.type == SDL_KEYDOWN) && (evt.key.keysym.sym == SDLK_ESCAPE)) {
-                keep_going = SDL_FALSE;
-            } 
-        }
-    
-        SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
-        SDL_RenderClear(renderer);
-        SDL_RenderPresent(renderer);
-    }
-
-    SDL_Quit();
-    return 0;
-}
-```
-
-#### 6.B. Adding code and assets ####
-
-If you have existing code and assets that you'd like to add, you should be able 
-to add them now.  The process for adding a set of files is as such.
-
-1. right click on the app's project
-2. select Add, then click on "New Item..."
-3. open any source, header, or asset files as appropriate.  Support for C and 
-C++ is available.
-
-Do note that WinRT only supports a subset of the APIs that are available to 
-Win32-based apps.  Many portions of the Win32 API and the C runtime are not 
-available.
-
-A list of unsupported C APIs can be found at 
-<http://msdn.microsoft.com/en-us/library/windows/apps/jj606124.aspx>
-
-General information on using the C runtime in WinRT can be found at 
-<https://msdn.microsoft.com/en-us/library/hh972425.aspx>
-
-A list of supported Win32 APIs for WinRT apps can be found at 
-<http://msdn.microsoft.com/en-us/library/windows/apps/br205757.aspx>.  To note, 
-the list of supported Win32 APIs for Windows Phone 8.0 is different.  
-That list can be found at 
-<http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662956(v=vs.105).aspx>
-
-
-### 7. Build and run your app ###
-
-Your app project should now be setup, and you should be ready to build your app.  
-To run it on the local machine, open the Debug menu and choose "Start 
-Debugging".  This will build your app, then run your app full-screen.  To switch 
-out of your app, press the Windows key.  Alternatively, you can choose to run 
-your app in a window.  To do this, before building and running your app, find 
-the drop-down menu in Visual C++'s toolbar that says, "Local Machine".  Expand 
-this by clicking on the arrow on the right side of the list, then click on 
-Simulator.  Once you do that, any time you build and run the app, the app will 
-launch in window, rather than full-screen.
-
-
-#### 7.A. Running apps on older, ARM-based, "Windows RT" devices ####
-
-**These instructions do not include Windows Phone, despite Windows Phone
-typically running on ARM processors.**  They are specifically for devices
-that use the "Windows RT" operating system, which was a modified version of
-Windows 8.x that ran primarily on ARM-based tablet computers.
-
-To build and run the app on ARM-based, "Windows RT" devices, you'll need to:
-
-- install Microsoft's "Remote Debugger" on the device.  Visual C++ installs and 
-  debugs ARM-based apps via IP networks.
-- change a few options on the development machine, both to make sure it builds 
-  for ARM (rather than x86 or x64), and to make sure it knows how to find the 
-  Windows RT device (on the network).
-
-Microsoft's Remote Debugger can be found at 
-<https://msdn.microsoft.com/en-us/library/hh441469.aspx>.  Please note 
-that separate versions of this debugger exist for different versions of Visual 
-C++, one each for MSVC 2015, 2013, and 2012.
-
-To setup Visual C++ to launch your app on an ARM device:
-
-1. make sure the Remote Debugger is running on your ARM device, and that it's on 
-   the same IP network as your development machine.
-2. from Visual C++'s toolbar, find a drop-down menu that says, "Win32".  Click 
-   it, then change the value to "ARM".
-3. make sure Visual C++ knows the hostname or IP address of the ARM device.  To 
-   do this:
-    1. open the app project's properties
-    2. select "Debugging"
-    3. next to "Machine Name", enter the hostname or IP address of the ARM 
-       device
-    4. if, and only if, you've turned off authentication in the Remote Debugger,
-       then change the setting for "Require Authentication" to No
-    5. click "OK"
-4. build and run the app (from Visual C++).  The first time you do this, a 
-   prompt will show up on the ARM device, asking for a Microsoft Account.  You 
-   do, unfortunately, need to log in here, and will need to follow the 
-   subsequent registration steps in order to launch the app.  After you do so, 
-   if the app didn't already launch, try relaunching it again from within Visual 
-   C++.
-
-
-Troubleshooting
----------------
-
-#### Build fails with message, "error LNK2038: mismatch detected for 'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker'"
-
-Try adding the following to your linker flags.  In MSVC, this can be done by
-right-clicking on the app project, navigating to Configuration Properties ->
-Linker -> Command Line, then adding them to the Additional Options
-section.
-
-* For Release builds / MSVC-Configurations, add:
-
-    /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib
-
-* For Debug builds / MSVC-Configurations, add:
-
-    /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib
-
-
-#### Mouse-motion events fail to get sent, or SDL_GetMouseState() fails to return updated values
-
-This may be caused by a bug in Windows itself, whereby hiding the mouse
-cursor can cause mouse-position reporting to fail.
-
-SDL provides a workaround for this, but it requires that an app links to a
-set of Win32-style cursor image-resource files.  A copy of suitable resource
-files can be found in `src/main/winrt/`.  Adding them to an app's Visual C++
-project file should be sufficient to get the app to use them.
-
-
-#### SDL's Visual Studio project file fails to open, with message, "The system can't find the file specified."
-
-This can be caused for any one of a few reasons, which Visual Studio can
-report, but won't always do so in an up-front manner.
-
-To help determine why this error comes up:
-
-1. open a copy of Visual Studio without opening a project file.  This can be
-   accomplished via Windows' Start Menu, among other means.
-2. show Visual Studio's Output window.  This can be done by going to VS'
-   menu bar, then to View, and then to Output.
-3. try opening the SDL project file directly by going to VS' menu bar, then
-   to File, then to Open, then to Project/Solution.  When a File-Open dialog
-   appears, open the SDL project (such as the one in SDL's source code, in its
-   directory, VisualC-WinRT/UWP_VS2015/).
-4. after attempting to open SDL's Visual Studio project file, additional error
-   information will be output to the Output window.
-
-If Visual Studio reports (via its Output window) that the project:
-
-"could not be loaded because it's missing install components. To fix this launch Visual Studio setup with the following selections:
-Microsoft.VisualStudio.ComponentGroup.UWP.VC"
-
-... then you will need to re-launch Visual Studio's installer, and make sure that
-the workflow for "Universal Windows Platform development" is checked, and that its
-optional component, "C++ Universal Windows Platform tools" is also checked.  While
-you are there, if you are planning on targeting UWP / Windows 10, also make sure
-that you check the optional component, "Windows 10 SDK (10.0.10240.0)".  After
-making sure these items are checked as-appropriate, install them.
-
-Once you install these components, try re-launching Visual Studio, and re-opening
-the SDL project file.  If you still get the error dialog, try using the Output
-window, again, seeing what Visual Studio says about it.
-
-
-#### Game controllers / joysticks aren't working!
-
-Windows only permits certain game controllers and joysticks to work within
-WinRT / UWP apps.  Even if a game controller or joystick works in a Win32
-app, that device is not guaranteed to work inside a WinRT / UWP app.
-
-According to Microsoft, "Xbox compatible controllers" should work inside
-UWP apps, potentially with more working in the future.  This includes, but
-may not be limited to, Microsoft-made Xbox controllers and USB adapters.
-(Source: https://social.msdn.microsoft.com/Forums/en-US/9064838b-e8c3-4c18-8a83-19bf0dfe150d/xinput-fails-to-detect-game-controllers?forum=wpdevelop)
-
-

+ 0 - 1
docs/README.md

@@ -41,7 +41,6 @@ More documentation and FAQs are available online at [the wiki](http://wiki.libsd
 - [Touch](README-touch.md)
 - [Touch](README-touch.md)
 - [Versions](README-versions.md)
 - [Versions](README-versions.md)
 - [Windows](README-windows.md)
 - [Windows](README-windows.md)
-- [WinRT](README-winrt.md)
 - [PSVita](README-vita.md)
 - [PSVita](README-vita.md)
 - [Nokia N-Gage](README-ngage.md)
 - [Nokia N-Gage](README-ngage.md)
 
 

+ 0 - 2
include/SDL_config.h

@@ -31,8 +31,6 @@
 /* Add any platform that doesn't build using the configure system. */
 /* Add any platform that doesn't build using the configure system. */
 #if defined(__WIN32__)
 #if defined(__WIN32__)
 #include "SDL_config_windows.h"
 #include "SDL_config_windows.h"
-#elif defined(__WINRT__)
-#include "SDL_config_winrt.h"
 #elif defined(__WINGDK__)
 #elif defined(__WINGDK__)
 #include "SDL_config_wingdk.h"
 #include "SDL_config_wingdk.h"
 #elif defined(__XBOXONE__) || defined(__XBOXSERIES__)
 #elif defined(__XBOXONE__) || defined(__XBOXSERIES__)

+ 0 - 2
include/SDL_config.h.cmake

@@ -388,7 +388,6 @@
 #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
 #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@
 #cmakedefine SDL_VIDEO_DRIVER_OFFSCREEN @SDL_VIDEO_DRIVER_OFFSCREEN@
 #cmakedefine SDL_VIDEO_DRIVER_OFFSCREEN @SDL_VIDEO_DRIVER_OFFSCREEN@
 #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
 #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@
-#cmakedefine SDL_VIDEO_DRIVER_WINRT @SDL_VIDEO_DRIVER_WINRT@
 #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@
 #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@
 #cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
 #cmakedefine SDL_VIDEO_DRIVER_RPI @SDL_VIDEO_DRIVER_RPI@
 #cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
 #cmakedefine SDL_VIDEO_DRIVER_VIVANTE @SDL_VIDEO_DRIVER_VIVANTE@
@@ -460,7 +459,6 @@
 #cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@
 #cmakedefine SDL_POWER_ANDROID @SDL_POWER_ANDROID@
 #cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@
 #cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@
 #cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@
 #cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@
-#cmakedefine SDL_POWER_WINRT @SDL_POWER_WINRT@
 #cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@
 #cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@
 #cmakedefine SDL_POWER_UIKIT @SDL_POWER_UIKIT@
 #cmakedefine SDL_POWER_UIKIT @SDL_POWER_UIKIT@
 #cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@
 #cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@

+ 0 - 2
include/SDL_config_windows.h

@@ -240,9 +240,7 @@ typedef unsigned int uintptr_t;
 /* Enable various input drivers */
 /* Enable various input drivers */
 #define SDL_JOYSTICK_DINPUT 1
 #define SDL_JOYSTICK_DINPUT 1
 #define SDL_JOYSTICK_HIDAPI 1
 #define SDL_JOYSTICK_HIDAPI 1
-#ifndef __WINRT__
 #define SDL_JOYSTICK_RAWINPUT   1
 #define SDL_JOYSTICK_RAWINPUT   1
-#endif
 #define SDL_JOYSTICK_VIRTUAL    1
 #define SDL_JOYSTICK_VIRTUAL    1
 #ifdef HAVE_WINDOWS_GAMING_INPUT_H
 #ifdef HAVE_WINDOWS_GAMING_INPUT_H
 #define SDL_JOYSTICK_WGI    1
 #define SDL_JOYSTICK_WGI    1

+ 0 - 220
include/SDL_config_winrt.h

@@ -1,220 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef SDL_config_winrt_h_
-#define SDL_config_winrt_h_
-#define SDL_config_h_
-
-#include "SDL_platform.h"
-
-/* Make sure the Windows SDK's NTDDI_VERSION macro gets defined.  This is used
-   by SDL to determine which version of the Windows SDK is being used.
-*/
-#include <sdkddkver.h>
-
-/* Define possibly-undefined NTDDI values (used when compiling SDL against
-   older versions of the Windows SDK.
-*/
-#ifndef NTDDI_WINBLUE
-#define NTDDI_WINBLUE 0x06030000
-#endif
-#ifndef NTDDI_WIN10
-#define NTDDI_WIN10 0x0A000000
-#endif
-
-/* This is a set of defines to configure the SDL features */
-
-#ifdef _WIN64
-# define SIZEOF_VOIDP 8
-#else
-# define SIZEOF_VOIDP 4
-#endif
-
-#ifdef __clang__
-# define HAVE_GCC_ATOMICS 1
-#endif
-
-/* Useful headers */
-#define HAVE_DXGI_H 1
-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
-#define HAVE_XINPUT_H 1
-#endif
-
-#define HAVE_MMDEVICEAPI_H 1
-#define HAVE_AUDIOCLIENT_H 1
-#define HAVE_TPCSHRD_H 1
-
-#define HAVE_LIBC 1
-#define STDC_HEADERS 1
-#define HAVE_CTYPE_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_MATH_H 1
-#define HAVE_SIGNAL_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STDIO_H 1
-#define HAVE_STRING_H 1
-
-/* C library functions */
-#define HAVE_MALLOC 1
-#define HAVE_CALLOC 1
-#define HAVE_REALLOC 1
-#define HAVE_FREE 1
-#define HAVE_ALLOCA 1
-#define HAVE_QSORT 1
-#define HAVE_BSEARCH 1
-#define HAVE_ABS 1
-#define HAVE_MEMSET 1
-#define HAVE_MEMCPY 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MEMCMP 1
-#define HAVE_STRLEN 1
-#define HAVE__STRREV 1
-#define HAVE__STRUPR 1
-#define HAVE_STRCHR 1
-#define HAVE_STRRCHR 1
-#define HAVE_STRSTR 1
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-/* #undef HAVE_STRTOLL */
-/* #undef HAVE_STRTOULL */
-#define HAVE_STRTOD 1
-#define HAVE_ATOI 1
-#define HAVE_ATOF 1
-#define HAVE_STRCMP 1
-#define HAVE_STRNCMP 1
-#define HAVE__STRICMP 1
-#define HAVE__STRNICMP 1
-#define HAVE_VSNPRINTF 1
-/* TODO, WinRT: consider using ??_s versions of the following */
-/* #undef HAVE__STRLWR */
-/* #undef HAVE_ITOA */
-/* #undef HAVE__LTOA */
-/* #undef HAVE__ULTOA */
-/* #undef HAVE_SSCANF */
-#define HAVE_M_PI 1
-#define HAVE_ACOS   1
-#define HAVE_ACOSF  1
-#define HAVE_ASIN   1
-#define HAVE_ASINF  1
-#define HAVE_ATAN   1
-#define HAVE_ATANF  1
-#define HAVE_ATAN2  1
-#define HAVE_ATAN2F 1
-#define HAVE_CEIL   1
-#define HAVE_CEILF  1
-#define HAVE__COPYSIGN 1
-#define HAVE_COS    1
-#define HAVE_COSF   1
-#define HAVE_EXP    1
-#define HAVE_EXPF   1
-#define HAVE_FABS   1
-#define HAVE_FABSF  1
-#define HAVE_FLOOR  1
-#define HAVE_FLOORF 1
-#define HAVE_FMOD   1
-#define HAVE_FMODF  1
-#define HAVE_LOG    1
-#define HAVE_LOGF   1
-#define HAVE_LOG10  1
-#define HAVE_LOG10F 1
-#define HAVE_LROUND 1
-#define HAVE_LROUNDF 1
-#define HAVE_POW    1
-#define HAVE_POWF   1
-#define HAVE_ROUND 1
-#define HAVE_ROUNDF 1
-#define HAVE__SCALB 1
-#define HAVE_SIN    1
-#define HAVE_SINF   1
-#define HAVE_SQRT   1
-#define HAVE_SQRTF  1
-#define HAVE_TAN    1
-#define HAVE_TANF   1
-#define HAVE_TRUNC  1
-#define HAVE_TRUNCF 1
-#define HAVE__FSEEKI64 1
-
-#define HAVE_ROAPI_H  1
-
-/* Enable various audio drivers */
-#define SDL_AUDIO_DRIVER_WASAPI 1
-#define SDL_AUDIO_DRIVER_DISK   1
-#define SDL_AUDIO_DRIVER_DUMMY  1
-
-/* Enable various input drivers */
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-#define SDL_JOYSTICK_DISABLED 1
-#define SDL_HAPTIC_DISABLED 1
-#else
-#define SDL_JOYSTICK_VIRTUAL    1
-#if (NTDDI_VERSION >= NTDDI_WIN10)
-#define SDL_JOYSTICK_WGI    1
-#define SDL_HAPTIC_DISABLED 1
-#else
-#define SDL_JOYSTICK_XINPUT 1
-#define SDL_HAPTIC_XINPUT   1
-#endif /* WIN10 */
-#endif
-
-/* WinRT doesn't have HIDAPI available */
-#define SDL_HIDAPI_DISABLED    1
-
-/* Enable the dummy sensor driver */
-#define SDL_SENSOR_DUMMY  1
-
-/* Enable various shared object loading systems */
-#define SDL_LOADSO_WINDOWS  1
-
-/* Enable various threading systems */
-#if (NTDDI_VERSION >= NTDDI_WINBLUE)
-#define SDL_THREAD_GENERIC_COND_SUFFIX 1
-#define SDL_THREAD_WINDOWS  1
-#else
-/* WinRT on Windows 8.0 and Windows Phone 8.0 don't support CreateThread() */
-#define SDL_THREAD_STDCPP   1
-#endif
-
-/* Enable various timer systems */
-#define SDL_TIMER_WINDOWS   1
-
-/* Enable various video drivers */
-#define SDL_VIDEO_DRIVER_WINRT  1
-#define SDL_VIDEO_DRIVER_DUMMY  1
-
-/* Enable OpenGL ES 2.0 (via a modified ANGLE library) */
-#define SDL_VIDEO_OPENGL_ES2 1
-#define SDL_VIDEO_OPENGL_EGL 1
-
-/* Enable appropriate renderer(s) */
-#define SDL_VIDEO_RENDER_D3D11  1
-
-/* Disable D3D12 as it's not implemented for WinRT */
-#define SDL_VIDEO_RENDER_D3D12  0
-
-#if SDL_VIDEO_OPENGL_ES2
-#define SDL_VIDEO_RENDER_OGL_ES2 1
-#endif
-
-/* Enable system power support */
-#define SDL_POWER_WINRT 1
-
-#endif /* SDL_config_winrt_h_ */

+ 1 - 1
include/SDL_cpuinfo.h

@@ -79,7 +79,7 @@ _m_prefetch(void *__P)
 #if !defined(SDL_DISABLE_ARM_NEON_H)
 #if !defined(SDL_DISABLE_ARM_NEON_H)
 #  if defined(__ARM_NEON)
 #  if defined(__ARM_NEON)
 #    include <arm_neon.h>
 #    include <arm_neon.h>
-#  elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__)
+#  elif defined(__WINDOWS__) || defined(__GDK__)
 /* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
 /* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */
 #    if defined(_M_ARM)
 #    if defined(_M_ARM)
 #      include <armintr.h>
 #      include <armintr.h>

+ 0 - 28
include/SDL_main.h

@@ -39,18 +39,6 @@
  */
  */
 #define SDL_MAIN_AVAILABLE
 #define SDL_MAIN_AVAILABLE
 
 
-#elif defined(__WINRT__)
-/* On WinRT, SDL provides a main function that initializes CoreApplication,
-   creating an instance of IFrameworkView in the process.
-
-   Please note that #include'ing SDL_main.h is not enough to get a main()
-   function working.  In non-XAML apps, the file,
-   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled
-   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be
-   called, with a pointer to the Direct3D-hosted XAML control passed in.
-*/
-#define SDL_MAIN_NEEDED
-
 #elif defined(__GDK__)
 #elif defined(__GDK__)
 /* On GDK, SDL provides a main function that initializes the game runtime.
 /* On GDK, SDL provides a main function that initializes the game runtime.
 
 
@@ -208,22 +196,6 @@ extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
 #endif /* defined(__WIN32__) || defined(__GDK__) */
 #endif /* defined(__WIN32__) || defined(__GDK__) */
 
 
 
 
-#ifdef __WINRT__
-
-/**
- * Initialize and launch an SDL/WinRT application.
- *
- * \param mainFunction the SDL app's C-style main(), an SDL_main_func
- * \param reserved reserved for future use; should be NULL
- * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
- *          more information on the failure.
- *
- * \since This function is available since SDL 2.0.3.
- */
-extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);
-
-#endif /* __WINRT__ */
-
 #if defined(__IPHONEOS__)
 #if defined(__IPHONEOS__)
 
 
 /**
 /**

+ 1 - 2
include/SDL_platform.h

@@ -167,8 +167,7 @@
 #endif /* HAVE_WINAPIFAMILY_H */
 #endif /* HAVE_WINAPIFAMILY_H */
 
 
 #if WINAPI_FAMILY_WINRT
 #if WINAPI_FAMILY_WINRT
-#undef __WINRT__
-#define __WINRT__ 1
+#error WinRT no longer supported.
 #elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */
 #elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */
 #undef __WINGDK__
 #undef __WINGDK__
 #define __WINGDK__ 1
 #define __WINGDK__ 1

+ 0 - 103
include/SDL_system.h

@@ -466,109 +466,6 @@ extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param);
 
 
 #endif /* __ANDROID__ */
 #endif /* __ANDROID__ */
 
 
-/* Platform specific functions for WinRT */
-#ifdef __WINRT__
-
-/**
- *  \brief WinRT / Windows Phone path types
- */
-typedef enum
-{
-    /** \brief The installed app's root directory.
-        Files here are likely to be read-only. */
-    SDL_WINRT_PATH_INSTALLED_LOCATION,
-
-    /** \brief The app's local data store.  Files may be written here */
-    SDL_WINRT_PATH_LOCAL_FOLDER,
-
-    /** \brief The app's roaming data store.  Unsupported on Windows Phone.
-        Files written here may be copied to other machines via a network
-        connection.
-    */
-    SDL_WINRT_PATH_ROAMING_FOLDER,
-
-    /** \brief The app's temporary data store.  Unsupported on Windows Phone.
-        Files written here may be deleted at any time. */
-    SDL_WINRT_PATH_TEMP_FOLDER
-} SDL_WinRT_Path;
-
-
-/**
- *  \brief WinRT Device Family
- */
-typedef enum
-{
-    /** \brief Unknown family  */
-    SDL_WINRT_DEVICEFAMILY_UNKNOWN,
-
-    /** \brief Desktop family*/
-    SDL_WINRT_DEVICEFAMILY_DESKTOP,
-
-    /** \brief Mobile family (for example smartphone) */
-    SDL_WINRT_DEVICEFAMILY_MOBILE,
-
-    /** \brief XBox family */
-    SDL_WINRT_DEVICEFAMILY_XBOX,
-} SDL_WinRT_DeviceFamily;
-
-
-/**
- * Retrieve a WinRT defined path on the local file system.
- *
- * Not all paths are available on all versions of Windows. This is especially
- * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
- * for more information on which path types are supported where.
- *
- * Documentation on most app-specific path types on WinRT can be found on
- * MSDN, at the URL:
- *
- * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
- * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if
- *          the path is not available for any reason; call SDL_GetError() for
- *          more information.
- *
- * \since This function is available since SDL 2.0.3.
- *
- * \sa SDL_WinRTGetFSPathUTF8
- */
-extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
-
-/**
- * Retrieve a WinRT defined path on the local file system.
- *
- * Not all paths are available on all versions of Windows. This is especially
- * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
- * for more information on which path types are supported where.
- *
- * Documentation on most app-specific path types on WinRT can be found on
- * MSDN, at the URL:
- *
- * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
- *
- * \param pathType the type of path to retrieve, one of SDL_WinRT_Path
- * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if
- *          the path is not available for any reason; call SDL_GetError() for
- *          more information.
- *
- * \since This function is available since SDL 2.0.3.
- *
- * \sa SDL_WinRTGetFSPathUNICODE
- */
-extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
-
-/**
- * Detects the device family of WinRT platform at runtime.
- *
- * \returns a value from the SDL_WinRT_DeviceFamily enum.
- *
- * \since This function is available since SDL 2.0.8.
- */
-extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
-
-#endif /* __WINRT__ */
-
 /**
 /**
  * Query if the current device is a tablet.
  * Query if the current device is a tablet.
  *
  *

+ 0 - 11
include/SDL_syswm.h

@@ -55,10 +55,6 @@ struct SDL_SysWMinfo;
 #include <windows.h>
 #include <windows.h>
 #endif
 #endif
 
 
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-#include <Inspectable.h>
-#endif
-
 /* This is the structure for custom window manager events */
 /* This is the structure for custom window manager events */
 #if defined(SDL_VIDEO_DRIVER_X11)
 #if defined(SDL_VIDEO_DRIVER_X11)
 #if defined(__APPLE__) && defined(__MACH__)
 #if defined(__APPLE__) && defined(__MACH__)
@@ -132,7 +128,6 @@ typedef enum
     SDL_SYSWM_COCOA,
     SDL_SYSWM_COCOA,
     SDL_SYSWM_UIKIT,
     SDL_SYSWM_UIKIT,
     SDL_SYSWM_WAYLAND,
     SDL_SYSWM_WAYLAND,
-    SDL_SYSWM_WINRT,
     SDL_SYSWM_ANDROID,
     SDL_SYSWM_ANDROID,
     SDL_SYSWM_VIVANTE,
     SDL_SYSWM_VIVANTE,
     SDL_SYSWM_HAIKU,
     SDL_SYSWM_HAIKU,
@@ -211,12 +206,6 @@ struct SDL_SysWMinfo
             HINSTANCE hinstance;        /**< The instance handle */
             HINSTANCE hinstance;        /**< The instance handle */
         } win;
         } win;
 #endif
 #endif
-#if defined(SDL_VIDEO_DRIVER_WINRT)
-        struct
-        {
-            IInspectable * window;      /**< The WinRT CoreWindow */
-        } winrt;
-#endif
 #if defined(SDL_VIDEO_DRIVER_X11)
 #if defined(SDL_VIDEO_DRIVER_X11)
         struct
         struct
         {
         {

+ 2 - 2
include/begin_code.h

@@ -51,7 +51,7 @@
 
 
 /* Some compilers use a special export keyword */
 /* Some compilers use a special export keyword */
 #ifndef DECLSPEC
 #ifndef DECLSPEC
-# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__)
+# if defined(__WIN32__) || defined(__CYGWIN__) || defined(__GDK__)
 #  ifdef DLL_EXPORT
 #  ifdef DLL_EXPORT
 #   define DECLSPEC __declspec(dllexport)
 #   define DECLSPEC __declspec(dllexport)
 #  else
 #  else
@@ -68,7 +68,7 @@
 
 
 /* By default SDL uses the C calling convention */
 /* By default SDL uses the C calling convention */
 #ifndef SDLCALL
 #ifndef SDLCALL
-#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__)
+#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__GNUC__)
 #define SDLCALL __cdecl
 #define SDLCALL __cdecl
 #else
 #else
 #define SDLCALL
 #define SDLCALL

+ 1 - 3
src/SDL.c

@@ -22,7 +22,7 @@
 
 
 #if defined(__WIN32__) || defined(__GDK__)
 #if defined(__WIN32__) || defined(__GDK__)
 #include "core/windows/SDL_windows.h"
 #include "core/windows/SDL_windows.h"
-#elif !defined(__WINRT__)
+#else
 #include <unistd.h> /* _exit(), etc. */
 #include <unistd.h> /* _exit(), etc. */
 #endif
 #endif
 
 
@@ -575,8 +575,6 @@ SDL_GetPlatform(void)
     return "Solaris";
     return "Solaris";
 #elif __WIN32__
 #elif __WIN32__
     return "Windows";
     return "Windows";
-#elif __WINRT__
-    return "WinRT";
 #elif __WINGDK__
 #elif __WINGDK__
     return "WinGDK";
     return "WinGDK";
 #elif __XBOXONE__
 #elif __XBOXONE__

+ 7 - 7
src/SDL_log.c

@@ -20,7 +20,7 @@
 */
 */
 #include "./SDL_internal.h"
 #include "./SDL_internal.h"
 
 
-#if defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
 #include "core/windows/SDL_windows.h"
 #include "core/windows/SDL_windows.h"
 #endif
 #endif
 
 
@@ -366,7 +366,7 @@ SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list
     }
     }
 }
 }
 
 
-#if defined(__WIN32__) && !defined(HAVE_STDIO_H) && !defined(__WINRT__) && !defined(__GDK__)
+#if defined(__WIN32__) && !defined(HAVE_STDIO_H) && !defined(__GDK__)
 /* Flag tracking the attachment of the console: 0=unattached, 1=attached to a console, 2=attached to a file, -1=error */
 /* Flag tracking the attachment of the console: 0=unattached, 1=attached to a console, 2=attached to a file, -1=error */
 static int consoleAttached = 0;
 static int consoleAttached = 0;
 
 
@@ -378,7 +378,7 @@ static void SDLCALL
 SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
 SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
               const char *message)
               const char *message)
 {
 {
-#if defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
     /* Way too many allocations here, urgh */
     /* Way too many allocations here, urgh */
     /* Note: One can't call SDL_SetError here, since that function itself logs. */
     /* Note: One can't call SDL_SetError here, since that function itself logs. */
     {
     {
@@ -387,7 +387,7 @@ SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
         LPTSTR tstr;
         LPTSTR tstr;
         SDL_bool isstack;
         SDL_bool isstack;
 
 
-#if !defined(HAVE_STDIO_H) && !defined(__WINRT__) && !defined(__GDK__)
+#if !defined(HAVE_STDIO_H) && !defined(__GDK__)
         BOOL attachResult;
         BOOL attachResult;
         DWORD attachError;
         DWORD attachError;
         DWORD charsWritten;
         DWORD charsWritten;
@@ -426,7 +426,7 @@ SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
                         }
                         }
                 }
                 }
         }
         }
-#endif /* !defined(HAVE_STDIO_H) && !defined(__WINRT__) && !defined(__GDK__) */
+#endif /* !defined(HAVE_STDIO_H) && !defined(__GDK__) */
 
 
         length = SDL_strlen(SDL_priority_prefixes[priority]) + 2 + SDL_strlen(message) + 1 + 1 + 1;
         length = SDL_strlen(SDL_priority_prefixes[priority]) + 2 + SDL_strlen(message) + 1 + 1 + 1;
         output = SDL_small_alloc(char, length, &isstack);
         output = SDL_small_alloc(char, length, &isstack);
@@ -436,7 +436,7 @@ SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
         /* Output to debugger */
         /* Output to debugger */
         OutputDebugString(tstr);
         OutputDebugString(tstr);
        
        
-#if !defined(HAVE_STDIO_H) && !defined(__WINRT__) && !defined(__GDK__)
+#if !defined(HAVE_STDIO_H) && !defined(__GDK__)
         /* Screen output to stderr, if console was attached. */
         /* Screen output to stderr, if console was attached. */
         if (consoleAttached == 1) {
         if (consoleAttached == 1) {
                 if (!WriteConsole(stderrHandle, tstr, (DWORD) SDL_tcslen(tstr), &charsWritten, NULL)) {
                 if (!WriteConsole(stderrHandle, tstr, (DWORD) SDL_tcslen(tstr), &charsWritten, NULL)) {
@@ -451,7 +451,7 @@ SDL_LogOutput(void *userdata, int category, SDL_LogPriority priority,
                 OutputDebugString(TEXT("Error calling WriteFile\r\n"));
                 OutputDebugString(TEXT("Error calling WriteFile\r\n"));
             }
             }
         }
         }
-#endif /* !defined(HAVE_STDIO_H) && !defined(__WINRT__) && !defined(__GDK__) */
+#endif /* !defined(HAVE_STDIO_H) && !defined(__GDK__) */
 
 
         SDL_free(tstr);
         SDL_free(tstr);
         SDL_small_free(output, isstack);
         SDL_small_free(output, isstack);

+ 1 - 1
src/atomic/SDL_spinlock.c

@@ -20,7 +20,7 @@
 */
 */
 #include "../SDL_internal.h"
 #include "../SDL_internal.h"
 
 
-#if defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
 #include "../core/windows/SDL_windows.h"
 #include "../core/windows/SDL_windows.h"
 #endif
 #endif
 
 

+ 1 - 1
src/audio/wasapi/SDL_wasapi.c

@@ -419,7 +419,7 @@ WASAPI_PrepDevice(_THIS, const SDL_bool updatestream)
 
 
     SDL_assert(client != NULL);
     SDL_assert(client != NULL);
 
 
-#if defined(__WINRT__) || defined(__GDK__) /* CreateEventEx() arrived in Vista, so we need an #ifdef for XP. */
+#if defined(__GDK__) /* CreateEventEx() arrived in Vista, so we need an #ifdef for XP. */
     this->hidden->event = CreateEventEx(NULL, NULL, 0, EVENT_ALL_ACCESS);
     this->hidden->event = CreateEventEx(NULL, NULL, 0, EVENT_ALL_ACCESS);
 #else
 #else
     this->hidden->event = CreateEventW(NULL, 0, 0, NULL);
     this->hidden->event = CreateEventW(NULL, 0, 0, NULL);

+ 2 - 2
src/audio/wasapi/SDL_wasapi_win32.c

@@ -26,7 +26,7 @@
    The code in SDL_wasapi.c is used by both standard Windows and WinRT builds
    The code in SDL_wasapi.c is used by both standard Windows and WinRT builds
    to deal with audio and calls into these functions. */
    to deal with audio and calls into these functions. */
 
 
-#if SDL_AUDIO_DRIVER_WASAPI && !defined(__WINRT__)
+#if SDL_AUDIO_DRIVER_WASAPI
 
 
 #include "../../core/windows/SDL_windows.h"
 #include "../../core/windows/SDL_windows.h"
 #include "../../core/windows/SDL_immdevice.h"
 #include "../../core/windows/SDL_immdevice.h"
@@ -156,7 +156,7 @@ WASAPI_PlatformDeleteActivationHandler(void *handler)
     SDL_assert(!"This function should have only been called on WinRT.");
     SDL_assert(!"This function should have only been called on WinRT.");
 }
 }
 
 
-#endif  /* SDL_AUDIO_DRIVER_WASAPI && !defined(__WINRT__) */
+#endif  /* SDL_AUDIO_DRIVER_WASAPI */
 
 
 /* vi: set ts=4 sw=4 expandtab: */
 /* vi: set ts=4 sw=4 expandtab: */
 
 

+ 0 - 447
src/audio/wasapi/SDL_wasapi_winrt.cpp

@@ -1,447 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-// This is C++/CX code that the WinRT port uses to talk to WASAPI-related
-//  system APIs. The C implementation of these functions, for non-WinRT apps,
-//  is in SDL_wasapi_win32.c. The code in SDL_wasapi.c is used by both standard
-//  Windows and WinRT builds to deal with audio and calls into these functions.
-
-#if SDL_AUDIO_DRIVER_WASAPI && defined(__WINRT__)
-
-#include <Windows.h>
-#include <windows.ui.core.h>
-#include <windows.devices.enumeration.h>
-#include <windows.media.devices.h>
-#include <wrl/implements.h>
-#include <collection.h>
-
-extern "C" {
-#include "../../core/windows/SDL_windows.h"
-#include "SDL_audio.h"
-#include "SDL_timer.h"
-#include "../SDL_audio_c.h"
-#include "../SDL_sysaudio.h"
-}
-
-#define COBJMACROS
-#include <mmdeviceapi.h>
-#include <audioclient.h>
-
-#include "SDL_wasapi.h"
-
-using namespace Windows::Devices::Enumeration;
-using namespace Windows::Media::Devices;
-using namespace Windows::Foundation;
-using namespace Microsoft::WRL;
-
-static Platform::String^ SDL_PKEY_AudioEngine_DeviceFormat = L"{f19f064d-082c-4e27-bc73-6882a1bb8e4c} 0";
-
-static void WASAPI_AddDevice(const SDL_bool iscapture, const char *devname, WAVEFORMATEXTENSIBLE *fmt, LPCWSTR devid);
-static void WASAPI_RemoveDevice(const SDL_bool iscapture, LPCWSTR devid);
-extern "C" {
-    SDL_atomic_t SDL_IMMDevice_DefaultPlaybackGeneration;
-    SDL_atomic_t SDL_IMMDevice_DefaultCaptureGeneration;
-}
-
-/* This is a list of device id strings we have inflight, so we have consistent pointers to the same device. */
-typedef struct DevIdList
-{
-    WCHAR *str;
-    struct DevIdList *next;
-} DevIdList;
-
-static DevIdList *deviceid_list = NULL;
-
-class SDL_WasapiDeviceEventHandler
-{
-public:
-    SDL_WasapiDeviceEventHandler(const SDL_bool _iscapture);
-    ~SDL_WasapiDeviceEventHandler();
-    void OnDeviceAdded(DeviceWatcher^ sender, DeviceInformation^ args);
-    void OnDeviceRemoved(DeviceWatcher^ sender, DeviceInformationUpdate^ args);
-    void OnDeviceUpdated(DeviceWatcher^ sender, DeviceInformationUpdate^ args);
-    void OnEnumerationCompleted(DeviceWatcher^ sender, Platform::Object^ args);
-    void OnDefaultRenderDeviceChanged(Platform::Object^ sender, DefaultAudioRenderDeviceChangedEventArgs^ args);
-    void OnDefaultCaptureDeviceChanged(Platform::Object^ sender, DefaultAudioCaptureDeviceChangedEventArgs^ args);
-    SDL_semaphore* completed;
-
-private:
-    const SDL_bool iscapture;
-    DeviceWatcher^ watcher;
-    Windows::Foundation::EventRegistrationToken added_handler;
-    Windows::Foundation::EventRegistrationToken removed_handler;
-    Windows::Foundation::EventRegistrationToken updated_handler;
-    Windows::Foundation::EventRegistrationToken completed_handler;
-    Windows::Foundation::EventRegistrationToken default_changed_handler;
-};
-
-SDL_WasapiDeviceEventHandler::SDL_WasapiDeviceEventHandler(const SDL_bool _iscapture)
-    : iscapture(_iscapture)
-    , completed(SDL_CreateSemaphore(0))
-{
-    if (!completed)
-        return;  // uhoh.
-
-    Platform::String^ selector = _iscapture ? MediaDevice::GetAudioCaptureSelector() :
-                                              MediaDevice::GetAudioRenderSelector();
-    Platform::Collections::Vector<Platform::String^> properties;
-    properties.Append(SDL_PKEY_AudioEngine_DeviceFormat);
-    watcher = DeviceInformation::CreateWatcher(selector, properties.GetView());
-    if (!watcher)
-        return;  // uhoh.
-
-    // !!! FIXME: this doesn't need a lambda here, I think, if I make SDL_WasapiDeviceEventHandler a proper C++/CX class. --ryan.
-    added_handler = watcher->Added += ref new TypedEventHandler<DeviceWatcher^, DeviceInformation^>([this](DeviceWatcher^ sender, DeviceInformation^ args) { OnDeviceAdded(sender, args); } );
-    removed_handler = watcher->Removed += ref new TypedEventHandler<DeviceWatcher^, DeviceInformationUpdate^>([this](DeviceWatcher^ sender, DeviceInformationUpdate^ args) { OnDeviceRemoved(sender, args); } );
-    updated_handler = watcher->Updated += ref new TypedEventHandler<DeviceWatcher^, DeviceInformationUpdate^>([this](DeviceWatcher^ sender, DeviceInformationUpdate^ args) { OnDeviceUpdated(sender, args); } );
-    completed_handler = watcher->EnumerationCompleted += ref new TypedEventHandler<DeviceWatcher^, Platform::Object^>([this](DeviceWatcher^ sender, Platform::Object^ args) { OnEnumerationCompleted(sender, args); } );
-    if (iscapture) {
-        default_changed_handler = MediaDevice::DefaultAudioCaptureDeviceChanged += ref new TypedEventHandler<Platform::Object^, DefaultAudioCaptureDeviceChangedEventArgs^>([this](Platform::Object^ sender, DefaultAudioCaptureDeviceChangedEventArgs^ args) { OnDefaultCaptureDeviceChanged(sender, args); } );
-    } else {
-        default_changed_handler = MediaDevice::DefaultAudioRenderDeviceChanged += ref new TypedEventHandler<Platform::Object^, DefaultAudioRenderDeviceChangedEventArgs^>([this](Platform::Object^ sender, DefaultAudioRenderDeviceChangedEventArgs^ args) { OnDefaultRenderDeviceChanged(sender, args); } );
-    }
-    watcher->Start();
-}
-
-SDL_WasapiDeviceEventHandler::~SDL_WasapiDeviceEventHandler()
-{
-    if (watcher) {
-        watcher->Added -= added_handler;
-        watcher->Removed -= removed_handler;
-        watcher->Updated -= updated_handler;
-        watcher->EnumerationCompleted -= completed_handler;
-        watcher->Stop();
-        watcher = nullptr;
-    }
-    if (completed) {
-        SDL_DestroySemaphore(completed);
-        completed = nullptr;
-    }
-
-    if (iscapture) {
-        MediaDevice::DefaultAudioCaptureDeviceChanged -= default_changed_handler;
-    } else {
-        MediaDevice::DefaultAudioRenderDeviceChanged -= default_changed_handler;
-    }
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnDeviceAdded(DeviceWatcher^ sender, DeviceInformation^ info)
-{
-    SDL_assert(sender == this->watcher);
-    char *utf8dev = WIN_StringToUTF8(info->Name->Data());
-    if (utf8dev) {
-        WAVEFORMATEXTENSIBLE fmt;
-        Platform::Object^ obj = info->Properties->Lookup(SDL_PKEY_AudioEngine_DeviceFormat);
-        if (obj) {
-            IPropertyValue^ property = (IPropertyValue^) obj;
-            Platform::Array<unsigned char>^ data;
-            property->GetUInt8Array(&data);
-            SDL_memcpy(&fmt, data->Data, SDL_min(data->Length, sizeof(WAVEFORMATEXTENSIBLE)));
-        } else {
-            SDL_zero(fmt);
-        }
-
-        WASAPI_AddDevice(this->iscapture, utf8dev, &fmt, info->Id->Data());
-        SDL_free(utf8dev);
-    }
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnDeviceRemoved(DeviceWatcher^ sender, DeviceInformationUpdate^ info)
-{
-    SDL_assert(sender == this->watcher);
-    WASAPI_RemoveDevice(this->iscapture, info->Id->Data());
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnDeviceUpdated(DeviceWatcher^ sender, DeviceInformationUpdate^ args)
-{
-    SDL_assert(sender == this->watcher);
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnEnumerationCompleted(DeviceWatcher^ sender, Platform::Object^ args)
-{
-    SDL_assert(sender == this->watcher);
-    SDL_SemPost(this->completed);
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnDefaultRenderDeviceChanged(Platform::Object^ sender, DefaultAudioRenderDeviceChangedEventArgs^ args)
-{
-    SDL_assert(this->iscapture);
-    SDL_AtomicAdd(&SDL_IMMDevice_DefaultPlaybackGeneration, 1);
-}
-
-void
-SDL_WasapiDeviceEventHandler::OnDefaultCaptureDeviceChanged(Platform::Object^ sender, DefaultAudioCaptureDeviceChangedEventArgs^ args)
-{
-    SDL_assert(!this->iscapture);
-    SDL_AtomicAdd(&SDL_IMMDevice_DefaultCaptureGeneration, 1);
-}
-
-
-static SDL_WasapiDeviceEventHandler *playback_device_event_handler;
-static SDL_WasapiDeviceEventHandler *capture_device_event_handler;
-
-int WASAPI_PlatformInit(void)
-{
-    SDL_AtomicSet(&SDL_IMMDevice_DefaultPlaybackGeneration, 1);
-    SDL_AtomicSet(&SDL_IMMDevice_DefaultCaptureGeneration, 1);
-    return 0;
-}
-
-void WASAPI_PlatformDeinit(void)
-{
-    DevIdList *devidlist;
-    DevIdList *next;
-
-    delete playback_device_event_handler;
-    playback_device_event_handler = nullptr;
-    delete capture_device_event_handler;
-    capture_device_event_handler = nullptr;
-
-    for (devidlist = deviceid_list; devidlist; devidlist = next) {
-        next = devidlist->next;
-        SDL_free(devidlist->str);
-        SDL_free(devidlist);
-    }
-    deviceid_list = NULL;
-}
-
-void WASAPI_EnumerateEndpoints(void)
-{
-    // DeviceWatchers will fire an Added event for each existing device at
-    //  startup, so we don't need to enumerate them separately before
-    //  listening for updates.
-    playback_device_event_handler = new SDL_WasapiDeviceEventHandler(SDL_FALSE);
-    capture_device_event_handler = new SDL_WasapiDeviceEventHandler(SDL_TRUE);
-    SDL_SemWait(playback_device_event_handler->completed);
-    SDL_SemWait(capture_device_event_handler->completed);
-}
-
-struct SDL_WasapiActivationHandler : public RuntimeClass< RuntimeClassFlags< ClassicCom >, FtmBase, IActivateAudioInterfaceCompletionHandler >
-{
-    SDL_WasapiActivationHandler() : device(nullptr) {}
-    STDMETHOD(ActivateCompleted)(IActivateAudioInterfaceAsyncOperation *operation);
-    SDL_AudioDevice *device;
-};
-
-HRESULT
-SDL_WasapiActivationHandler::ActivateCompleted(IActivateAudioInterfaceAsyncOperation *async)
-{
-    // Just set a flag, since we're probably in a different thread. We'll pick it up and init everything on our own thread to prevent races.
-    SDL_AtomicSet(&device->hidden->just_activated, 1);
-    WASAPI_UnrefDevice(device);
-    return S_OK;
-}
-
-void
-WASAPI_PlatformDeleteActivationHandler(void *handler)
-{
-    ((SDL_WasapiActivationHandler *) handler)->Release();
-}
-
-int
-WASAPI_GetDefaultAudioInfo(char **name, SDL_AudioSpec *spec, int iscapture)
-{
-    return SDL_Unsupported();
-}
-
-int
-WASAPI_ActivateDevice(_THIS, const SDL_bool isrecovery)
-{
-    LPCWSTR devid = _this->hidden->devid;
-    Platform::String^ defdevid;
-
-    if (devid == nullptr) {
-        defdevid = _this->iscapture ? MediaDevice::GetDefaultAudioCaptureId(AudioDeviceRole::Default) : MediaDevice::GetDefaultAudioRenderId(AudioDeviceRole::Default);
-        if (defdevid) {
-            devid = defdevid->Data();
-        }
-    }
-
-    SDL_AtomicSet(&_this->hidden->just_activated, 0);
-
-    ComPtr<SDL_WasapiActivationHandler> handler = Make<SDL_WasapiActivationHandler>();
-    if (handler == nullptr) {
-        return SDL_SetError("Failed to allocate WASAPI activation handler");
-    }
-
-    handler.Get()->AddRef();  // we hold a reference after ComPtr destructs on return, causing a Release, and Release ourselves in WASAPI_PlatformDeleteActivationHandler(), etc.
-    handler.Get()->device = _this;
-    _this->hidden->activation_handler = handler.Get();
-
-    WASAPI_RefDevice(_this);  /* completion handler will unref it. */
-    IActivateAudioInterfaceAsyncOperation *async = nullptr;
-    const HRESULT ret = ActivateAudioInterfaceAsync(devid, __uuidof(IAudioClient), nullptr, handler.Get(), &async);
-
-    if (FAILED(ret) || async == nullptr) {
-        if (async != nullptr) {
-            async->Release();
-        }
-        handler.Get()->Release();
-        WASAPI_UnrefDevice(_this);
-        return WIN_SetErrorFromHRESULT("WASAPI can't activate requested audio endpoint", ret);
-    }
-
-    /* Spin until the async operation is complete.
-     * If we don't PrepDevice before leaving this function, the bug list gets LONG:
-     * - device.spec is not filled with the correct information
-     * - The 'obtained' spec will be wrong for ALLOW_CHANGE properties
-     * - SDL_AudioStreams will/will not be allocated at the right time
-     * - SDL_assert(device->callbackspec.size == device->spec.size) will fail
-     * - When the assert is ignored, skipping or a buffer overflow will occur
-     */
-    while (!SDL_AtomicCAS(&_this->hidden->just_activated, 1, 0)) {
-        SDL_Delay(1);
-    }
-
-    HRESULT activateRes = S_OK;
-    IUnknown *iunknown = nullptr;
-    const HRESULT getActivateRes = async->GetActivateResult(&activateRes, &iunknown);
-    async->Release();
-    if (FAILED(getActivateRes)) {
-        return WIN_SetErrorFromHRESULT("Failed to get WASAPI activate result", getActivateRes);
-    } else if (FAILED(activateRes)) {
-        return WIN_SetErrorFromHRESULT("Failed to activate WASAPI device", activateRes);
-    }
-
-    iunknown->QueryInterface(IID_PPV_ARGS(&_this->hidden->client));
-    if (!_this->hidden->client) {
-        return SDL_SetError("Failed to query WASAPI client interface");
-    }
-
-    if (WASAPI_PrepDevice(_this, isrecovery) == -1) {
-        return -1;
-    }
-
-    return 0;
-}
-
-void
-WASAPI_PlatformThreadInit(_THIS)
-{
-    // !!! FIXME: set this thread to "Pro Audio" priority.
-}
-
-void
-WASAPI_PlatformThreadDeinit(_THIS)
-{
-    // !!! FIXME: set this thread to "Pro Audio" priority.
-}
-
-/* Everything below was copied from SDL_wasapi.c, before it got moved to SDL_immdevice.c! */
-
-static const GUID SDL_KSDATAFORMAT_SUBTYPE_PCM = { 0x00000001, 0x0000, 0x0010,{ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } };
-static const GUID SDL_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT = { 0x00000003, 0x0000, 0x0010,{ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } };
-
-extern "C" SDL_AudioFormat
-WaveFormatToSDLFormat(WAVEFORMATEX *waveformat)
-{
-    if ((waveformat->wFormatTag == WAVE_FORMAT_IEEE_FLOAT) && (waveformat->wBitsPerSample == 32)) {
-        return AUDIO_F32SYS;
-    } else if ((waveformat->wFormatTag == WAVE_FORMAT_PCM) && (waveformat->wBitsPerSample == 16)) {
-        return AUDIO_S16SYS;
-    } else if ((waveformat->wFormatTag == WAVE_FORMAT_PCM) && (waveformat->wBitsPerSample == 32)) {
-        return AUDIO_S32SYS;
-    } else if (waveformat->wFormatTag == WAVE_FORMAT_EXTENSIBLE) {
-        const WAVEFORMATEXTENSIBLE *ext = (const WAVEFORMATEXTENSIBLE *)waveformat;
-        if ((SDL_memcmp(&ext->SubFormat, &SDL_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, sizeof(GUID)) == 0) && (waveformat->wBitsPerSample == 32)) {
-            return AUDIO_F32SYS;
-        } else if ((SDL_memcmp(&ext->SubFormat, &SDL_KSDATAFORMAT_SUBTYPE_PCM, sizeof(GUID)) == 0) && (waveformat->wBitsPerSample == 16)) {
-            return AUDIO_S16SYS;
-        } else if ((SDL_memcmp(&ext->SubFormat, &SDL_KSDATAFORMAT_SUBTYPE_PCM, sizeof(GUID)) == 0) && (waveformat->wBitsPerSample == 32)) {
-            return AUDIO_S32SYS;
-        }
-    }
-    return 0;
-}
-
-static void
-WASAPI_RemoveDevice(const SDL_bool iscapture, LPCWSTR devid)
-{
-    DevIdList *i;
-    DevIdList *next;
-    DevIdList *prev = NULL;
-    for (i = deviceid_list; i; i = next) {
-        next = i->next;
-        if (SDL_wcscmp(i->str, devid) == 0) {
-            if (prev) {
-                prev->next = next;
-            }
-            else {
-                deviceid_list = next;
-            }
-            SDL_RemoveAudioDevice(iscapture, i->str);
-            SDL_free(i->str);
-            SDL_free(i);
-        } else {
-            prev = i;
-        }
-    }
-}
-
-static void
-WASAPI_AddDevice(const SDL_bool iscapture, const char *devname, WAVEFORMATEXTENSIBLE *fmt, LPCWSTR devid)
-{
-    DevIdList *devidlist;
-    SDL_AudioSpec spec;
-
-    /* You can have multiple endpoints on a device that are mutually exclusive ("Speakers" vs "Line Out" or whatever).
-       In a perfect world, things that are unplugged won't be in this collection. The only gotcha is probably for
-       phones and tablets, where you might have an internal speaker and a headphone jack and expect both to be
-       available and switch automatically. (!!! FIXME...?) */
-
-       /* see if we already have this one. */
-    for (devidlist = deviceid_list; devidlist; devidlist = devidlist->next) {
-        if (SDL_wcscmp(devidlist->str, devid) == 0) {
-            return;  /* we already have this. */
-        }
-    }
-
-    devidlist = (DevIdList *)SDL_malloc(sizeof(*devidlist));
-    if (!devidlist) {
-        return;  /* oh well. */
-    }
-
-    devid = SDL_wcsdup(devid);
-    if (!devid) {
-        SDL_free(devidlist);
-        return;  /* oh well. */
-    }
-
-    devidlist->str = (WCHAR *)devid;
-    devidlist->next = deviceid_list;
-    deviceid_list = devidlist;
-
-    SDL_zero(spec);
-    spec.channels = (Uint8)fmt->Format.nChannels;
-    spec.freq = fmt->Format.nSamplesPerSec;
-    spec.format = WaveFormatToSDLFormat((WAVEFORMATEX *)fmt);
-    SDL_AddAudioDevice(iscapture, devname, &spec, (void *)devid);
-}
-
-#endif  // SDL_AUDIO_DRIVER_WASAPI && defined(__WINRT__)
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 4
src/core/windows/SDL_hid.c

@@ -20,8 +20,6 @@
 */
 */
 #include "../../SDL_internal.h"
 #include "../../SDL_internal.h"
 
 
-#ifndef __WINRT__
-
 #include "SDL_hid.h"
 #include "SDL_hid.h"
 
 
 
 
@@ -85,6 +83,4 @@ WIN_UnloadHIDDLL(void)
     }
     }
 }
 }
 
 
-#endif /* !__WINRT__ */
-
 /* vi: set ts=4 sw=4 expandtab: */
 /* vi: set ts=4 sw=4 expandtab: */

+ 0 - 4
src/core/windows/SDL_hid.h

@@ -25,8 +25,6 @@
 
 
 #include "SDL_windows.h"
 #include "SDL_windows.h"
 
 
-#ifndef __WINRT__
-
 typedef LONG NTSTATUS;
 typedef LONG NTSTATUS;
 typedef USHORT USAGE;
 typedef USHORT USAGE;
 typedef struct _HIDP_PREPARSED_DATA *PHIDP_PREPARSED_DATA;
 typedef struct _HIDP_PREPARSED_DATA *PHIDP_PREPARSED_DATA;
@@ -197,8 +195,6 @@ extern HidP_GetValueCaps_t SDL_HidP_GetValueCaps;
 extern HidP_MaxDataListLength_t SDL_HidP_MaxDataListLength;
 extern HidP_MaxDataListLength_t SDL_HidP_MaxDataListLength;
 extern HidP_GetData_t SDL_HidP_GetData;
 extern HidP_GetData_t SDL_HidP_GetData;
 
 
-#endif /* !__WINRT__ */
-
 #endif /* SDL_hid_h_ */
 #endif /* SDL_hid_h_ */
 
 
 /* vi: set ts=4 sw=4 expandtab: */
 /* vi: set ts=4 sw=4 expandtab: */

+ 10 - 27
src/core/windows/SDL_windows.c

@@ -20,7 +20,7 @@
 */
 */
 #include "../../SDL_internal.h"
 #include "../../SDL_internal.h"
 
 
-#if defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
 
 
 #include "SDL_windows.h"
 #include "SDL_windows.h"
 #include "SDL_error.h"
 #include "SDL_error.h"
@@ -89,14 +89,7 @@ WIN_CoInitialize(void)
 
 
        If you need multi-threaded mode, call CoInitializeEx() before SDL_Init()
        If you need multi-threaded mode, call CoInitializeEx() before SDL_Init()
     */
     */
-#ifdef __WINRT__
-    /* DLudwig: On WinRT, it is assumed that COM was initialized in main().
-       CoInitializeEx is available (not CoInitialize though), however
-       on WinRT, main() is typically declared with the [MTAThread]
-       attribute, which, AFAIK, should initialize COM.
-    */
-    return S_OK;
-#elif defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
     /* On Xbox, there's no need to call CoInitializeEx (and it's not implemented) */
     /* On Xbox, there's no need to call CoInitializeEx (and it's not implemented) */
     return S_OK;
     return S_OK;
 #else
 #else
@@ -118,12 +111,9 @@ WIN_CoInitialize(void)
 void
 void
 WIN_CoUninitialize(void)
 WIN_CoUninitialize(void)
 {
 {
-#ifndef __WINRT__
     CoUninitialize();
     CoUninitialize();
-#endif
 }
 }
 
 
-#ifndef __WINRT__
 void *
 void *
 WIN_LoadComBaseFunction(const char *name)
 WIN_LoadComBaseFunction(const char *name)
 {
 {
@@ -140,14 +130,10 @@ WIN_LoadComBaseFunction(const char *name)
         return NULL;
         return NULL;
     }
     }
 }
 }
-#endif
 
 
 HRESULT
 HRESULT
 WIN_RoInitialize(void)
 WIN_RoInitialize(void)
 {
 {
-#ifdef __WINRT__
-    return S_OK;
-#else
     typedef HRESULT (WINAPI *RoInitialize_t)(RO_INIT_TYPE initType);
     typedef HRESULT (WINAPI *RoInitialize_t)(RO_INIT_TYPE initType);
     RoInitialize_t RoInitializeFunc = (RoInitialize_t)WIN_LoadComBaseFunction("RoInitialize");
     RoInitialize_t RoInitializeFunc = (RoInitialize_t)WIN_LoadComBaseFunction("RoInitialize");
     if (RoInitializeFunc) {
     if (RoInitializeFunc) {
@@ -167,22 +153,19 @@ WIN_RoInitialize(void)
     } else {
     } else {
         return E_NOINTERFACE;
         return E_NOINTERFACE;
     }
     }
-#endif
 }
 }
 
 
 void
 void
 WIN_RoUninitialize(void)
 WIN_RoUninitialize(void)
 {
 {
-#ifndef __WINRT__
     typedef void (WINAPI *RoUninitialize_t)(void);
     typedef void (WINAPI *RoUninitialize_t)(void);
     RoUninitialize_t RoUninitializeFunc = (RoUninitialize_t)WIN_LoadComBaseFunction("RoUninitialize");
     RoUninitialize_t RoUninitializeFunc = (RoUninitialize_t)WIN_LoadComBaseFunction("RoUninitialize");
     if (RoUninitializeFunc) {
     if (RoUninitializeFunc) {
         RoUninitializeFunc();
         RoUninitializeFunc();
     }
     }
-#endif
 }
 }
 
 
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
 static BOOL
 static BOOL
 IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
 IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
 {
 {
@@ -206,7 +189,7 @@ IsWindowsVersionOrGreater(WORD wMajorVersion, WORD wMinorVersion, WORD wServiceP
 
 
 BOOL WIN_IsWindowsVistaOrGreater(void)
 BOOL WIN_IsWindowsVistaOrGreater(void)
 {
 {
-#if defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
     return TRUE;
     return TRUE;
 #else
 #else
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), LOBYTE(_WIN32_WINNT_VISTA), 0);
@@ -215,7 +198,7 @@ BOOL WIN_IsWindowsVistaOrGreater(void)
 
 
 BOOL WIN_IsWindows7OrGreater(void)
 BOOL WIN_IsWindows7OrGreater(void)
 {
 {
-#if defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
     return TRUE;
     return TRUE;
 #else
 #else
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 0);
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), LOBYTE(_WIN32_WINNT_WIN7), 0);
@@ -224,7 +207,7 @@ BOOL WIN_IsWindows7OrGreater(void)
 
 
 BOOL WIN_IsWindows8OrGreater(void)
 BOOL WIN_IsWindows8OrGreater(void)
 {
 {
-#if defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
     return TRUE;
     return TRUE;
 #else
 #else
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
     return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), LOBYTE(_WIN32_WINNT_WIN8), 0);
@@ -255,8 +238,8 @@ WASAPI doesn't need this. This is just for DirectSound/WinMM.
 char *
 char *
 WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid)
 WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid)
 {
 {
-#if defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
-    return WIN_StringToUTF8(name);  /* No registry access on WinRT/UWP and Xbox, go with what we've got. */
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
+    return WIN_StringToUTF8(name);  /* No registry access on Xbox, go with what we've got. */
 #else
 #else
     static const GUID nullguid = { 0 };
     static const GUID nullguid = { 0 };
     const unsigned char *ptr;
     const unsigned char *ptr;
@@ -308,7 +291,7 @@ WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid)
     retval = WIN_StringToUTF8(strw);
     retval = WIN_StringToUTF8(strw);
     SDL_free(strw);
     SDL_free(strw);
     return retval ? retval : WIN_StringToUTF8(name);
     return retval ? retval : WIN_StringToUTF8(name);
-#endif /* if __WINRT__ / else */
+#endif /**/
 }
 }
 
 
 BOOL
 BOOL
@@ -341,6 +324,6 @@ WIN_RectToRECT(const SDL_Rect *sdlrect, RECT *winrect)
     winrect->bottom = sdlrect->y + sdlrect->h - 1;
     winrect->bottom = sdlrect->y + sdlrect->h - 1;
 }
 }
 
 
-#endif /* defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__) */
+#endif /* defined(__WIN32__) || defined(__GDK__) */
 
 
 /* vi: set ts=4 sw=4 expandtab: */
 /* vi: set ts=4 sw=4 expandtab: */

+ 0 - 2
src/core/windows/SDL_windows.h

@@ -120,10 +120,8 @@ extern int WIN_SetErrorFromHRESULT(const char *prefix, HRESULT hr);
 /* Sets an error message based on GetLastError(). Always return -1. */
 /* Sets an error message based on GetLastError(). Always return -1. */
 extern int WIN_SetError(const char *prefix);
 extern int WIN_SetError(const char *prefix);
 
 
-#if !defined(__WINRT__)
 /* Load a function from combase.dll */
 /* Load a function from combase.dll */
 void *WIN_LoadComBaseFunction(const char *name);
 void *WIN_LoadComBaseFunction(const char *name);
-#endif
 
 
 /* Wrap up the oddities of CoInitialize() into a common function. */
 /* Wrap up the oddities of CoInitialize() into a common function. */
 extern HRESULT WIN_CoInitialize(void);
 extern HRESULT WIN_CoInitialize(void);

+ 3 - 3
src/core/windows/SDL_xinput.c

@@ -37,7 +37,7 @@ static HANDLE s_pXInputDLL = 0;
 static int s_XInputDLLRefCount = 0;
 static int s_XInputDLLRefCount = 0;
 
 
 
 
-#if defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
 
 
 int
 int
 WIN_LoadXInputDLL(void)
 WIN_LoadXInputDLL(void)
@@ -70,7 +70,7 @@ WIN_UnloadXInputDLL(void)
 {
 {
 }
 }
 
 
-#else /* !(defined(__WINRT__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)) */
+#else /* !(defined(__XBOXONE__) || defined(__XBOXSERIES__)) */
 
 
 int
 int
 WIN_LoadXInputDLL(void)
 WIN_LoadXInputDLL(void)
@@ -138,7 +138,7 @@ WIN_UnloadXInputDLL(void)
     }
     }
 }
 }
 
 
-#endif /* __WINRT__ */
+#endif /**/
 
 
 /* Ends C function definitions when using C++ */
 /* Ends C function definitions when using C++ */
 #ifdef __cplusplus
 #ifdef __cplusplus

+ 0 - 67
src/core/winrt/SDL_winrtapp_common.cpp

@@ -1,67 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#include "SDL_main.h"
-#include "SDL_system.h"
-#include "SDL_winrtapp_direct3d.h"
-#include "SDL_winrtapp_xaml.h"
-
-#include <wrl.h>
-
-int (*WINRT_SDLAppEntryPoint)(int, char **) = NULL;
-
-extern "C" DECLSPEC int
-SDL_WinRTRunApp(SDL_main_func mainFunction, void * xamlBackgroundPanel)
-{
-    if (xamlBackgroundPanel) {
-        return SDL_WinRTInitXAMLApp(mainFunction, xamlBackgroundPanel);
-    } else {
-        if (FAILED(Windows::Foundation::Initialize(RO_INIT_MULTITHREADED))) {
-            return 1;
-        }
-        return SDL_WinRTInitNonXAMLApp(mainFunction);
-    }
-}
-
-
-extern "C" DECLSPEC SDL_WinRT_DeviceFamily
-SDL_WinRTGetDeviceFamily()
-{
-#if NTDDI_VERSION >= NTDDI_WIN10  /* !!! FIXME: I have no idea if this is the right test. This is a UWP API, I think. Older windows should...just return "mobile"? I don't know. --ryan. */
-    Platform::String^ deviceFamily = Windows::System::Profile::AnalyticsInfo::VersionInfo->DeviceFamily;
-
-    if (deviceFamily->Equals("Windows.Desktop"))
-    {
-        return SDL_WINRT_DEVICEFAMILY_DESKTOP;
-    }
-    else if (deviceFamily->Equals("Windows.Mobile"))
-    {
-        return SDL_WINRT_DEVICEFAMILY_MOBILE;
-    }
-    else if (deviceFamily->Equals("Windows.Xbox"))
-    {
-        return SDL_WINRT_DEVICEFAMILY_XBOX;
-    }
-#endif
-
-    return SDL_WINRT_DEVICEFAMILY_UNKNOWN;
-}

+ 0 - 31
src/core/winrt/SDL_winrtapp_common.h

@@ -1,31 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-#ifndef SDL_winrtapp_common_h_
-#define SDL_winrtapp_common_h_
-
-/* A pointer to the app's C-style main() function (which is a different
-   function than the WinRT app's actual entry point).
- */
-extern int (*WINRT_SDLAppEntryPoint)(int, char **);
-
-#endif // SDL_winrtapp_common_h_

+ 0 - 797
src/core/winrt/SDL_winrtapp_direct3d.cpp

@@ -1,797 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-/* Standard C++11 includes */
-#include <functional>
-#include <string>
-#include <sstream>
-using namespace std;
-
-
-/* Windows includes */
-#include "ppltasks.h"
-using namespace concurrency;
-using namespace Windows::ApplicationModel;
-using namespace Windows::ApplicationModel::Core;
-using namespace Windows::ApplicationModel::Activation;
-using namespace Windows::Devices::Input;
-using namespace Windows::Graphics::Display;
-using namespace Windows::Foundation;
-using namespace Windows::System;
-using namespace Windows::UI::Core;
-using namespace Windows::UI::Input;
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-using namespace Windows::Phone::UI::Input;
-#endif
-
-
-/* SDL includes */
-extern "C" {
-#include "SDL_events.h"
-#include "SDL_hints.h"
-#include "SDL_main.h"
-#include "SDL_stdinc.h"
-#include "SDL_render.h"
-#include "../../video/SDL_sysvideo.h"
-//#include "../../SDL_hints_c.h"
-#include "../../events/SDL_events_c.h"
-#include "../../events/SDL_keyboard_c.h"
-#include "../../events/SDL_mouse_c.h"
-#include "../../events/SDL_windowevents_c.h"
-#include "../../render/SDL_sysrender.h"
-#include "../windows/SDL_windows.h"
-}
-
-#include "../../video/winrt/SDL_winrtevents_c.h"
-#include "../../video/winrt/SDL_winrtvideo_cpp.h"
-#include "SDL_winrtapp_common.h"
-#include "SDL_winrtapp_direct3d.h"
-
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-/* Calling IDXGIDevice3::Trim on the active Direct3D 11.x device is necessary
- * when Windows 8.1 apps are about to get suspended.
- */
-extern "C" void D3D11_Trim(SDL_Renderer *);
-#endif
-
-
-// Compile-time debugging options:
-// To enable, uncomment; to disable, comment them out.
-//#define LOG_POINTER_EVENTS 1
-//#define LOG_WINDOW_EVENTS 1
-//#define LOG_ORIENTATION_EVENTS 1
-
-
-// HACK, DLudwig: record a reference to the global, WinRT 'app'/view.
-// SDL/WinRT will use this throughout its code.
-//
-// TODO, WinRT: consider replacing SDL_WinRTGlobalApp with something
-// non-global, such as something created inside
-// SDL_InitSubSystem(SDL_INIT_VIDEO), or something inside
-// SDL_CreateWindow().
-SDL_WinRTApp ^ SDL_WinRTGlobalApp = nullptr;
-
-ref class SDLApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource
-{
-public:
-    virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView();
-};
-
-IFrameworkView^ SDLApplicationSource::CreateView()
-{
-    // TODO, WinRT: see if this function (CreateView) can ever get called
-    // more than once.  For now, just prevent it from ever assigning
-    // SDL_WinRTGlobalApp more than once.
-    SDL_assert(!SDL_WinRTGlobalApp);
-    SDL_WinRTApp ^ app = ref new SDL_WinRTApp();
-    if (!SDL_WinRTGlobalApp)
-    {
-        SDL_WinRTGlobalApp = app;
-    }
-    return app;
-}
-
-int SDL_WinRTInitNonXAMLApp(int (*mainFunction)(int, char **))
-{
-    WINRT_SDLAppEntryPoint = mainFunction;
-    auto direct3DApplicationSource = ref new SDLApplicationSource();
-    CoreApplication::Run(direct3DApplicationSource);
-    return 0;
-}
-
-static void
-WINRT_ProcessWindowSizeChange() // TODO: Pass an SDL_Window-identifying thing into WINRT_ProcessWindowSizeChange()
-{
-    CoreWindow ^ coreWindow = CoreWindow::GetForCurrentThread();
-    if (coreWindow) {
-        if (WINRT_GlobalSDLWindow) {
-            SDL_Window * window = WINRT_GlobalSDLWindow;
-            SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
-
-            int x = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Left);
-            int y = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Top);
-            int w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
-            int h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
-
-#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) && (NTDDI_VERSION == NTDDI_WIN8)
-            /* WinPhone 8.0 always keeps its native window size in portrait,
-               regardless of orientation.  This changes in WinPhone 8.1,
-               in which the native window's size changes along with
-               orientation.
-
-               Attempt to emulate WinPhone 8.1's behavior on WinPhone 8.0, with
-               regards to window size.  This fixes a rendering bug that occurs
-               when a WinPhone 8.0 app is rotated to either 90 or 270 degrees.
-            */
-            const DisplayOrientations currentOrientation = WINRT_DISPLAY_PROPERTY(CurrentOrientation);
-            switch (currentOrientation) {
-                case DisplayOrientations::Landscape:
-                case DisplayOrientations::LandscapeFlipped: {
-                    int tmp = w;
-                    w = h;
-                    h = tmp;
-                } break;
-            }
-#endif
-
-            const Uint32 latestFlags = WINRT_DetectWindowFlags(window);
-            if (latestFlags & SDL_WINDOW_MAXIMIZED) {
-                SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0);
-            } else {
-                SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0);
-            }
-
-            WINRT_UpdateWindowFlags(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
-
-            /* The window can move during a resize event, such as when maximizing
-               or resizing from a corner */
-            SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y);
-            SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, h);
-        }
-    }
-}
-
-SDL_WinRTApp::SDL_WinRTApp() :
-    m_windowClosed(false),
-    m_windowVisible(true)
-{
-}
-
-void SDL_WinRTApp::Initialize(CoreApplicationView^ applicationView)
-{
-    applicationView->Activated +=
-        ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &SDL_WinRTApp::OnAppActivated);
-
-    CoreApplication::Suspending +=
-        ref new EventHandler<SuspendingEventArgs^>(this, &SDL_WinRTApp::OnSuspending);
-
-    CoreApplication::Resuming +=
-        ref new EventHandler<Platform::Object^>(this, &SDL_WinRTApp::OnResuming);
-
-    CoreApplication::Exiting +=
-        ref new EventHandler<Platform::Object^>(this, &SDL_WinRTApp::OnExiting);
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-    /* HACK ALERT!  Xbox One doesn't seem to detect gamepads unless something
-       gets registered to receive Win10's Windows.Gaming.Input.Gamepad.GamepadAdded
-       events.  We'll register an event handler for these events here, to make
-       sure that gamepad detection works later on, if requested.
-    */
-    Windows::Gaming::Input::Gamepad::GamepadAdded +=
-        ref new Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad^>(
-            this, &SDL_WinRTApp::OnGamepadAdded
-        );
-#endif
-}
-
-#if NTDDI_VERSION > NTDDI_WIN8
-void SDL_WinRTApp::OnOrientationChanged(DisplayInformation^ sender, Object^ args)
-#else
-void SDL_WinRTApp::OnOrientationChanged(Object^ sender)
-#endif
-{
-#if LOG_ORIENTATION_EVENTS==1
-    {
-        CoreWindow^ window = CoreWindow::GetForCurrentThread();
-        if (window) {
-            SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, CoreWindow Bounds={%f,%f,%f,%f}\n",
-                __FUNCTION__,
-                WINRT_DISPLAY_PROPERTY(CurrentOrientation),
-                WINRT_DISPLAY_PROPERTY(NativeOrientation),
-                WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
-                window->Bounds.X,
-                window->Bounds.Y,
-                window->Bounds.Width,
-                window->Bounds.Height);
-        } else {
-            SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d\n",
-                __FUNCTION__,
-                WINRT_DISPLAY_PROPERTY(CurrentOrientation),
-                WINRT_DISPLAY_PROPERTY(NativeOrientation),
-                WINRT_DISPLAY_PROPERTY(AutoRotationPreferences));
-        }
-    }
-#endif
-
-    WINRT_ProcessWindowSizeChange();
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    // HACK: Make sure that orientation changes
-    // lead to the Direct3D renderer's viewport getting updated:
-    //
-    // For some reason, this doesn't seem to need to be done on Windows 8.x,
-    // even when going from Landscape to LandscapeFlipped.  It only seems to
-    // be needed on Windows Phone, at least when I tested on my devices.
-    // I'm not currently sure why this is, but it seems to work fine. -- David L.
-    //
-    // TODO, WinRT: do more extensive research into why orientation changes on Win 8.x don't need D3D changes, or if they might, in some cases
-    SDL_Window * window = WINRT_GlobalSDLWindow;
-    if (window) {
-        SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
-        int w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
-        int h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
-        SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_SIZE_CHANGED, w, h);
-    }
-#endif
-
-}
-
-void SDL_WinRTApp::SetWindow(CoreWindow^ window)
-{
-#if LOG_WINDOW_EVENTS==1
-    SDL_Log("%s, current orientation=%d, native orientation=%d, auto rot. pref=%d, window bounds={%f, %f, %f,%f}\n",
-        __FUNCTION__,
-        WINRT_DISPLAY_PROPERTY(CurrentOrientation),
-        WINRT_DISPLAY_PROPERTY(NativeOrientation),
-        WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
-        window->Bounds.X,
-        window->Bounds.Y,
-        window->Bounds.Width,
-        window->Bounds.Height);
-#endif
-
-    window->SizeChanged += 
-        ref new TypedEventHandler<CoreWindow^, WindowSizeChangedEventArgs^>(this, &SDL_WinRTApp::OnWindowSizeChanged);
-
-    window->VisibilityChanged +=
-        ref new TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &SDL_WinRTApp::OnVisibilityChanged);
-
-    window->Activated +=
-        ref new TypedEventHandler<CoreWindow^, WindowActivatedEventArgs^>(this, &SDL_WinRTApp::OnWindowActivated);
-
-    window->Closed += 
-        ref new TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &SDL_WinRTApp::OnWindowClosed);
-
-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
-    window->PointerCursor = ref new CoreCursor(CoreCursorType::Arrow, 0);
-#endif
-
-    window->PointerPressed +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerPressed);
-
-    window->PointerMoved +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerMoved);
-
-    window->PointerReleased +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerReleased);
-
-    window->PointerEntered +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerEntered);
-
-    window->PointerExited +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerExited);
-
-    window->PointerWheelChanged +=
-        ref new TypedEventHandler<CoreWindow^, PointerEventArgs^>(this, &SDL_WinRTApp::OnPointerWheelChanged);
-
-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
-    // Retrieves relative-only mouse movements:
-    Windows::Devices::Input::MouseDevice::GetForCurrentView()->MouseMoved +=
-        ref new TypedEventHandler<MouseDevice^, MouseEventArgs^>(this, &SDL_WinRTApp::OnMouseMoved);
-#endif
-
-    window->KeyDown +=
-        ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &SDL_WinRTApp::OnKeyDown);
-
-    window->KeyUp +=
-        ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &SDL_WinRTApp::OnKeyUp);
-
-    window->CharacterReceived +=
-        ref new TypedEventHandler<CoreWindow^, CharacterReceivedEventArgs^>(this, &SDL_WinRTApp::OnCharacterReceived);
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-    Windows::UI::Core::SystemNavigationManager::GetForCurrentView()->BackRequested +=
-        ref new EventHandler<BackRequestedEventArgs^>(this, &SDL_WinRTApp::OnBackButtonPressed);
-#elif WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    HardwareButtons::BackPressed +=
-        ref new EventHandler<BackPressedEventArgs^>(this, &SDL_WinRTApp::OnBackButtonPressed);
-#endif
-
-#if NTDDI_VERSION > NTDDI_WIN8
-    DisplayInformation::GetForCurrentView()->OrientationChanged +=
-        ref new TypedEventHandler<Windows::Graphics::Display::DisplayInformation^, Object^>(this, &SDL_WinRTApp::OnOrientationChanged);
-#else
-    DisplayProperties::OrientationChanged +=
-        ref new DisplayPropertiesEventHandler(this, &SDL_WinRTApp::OnOrientationChanged);
-#endif
-
-#if (WINAPI_FAMILY == WINAPI_FAMILY_APP) && (NTDDI_VERSION < NTDDI_WIN10)  // for Windows 8/8.1/RT apps... (and not Phone apps)
-    // Make sure we know when a user has opened the app's settings pane.
-    // This is needed in order to display a privacy policy, which needs
-    // to be done for network-enabled apps, as per Windows Store requirements.
-    using namespace Windows::UI::ApplicationSettings;
-    SettingsPane::GetForCurrentView()->CommandsRequested +=
-        ref new TypedEventHandler<SettingsPane^, SettingsPaneCommandsRequestedEventArgs^>
-            (this, &SDL_WinRTApp::OnSettingsPaneCommandsRequested);
-#endif
-}
-
-void SDL_WinRTApp::Load(Platform::String^ entryPoint)
-{
-}
-
-void SDL_WinRTApp::Run()
-{
-    SDL_SetMainReady();
-    if (WINRT_SDLAppEntryPoint)
-    {
-        // TODO, WinRT: pass the C-style main() a reasonably realistic
-        // representation of command line arguments.
-        int argc = 1;
-        char **argv = (char **)SDL_malloc(2 * sizeof(*argv));
-        if (!argv) {
-            return;
-        }
-        argv[0] = SDL_strdup("WinRTApp");
-        argv[1] = NULL;
-        WINRT_SDLAppEntryPoint(argc, argv);
-        SDL_free(argv[0]);
-        SDL_free(argv);
-    }
-}
-
-static bool IsSDLWindowEventPending(SDL_WindowEventID windowEventID)
-{
-    SDL_Event events[128];
-    const int count = SDL_PeepEvents(events, sizeof(events)/sizeof(SDL_Event), SDL_PEEKEVENT, SDL_WINDOWEVENT, SDL_WINDOWEVENT);
-    for (int i = 0; i < count; ++i) {
-        if (events[i].window.event == windowEventID) {
-            return true;
-        }
-    }
-    return false;
-}
-
-bool SDL_WinRTApp::ShouldWaitForAppResumeEvents()
-{
-    /* Don't wait if the app is visible: */
-    if (m_windowVisible) {
-        return false;
-    }
-    
-    /* Don't wait until the window-hide events finish processing.
-     * Do note that if an app-suspend event is sent (as indicated
-     * by SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERBACKGROUND
-     * events), then this code may be a moot point, as WinRT's
-     * own event pump (aka ProcessEvents()) will pause regardless
-     * of what we do here.  This happens on Windows Phone 8, to note.
-     * Windows 8.x apps, on the other hand, may get a chance to run
-     * these.
-     */
-    if (IsSDLWindowEventPending(SDL_WINDOWEVENT_HIDDEN)) {
-        return false;
-    } else if (IsSDLWindowEventPending(SDL_WINDOWEVENT_FOCUS_LOST)) {
-        return false;
-    } else if (IsSDLWindowEventPending(SDL_WINDOWEVENT_MINIMIZED)) {
-        return false;
-    }
-
-    return true;
-}
-
-void SDL_WinRTApp::PumpEvents()
-{
-    if (!m_windowClosed) {
-        if (!ShouldWaitForAppResumeEvents()) {
-            /* This is the normal way in which events should be pumped.
-             * 'ProcessAllIfPresent' will make ProcessEvents() process anywhere
-             * from zero to N events, and will then return.
-             */
-            CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent);
-        } else {
-            /* This style of event-pumping, with 'ProcessOneAndAllPending',
-             * will cause anywhere from one to N events to be processed.  If
-             * at least one event is processed, the call will return.  If
-             * no events are pending, then the call will wait until one is
-             * available, and will not return (to the caller) until this
-             * happens!  This should only occur when the app is hidden.
-             */
-            CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessOneAndAllPending);
-        }
-    }
-}
-
-void SDL_WinRTApp::Uninitialize()
-{
-}
-
-#if (WINAPI_FAMILY == WINAPI_FAMILY_APP) && (NTDDI_VERSION < NTDDI_WIN10)
-void SDL_WinRTApp::OnSettingsPaneCommandsRequested(
-    Windows::UI::ApplicationSettings::SettingsPane ^p,
-    Windows::UI::ApplicationSettings::SettingsPaneCommandsRequestedEventArgs ^args)
-{
-    using namespace Platform;
-    using namespace Windows::UI::ApplicationSettings;
-    using namespace Windows::UI::Popups;
-
-    String ^privacyPolicyURL = nullptr;     // a URL to an app's Privacy Policy
-    String ^privacyPolicyLabel = nullptr;   // label/link text
-    const char *tmpHintValue = NULL;        // SDL_GetHint-retrieved value, used immediately
-    wchar_t *tmpStr = NULL;                 // used for UTF8 to UCS2 conversion
-
-    // Setup a 'Privacy Policy' link, if one is available (via SDL_GetHint):
-    tmpHintValue = SDL_GetHint(SDL_HINT_WINRT_PRIVACY_POLICY_URL);
-    if (tmpHintValue && tmpHintValue[0] != '\0') {
-        // Convert the privacy policy's URL to UCS2:
-        tmpStr = WIN_UTF8ToString(tmpHintValue);
-        privacyPolicyURL = ref new String(tmpStr);
-        SDL_free(tmpStr);
-
-        // Optionally retrieve custom label-text for the link.  If this isn't
-        // available, a default value will be used instead.
-        tmpHintValue = SDL_GetHint(SDL_HINT_WINRT_PRIVACY_POLICY_LABEL);
-        if (tmpHintValue && tmpHintValue[0] != '\0') {
-            tmpStr = WIN_UTF8ToString(tmpHintValue);
-            privacyPolicyLabel = ref new String(tmpStr);
-            SDL_free(tmpStr);
-        } else {
-            privacyPolicyLabel = ref new String(L"Privacy Policy");
-        }
-
-        // Register the link, along with a handler to be called if and when it is
-        // clicked:
-        auto cmd = ref new SettingsCommand(L"privacyPolicy", privacyPolicyLabel,
-            ref new UICommandInvokedHandler([=](IUICommand ^) {
-                Windows::System::Launcher::LaunchUriAsync(ref new Uri(privacyPolicyURL));
-        }));
-        args->Request->ApplicationCommands->Append(cmd);
-    }
-}
-#endif // if (WINAPI_FAMILY == WINAPI_FAMILY_APP) && (NTDDI_VERSION < NTDDI_WIN10)
-
-void SDL_WinRTApp::OnWindowSizeChanged(CoreWindow^ sender, WindowSizeChangedEventArgs^ args)
-{
-#if LOG_WINDOW_EVENTS==1
-    SDL_Log("%s, size={%f,%f}, bounds={%f,%f,%f,%f}, current orientation=%d, native orientation=%d, auto rot. pref=%d, WINRT_GlobalSDLWindow?=%s\n",
-        __FUNCTION__,
-        args->Size.Width, args->Size.Height,
-        sender->Bounds.X, sender->Bounds.Y, sender->Bounds.Width, sender->Bounds.Height,
-        WINRT_DISPLAY_PROPERTY(CurrentOrientation),
-        WINRT_DISPLAY_PROPERTY(NativeOrientation),
-        WINRT_DISPLAY_PROPERTY(AutoRotationPreferences),
-        (WINRT_GlobalSDLWindow ? "yes" : "no"));
-#endif
-
-    WINRT_ProcessWindowSizeChange();
-}
-
-void SDL_WinRTApp::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args)
-{
-#if LOG_WINDOW_EVENTS==1
-    SDL_Log("%s, visible?=%s, bounds={%f,%f,%f,%f}, WINRT_GlobalSDLWindow?=%s\n",
-        __FUNCTION__,
-        (args->Visible ? "yes" : "no"),
-        sender->Bounds.X, sender->Bounds.Y,
-        sender->Bounds.Width, sender->Bounds.Height,
-        (WINRT_GlobalSDLWindow ? "yes" : "no"));
-#endif
-
-    m_windowVisible = args->Visible;
-    if (WINRT_GlobalSDLWindow) {
-        SDL_bool wasSDLWindowSurfaceValid = WINRT_GlobalSDLWindow->surface_valid;
-        Uint32 latestWindowFlags = WINRT_DetectWindowFlags(WINRT_GlobalSDLWindow);
-        if (args->Visible) {
-            SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_SHOWN, 0, 0);
-            SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0);
-            if (latestWindowFlags & SDL_WINDOW_MAXIMIZED) {
-                SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_MAXIMIZED, 0, 0);
-            } else {
-                SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_RESTORED, 0, 0);
-            }
-        } else {
-            SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_HIDDEN, 0, 0);
-            SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0);
-            SDL_SendWindowEvent(WINRT_GlobalSDLWindow, SDL_WINDOWEVENT_MINIMIZED, 0, 0);
-        }
-
-        // HACK: Prevent SDL's window-hide handling code, which currently
-        // triggers a fake window resize (possibly erronously), from
-        // marking the SDL window's surface as invalid.
-        //
-        // A better solution to this probably involves figuring out if the
-        // fake window resize can be prevented.
-        WINRT_GlobalSDLWindow->surface_valid = wasSDLWindowSurfaceValid;
-    }
-}
-
-void SDL_WinRTApp::OnWindowActivated(CoreWindow^ sender, WindowActivatedEventArgs^ args)
-{
-#if LOG_WINDOW_EVENTS==1
-    SDL_Log("%s, WINRT_GlobalSDLWindow?=%s\n\n",
-        __FUNCTION__,
-        (WINRT_GlobalSDLWindow ? "yes" : "no"));
-#endif
-
-    /* There's no property in Win 8.x to tell whether a window is active or
-       not.  [De]activation events are, however, sent to the app.  We'll just
-       record those, in case the CoreWindow gets wrapped by an SDL_Window at
-       some future time.
-    */
-    sender->CustomProperties->Insert("SDLHelperWindowActivationState", args->WindowActivationState);
-
-    SDL_Window * window = WINRT_GlobalSDLWindow;
-    if (window) {
-        if (args->WindowActivationState != CoreWindowActivationState::Deactivated) {
-            SDL_SendWindowEvent(window, SDL_WINDOWEVENT_SHOWN, 0, 0);
-            if (SDL_GetKeyboardFocus() != window) {
-                SDL_SetKeyboardFocus(window);
-            }
-        
-            /* Send a mouse-motion event as appropriate.
-               This doesn't work when called from OnPointerEntered, at least
-               not in WinRT CoreWindow apps (as OnPointerEntered doesn't
-               appear to be called after window-reactivation, at least not
-               in Windows 10, Build 10586.3 (November 2015 update, non-beta).
-
-               Don't do it on WinPhone 8.0 though, as CoreWindow's 'PointerPosition'
-               property isn't available.
-             */
-#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION >= NTDDI_WINBLUE)
-            Point cursorPos = WINRT_TransformCursorPosition(window, sender->PointerPosition, TransformToSDLWindowSize);
-            SDL_SendMouseMotion(window, 0, 0, (int)cursorPos.X, (int)cursorPos.Y);
-#endif
-
-            /* TODO, WinRT: see if the Win32 bugfix from https://hg.libsdl.org/SDL/rev/d278747da408 needs to be applied (on window activation) */
-            //WIN_CheckAsyncMouseRelease(data);
-
-            /* TODO, WinRT: implement clipboard support, if possible */
-            ///*
-            // * FIXME: Update keyboard state
-            // */
-            //WIN_CheckClipboardUpdate(data->videodata);
-
-            // HACK: Resetting the mouse-cursor here seems to fix
-            // https://bugzilla.libsdl.org/show_bug.cgi?id=3217, whereby a
-            // WinRT app's mouse cursor may switch to Windows' 'wait' cursor,
-            // after a user alt-tabs back into a full-screened SDL app.
-            // This bug does not appear to reproduce 100% of the time.
-            // It may be a bug in Windows itself (v.10.0.586.36, as tested,
-            // and the most-recent as of this writing).
-            SDL_SetCursor(NULL);
-        } else {
-            if (SDL_GetKeyboardFocus() == window) {
-                SDL_SetKeyboardFocus(NULL);
-            }
-        }
-    }
-}
-
-void SDL_WinRTApp::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args)
-{
-#if LOG_WINDOW_EVENTS==1
-    SDL_Log("%s\n", __FUNCTION__);
-#endif
-    m_windowClosed = true;
-}
-
-void SDL_WinRTApp::OnAppActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
-{
-    CoreWindow::GetForCurrentThread()->Activate();
-}
-
-void SDL_WinRTApp::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args)
-{
-    // Save app state asynchronously after requesting a deferral. Holding a deferral
-    // indicates that the application is busy performing suspending operations. Be
-    // aware that a deferral may not be held indefinitely. After about five seconds,
-    // the app will be forced to exit.
-
-    // ... but first, let the app know it's about to go to the background.
-    // The separation of events may be important, given that the deferral
-    // runs in a separate thread.  This'll make SDL_APP_WILLENTERBACKGROUND
-    // the only event among the two that runs in the main thread.  Given
-    // that a few WinRT operations can only be done from the main thread
-    // (things that access the WinRT CoreWindow are one example of this),
-    // this could be important.
-    SDL_SendAppEvent(SDL_APP_WILLENTERBACKGROUND);
-
-    SuspendingDeferral^ deferral = args->SuspendingOperation->GetDeferral();
-    create_task([this, deferral]()
-    {
-        // Send an app did-enter-background event immediately to observers.
-        // CoreDispatcher::ProcessEvents, which is the backbone on which
-        // SDL_WinRTApp::PumpEvents is built, will not return to its caller
-        // once it sends out a suspend event.  Any events posted to SDL's
-        // event queue won't get received until the WinRT app is resumed.
-        // SDL_AddEventWatch() may be used to receive app-suspend events on
-        // WinRT.
-        SDL_SendAppEvent(SDL_APP_DIDENTERBACKGROUND);
-
-        // Let the Direct3D 11 renderer prepare for the app to be backgrounded.
-        // This is necessary for Windows 8.1, possibly elsewhere in the future.
-        // More details at: http://msdn.microsoft.com/en-us/library/windows/apps/Hh994929.aspx
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-        if (WINRT_GlobalSDLWindow) {
-            SDL_Renderer * renderer = SDL_GetRenderer(WINRT_GlobalSDLWindow);
-            if (renderer && (SDL_strcmp(renderer->info.name, "direct3d11") == 0)) {
-                D3D11_Trim(renderer);
-            }
-        }
-#endif
-
-        deferral->Complete();
-    });
-}
-
-void SDL_WinRTApp::OnResuming(Platform::Object^ sender, Platform::Object^ args)
-{
-    // Restore any data or state that was unloaded on suspend. By default, data
-    // and state are persisted when resuming from suspend. Note that these events
-    // do not occur if the app was previously terminated.
-    SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND);
-    SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND);
-}
-
-void SDL_WinRTApp::OnExiting(Platform::Object^ sender, Platform::Object^ args)
-{
-    SDL_SendAppEvent(SDL_APP_TERMINATING);
-}
-
-static void
-WINRT_LogPointerEvent(const char * header, Windows::UI::Core::PointerEventArgs ^ args, Windows::Foundation::Point transformedPoint)
-{
-    Uint8 button, pressed;
-    Windows::UI::Input::PointerPoint ^ pt = args->CurrentPoint;
-    WINRT_GetSDLButtonForPointerPoint(pt, &button, &pressed);
-    SDL_Log("%s: Position={%f,%f}, Transformed Pos={%f, %f}, MouseWheelDelta=%d, FrameId=%d, PointerId=%d, SDL button=%d pressed=%d\n",
-        header,
-        pt->Position.X, pt->Position.Y,
-        transformedPoint.X, transformedPoint.Y,
-        pt->Properties->MouseWheelDelta,
-        pt->FrameId,
-        pt->PointerId,
-        button,
-        pressed);
-}
-
-void SDL_WinRTApp::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer pressed", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-
-    WINRT_ProcessPointerPressedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnPointerMoved(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer moved", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-
-    WINRT_ProcessPointerMovedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnPointerReleased(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer released", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-    
-    WINRT_ProcessPointerReleasedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnPointerEntered(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer entered", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-
-    WINRT_ProcessPointerEnteredEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnPointerExited(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer exited", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-
-    WINRT_ProcessPointerExitedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnPointerWheelChanged(CoreWindow^ sender, PointerEventArgs^ args)
-{
-#if LOG_POINTER_EVENTS
-    WINRT_LogPointerEvent("pointer wheel changed", args, WINRT_TransformCursorPosition(WINRT_GlobalSDLWindow, args->CurrentPoint->Position, TransformToSDLWindowSize));
-#endif
-
-    WINRT_ProcessPointerWheelChangedEvent(WINRT_GlobalSDLWindow, args->CurrentPoint);
-}
-
-void SDL_WinRTApp::OnMouseMoved(MouseDevice^ mouseDevice, MouseEventArgs^ args)
-{
-    WINRT_ProcessMouseMovedEvent(WINRT_GlobalSDLWindow, args);
-}
-
-void SDL_WinRTApp::OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args)
-{
-    WINRT_ProcessKeyDownEvent(args);
-}
-
-void SDL_WinRTApp::OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args)
-{
-    WINRT_ProcessKeyUpEvent(args);
-}
-
-void SDL_WinRTApp::OnCharacterReceived(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args)
-{
-    WINRT_ProcessCharacterReceivedEvent(args);
-}
-
-template <typename BackButtonEventArgs>
-static void WINRT_OnBackButtonPressed(BackButtonEventArgs ^ args)
-{
-    SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_AC_BACK);
-    SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_AC_BACK);
-
-    if (SDL_GetHintBoolean(SDL_HINT_WINRT_HANDLE_BACK_BUTTON, SDL_FALSE)) {
-        args->Handled = true;
-    }
-}
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-void SDL_WinRTApp::OnBackButtonPressed(Platform::Object^ sender, Windows::UI::Core::BackRequestedEventArgs^ args)
-
-{
-    WINRT_OnBackButtonPressed(args);
-}
-#elif WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-void SDL_WinRTApp::OnBackButtonPressed(Platform::Object^ sender, Windows::Phone::UI::Input::BackPressedEventArgs^ args)
-
-{
-    WINRT_OnBackButtonPressed(args);
-}
-#endif
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-void SDL_WinRTApp::OnGamepadAdded(Platform::Object ^sender, Windows::Gaming::Input::Gamepad ^gamepad)
-{
-    /* HACK ALERT: Nothing needs to be done here, as this method currently
-       only exists to allow something to be registered with Win10's
-       GamepadAdded event, an operation that seems to be necessary to get
-       Xinput-based detection to work on Xbox One.
-    */
-}
-#endif
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 92
src/core/winrt/SDL_winrtapp_direct3d.h

@@ -1,92 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include <Windows.h>
-
-extern int SDL_WinRTInitNonXAMLApp(int (*mainFunction)(int, char **));
-
-ref class SDL_WinRTApp sealed : public Windows::ApplicationModel::Core::IFrameworkView
-{
-public:
-    SDL_WinRTApp();
-    
-    // IFrameworkView Methods.
-    virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
-    virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
-    virtual void Load(Platform::String^ entryPoint);
-    virtual void Run();
-    virtual void Uninitialize();
-
-internal:
-    // SDL-specific methods
-    void PumpEvents();
-
-protected:
-    bool ShouldWaitForAppResumeEvents();
-
-    // Event Handlers.
-
-#if (WINAPI_FAMILY == WINAPI_FAMILY_APP) && (NTDDI_VERSION < NTDDI_WIN10)  // for Windows 8/8.1/RT apps... (and not Phone apps)
-    void OnSettingsPaneCommandsRequested(
-        Windows::UI::ApplicationSettings::SettingsPane ^p,
-        Windows::UI::ApplicationSettings::SettingsPaneCommandsRequestedEventArgs ^args);
-#endif // if (WINAPI_FAMILY == WINAPI_FAMILY_APP) && (NTDDI_VERSION < NTDDI_WIN10)
-
-#if NTDDI_VERSION > NTDDI_WIN8
-    void OnOrientationChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
-#else
-    void OnOrientationChanged(Platform::Object^ sender);
-#endif
-    void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
-    void OnLogicalDpiChanged(Platform::Object^ sender);
-    void OnAppActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
-    void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ args);
-    void OnResuming(Platform::Object^ sender, Platform::Object^ args);
-    void OnExiting(Platform::Object^ sender, Platform::Object^ args);
-    void OnWindowActivated(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowActivatedEventArgs^ args);
-    void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
-    void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
-    void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnPointerMoved(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnPointerEntered(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnPointerExited(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args);
-    void OnMouseMoved(Windows::Devices::Input::MouseDevice^ mouseDevice, Windows::Devices::Input::MouseEventArgs^ args);
-    void OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
-    void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
-    void OnCharacterReceived(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args);
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-    void OnBackButtonPressed(Platform::Object^ sender, Windows::UI::Core::BackRequestedEventArgs^ args);
-#elif WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    void OnBackButtonPressed(Platform::Object^ sender, Windows::Phone::UI::Input::BackPressedEventArgs^ args);
-#endif
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-    void OnGamepadAdded(Platform::Object ^sender, Windows::Gaming::Input::Gamepad ^gamepad);
-#endif
-
-private:
-    bool m_windowClosed;
-    bool m_windowVisible;
-};
-
-extern SDL_WinRTApp ^ SDL_WinRTGlobalApp;

+ 0 - 160
src/core/winrt/SDL_winrtapp_xaml.cpp

@@ -1,160 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* Windows includes */
-#include <agile.h>
-#include <Windows.h>
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-#include <windows.ui.xaml.media.dxinterop.h>
-#endif
-
-
-/* SDL includes */
-#include "../../SDL_internal.h"
-#include "SDL.h"
-#include "../../video/winrt/SDL_winrtevents_c.h"
-#include "../../video/winrt/SDL_winrtvideo_cpp.h"
-#include "SDL_winrtapp_common.h"
-#include "SDL_winrtapp_xaml.h"
-
-
-
-/* SDL-internal globals: */
-SDL_bool WINRT_XAMLWasEnabled = SDL_FALSE;
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-extern "C"
-ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative = NULL;
-static Windows::Foundation::EventRegistrationToken  WINRT_XAMLAppEventToken;
-#endif
-
-
-/*
- * Input event handlers (XAML)
- */
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-static void
-WINRT_OnPointerPressedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerPressedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerMovedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerMovedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerReleasedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerReleasedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-static void
-WINRT_OnPointerWheelChangedViaXAML(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ args)
-{
-    WINRT_ProcessPointerWheelChangedEvent(WINRT_GlobalSDLWindow, args->GetCurrentPoint(nullptr));
-}
-
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-
-/*
- * XAML-to-SDL Rendering Callback
- */
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-static void
-WINRT_OnRenderViaXAML(_In_ Platform::Object^ sender, _In_ Platform::Object^ args)
-{
-    WINRT_CycleXAMLThread();
-}
-
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP
-
-
-/*
- * SDL + XAML Initialization
- */
-
-int
-SDL_WinRTInitXAMLApp(int (*mainFunction)(int, char **), void * backgroundPanelAsIInspectable)
-{
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    return SDL_SetError("XAML support is not yet available in Windows Phone.");
-#else
-    // Declare C++/CX namespaces:
-    using namespace Platform;
-    using namespace Windows::Foundation;
-    using namespace Windows::UI::Core;
-    using namespace Windows::UI::Xaml;
-    using namespace Windows::UI::Xaml::Controls;
-    using namespace Windows::UI::Xaml::Input;
-    using namespace Windows::UI::Xaml::Media;
-
-    // Make sure we have a valid XAML element (to draw onto):
-    if ( ! backgroundPanelAsIInspectable) {
-        return SDL_InvalidParamError("backgroundPanelAsIInspectable");
-    }
-
-    Platform::Object ^ backgroundPanel = reinterpret_cast<Object ^>((IInspectable *) backgroundPanelAsIInspectable);
-    SwapChainBackgroundPanel ^swapChainBackgroundPanel = dynamic_cast<SwapChainBackgroundPanel ^>(backgroundPanel);
-    if ( ! swapChainBackgroundPanel) {
-        return SDL_SetError("An unknown or unsupported type of XAML control was specified.");
-    }
-
-    // Setup event handlers:
-    swapChainBackgroundPanel->PointerPressed += ref new PointerEventHandler(WINRT_OnPointerPressedViaXAML);
-    swapChainBackgroundPanel->PointerReleased += ref new PointerEventHandler(WINRT_OnPointerReleasedViaXAML);
-    swapChainBackgroundPanel->PointerWheelChanged += ref new PointerEventHandler(WINRT_OnPointerWheelChangedViaXAML);
-    swapChainBackgroundPanel->PointerMoved += ref new PointerEventHandler(WINRT_OnPointerMovedViaXAML);
-
-    // Setup for rendering:
-    IInspectable *panelInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(swapChainBackgroundPanel);
-    panelInspectable->QueryInterface(__uuidof(ISwapChainBackgroundPanelNative), (void **)&WINRT_GlobalSwapChainBackgroundPanelNative);
-
-    WINRT_XAMLAppEventToken = CompositionTarget::Rendering::add(ref new EventHandler<Object^>(WINRT_OnRenderViaXAML));
-
-    // Make sure the app is ready to call the SDL-centric main() function:
-    WINRT_SDLAppEntryPoint = mainFunction;
-    SDL_SetMainReady();
-
-    // Make sure video-init knows that we're initializing XAML:
-    SDL_bool oldXAMLWasEnabledValue = WINRT_XAMLWasEnabled;
-    WINRT_XAMLWasEnabled = SDL_TRUE;
-
-    // Make sure video modes are detected now, while we still have access to the WinRT
-    // CoreWindow.  WinRT will not allow the app's CoreWindow to be accessed via the
-    // SDL/WinRT thread.
-    if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
-        // SDL_InitSubSystem will, on error, set the SDL error.  Let that propogate to
-        // the caller to here:
-        WINRT_XAMLWasEnabled = oldXAMLWasEnabledValue;
-        return -1;
-    }
-
-    // All done, for now.
-    return 0;
-#endif // WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP  /  else
-}

+ 0 - 33
src/core/winrt/SDL_winrtapp_xaml.h

@@ -1,33 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-#ifndef SDL_winrtapp_xaml_h_
-#define SDL_winrtapp_xaml_h_
-
-#include "SDL_stdinc.h"
-
-#ifdef __cplusplus
-extern SDL_bool WINRT_XAMLWasEnabled;
-extern int SDL_WinRTInitXAMLApp(int (*mainFunction)(int, char **), void * backgroundPanelAsIInspectable);
-#endif // ifdef __cplusplus
-
-#endif // SDL_winrtapp_xaml_h_

+ 2 - 2
src/cpuinfo/SDL_cpuinfo.c

@@ -24,7 +24,7 @@
 #include "../SDL_internal.h"
 #include "../SDL_internal.h"
 #endif
 #endif
 
 
-#if defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)
+#if defined(__WIN32__) || defined(__GDK__)
 #include "../core/windows/SDL_windows.h"
 #include "../core/windows/SDL_windows.h"
 #endif
 #endif
 
 
@@ -444,7 +444,7 @@ CPU_haveNEON(void)
    query the OS kernel in a platform-specific way. :/ */
    query the OS kernel in a platform-specific way. :/ */
 #if defined(SDL_CPUINFO_DISABLED)
 #if defined(SDL_CPUINFO_DISABLED)
    return 0; /* disabled */
    return 0; /* disabled */
-#elif (defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__)) && (defined(_M_ARM) || defined(_M_ARM64))
+#elif (defined(__WINDOWS__) || defined(__GDK__)) && (defined(_M_ARM) || defined(_M_ARM64))
 /* Visual Studio, for ARM, doesn't define __ARM_ARCH. Handle this first. */
 /* Visual Studio, for ARM, doesn't define __ARM_ARCH. Handle this first. */
 /* Seems to have been removed */
 /* Seems to have been removed */
 #  if !defined(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE)
 #  if !defined(PF_ARM_NEON_INSTRUCTIONS_AVAILABLE)

+ 0 - 2
src/dynapi/SDL_dynapi.h

@@ -49,8 +49,6 @@
 #define SDL_DYNAMIC_API 0
 #define SDL_DYNAMIC_API 0
 #elif defined(__EMSCRIPTEN__) && __EMSCRIPTEN__  /* probably not useful on Emscripten. */
 #elif defined(__EMSCRIPTEN__) && __EMSCRIPTEN__  /* probably not useful on Emscripten. */
 #define SDL_DYNAMIC_API 0
 #define SDL_DYNAMIC_API 0
-#elif defined(SDL_BUILDING_WINRT) && SDL_BUILDING_WINRT  /* probably not useful on WinRT, given current .dll loading restrictions */
-#define SDL_DYNAMIC_API 0
 #elif defined(__PS2__) && __PS2__
 #elif defined(__PS2__) && __PS2__
 #define SDL_DYNAMIC_API 0
 #define SDL_DYNAMIC_API 0
 #elif defined(__PSP__) && __PSP__
 #elif defined(__PSP__) && __PSP__

+ 0 - 4
src/dynapi/SDL_dynapi_overrides.h

@@ -571,10 +571,7 @@
 #define SDL_GetAssertionHandler SDL_GetAssertionHandler_REAL
 #define SDL_GetAssertionHandler SDL_GetAssertionHandler_REAL
 #define SDL_DXGIGetOutputInfo SDL_DXGIGetOutputInfo_REAL
 #define SDL_DXGIGetOutputInfo SDL_DXGIGetOutputInfo_REAL
 #define SDL_RenderIsClipEnabled SDL_RenderIsClipEnabled_REAL
 #define SDL_RenderIsClipEnabled SDL_RenderIsClipEnabled_REAL
-#define SDL_WinRTRunApp SDL_WinRTRunApp_REAL
 #define SDL_WarpMouseGlobal SDL_WarpMouseGlobal_REAL
 #define SDL_WarpMouseGlobal SDL_WarpMouseGlobal_REAL
-#define SDL_WinRTGetFSPathUNICODE SDL_WinRTGetFSPathUNICODE_REAL
-#define SDL_WinRTGetFSPathUTF8 SDL_WinRTGetFSPathUTF8_REAL
 #define SDL_sqrtf SDL_sqrtf_REAL
 #define SDL_sqrtf SDL_sqrtf_REAL
 #define SDL_tan SDL_tan_REAL
 #define SDL_tan SDL_tan_REAL
 #define SDL_tanf SDL_tanf_REAL
 #define SDL_tanf SDL_tanf_REAL
@@ -663,7 +660,6 @@
 #define SDL_RenderGetMetalLayer SDL_RenderGetMetalLayer_REAL
 #define SDL_RenderGetMetalLayer SDL_RenderGetMetalLayer_REAL
 #define SDL_RenderGetMetalCommandEncoder SDL_RenderGetMetalCommandEncoder_REAL
 #define SDL_RenderGetMetalCommandEncoder SDL_RenderGetMetalCommandEncoder_REAL
 #define SDL_IsAndroidTV SDL_IsAndroidTV_REAL
 #define SDL_IsAndroidTV SDL_IsAndroidTV_REAL
-#define SDL_WinRTGetDeviceFamily SDL_WinRTGetDeviceFamily_REAL
 #define SDL_log10 SDL_log10_REAL
 #define SDL_log10 SDL_log10_REAL
 #define SDL_log10f SDL_log10f_REAL
 #define SDL_log10f SDL_log10f_REAL
 #define SDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex_REAL
 #define SDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex_REAL

+ 0 - 8
src/dynapi/SDL_dynapi_procs.h

@@ -604,11 +604,6 @@ SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetAssertionHandler,(void **a),(a),retu
 SDL_DYNAPI_PROC(SDL_bool,SDL_DXGIGetOutputInfo,(int a,int *b, int *c),(a,b,c),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_DXGIGetOutputInfo,(int a,int *b, int *c),(a,b,c),return)
 #endif
 #endif
 SDL_DYNAPI_PROC(SDL_bool,SDL_RenderIsClipEnabled,(SDL_Renderer *a),(a),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_RenderIsClipEnabled,(SDL_Renderer *a),(a),return)
-#ifdef __WINRT__
-SDL_DYNAPI_PROC(int,SDL_WinRTRunApp,(int a, char **b, void *c),(a,b,c),return)
-SDL_DYNAPI_PROC(const wchar_t*,SDL_WinRTGetFSPathUNICODE,(SDL_WinRT_Path a),(a),return)
-SDL_DYNAPI_PROC(const char*,SDL_WinRTGetFSPathUTF8,(SDL_WinRT_Path a),(a),return)
-#endif
 SDL_DYNAPI_PROC(int,SDL_WarpMouseGlobal,(int a, int b),(a,b),return)
 SDL_DYNAPI_PROC(int,SDL_WarpMouseGlobal,(int a, int b),(a,b),return)
 SDL_DYNAPI_PROC(float,SDL_sqrtf,(float a),(a),return)
 SDL_DYNAPI_PROC(float,SDL_sqrtf,(float a),(a),return)
 SDL_DYNAPI_PROC(double,SDL_tan,(double a),(a),return)
 SDL_DYNAPI_PROC(double,SDL_tan,(double a),(a),return)
@@ -700,9 +695,6 @@ SDL_DYNAPI_PROC(SDL_YUV_CONVERSION_MODE,SDL_GetYUVConversionMode,(void),(),retur
 SDL_DYNAPI_PROC(SDL_YUV_CONVERSION_MODE,SDL_GetYUVConversionModeForResolution,(int a, int b),(a,b),return)
 SDL_DYNAPI_PROC(SDL_YUV_CONVERSION_MODE,SDL_GetYUVConversionModeForResolution,(int a, int b),(a,b),return)
 SDL_DYNAPI_PROC(void*,SDL_RenderGetMetalLayer,(SDL_Renderer *a),(a),return)
 SDL_DYNAPI_PROC(void*,SDL_RenderGetMetalLayer,(SDL_Renderer *a),(a),return)
 SDL_DYNAPI_PROC(void*,SDL_RenderGetMetalCommandEncoder,(SDL_Renderer *a),(a),return)
 SDL_DYNAPI_PROC(void*,SDL_RenderGetMetalCommandEncoder,(SDL_Renderer *a),(a),return)
-#ifdef __WINRT__
-SDL_DYNAPI_PROC(SDL_WinRT_DeviceFamily,SDL_WinRTGetDeviceFamily,(void),(),return)
-#endif
 #ifdef __ANDROID__
 #ifdef __ANDROID__
 SDL_DYNAPI_PROC(SDL_bool,SDL_IsAndroidTV,(void),(),return)
 SDL_DYNAPI_PROC(SDL_bool,SDL_IsAndroidTV,(void),(),return)
 #endif
 #endif

+ 0 - 3
src/file/SDL_rwops.c

@@ -593,9 +593,6 @@ SDL_RWFromFile(const char *file, const char *mode)
     {
     {
         #if __APPLE__ && !SDL_FILE_DISABLED // TODO: add dummy?
         #if __APPLE__ && !SDL_FILE_DISABLED // TODO: add dummy?
         FILE *fp = SDL_OpenFPFromBundleOrFallback(file, mode);
         FILE *fp = SDL_OpenFPFromBundleOrFallback(file, mode);
-        #elif __WINRT__
-        FILE *fp = NULL;
-        fopen_s(&fp, file, mode);
         #elif __3DS__
         #elif __3DS__
         FILE *fp = N3DS_FileOpen(file, mode);
         FILE *fp = N3DS_FileOpen(file, mode);
         #else
         #else

+ 0 - 242
src/filesystem/winrt/SDL_sysfilesystem.cpp

@@ -1,242 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-/* TODO, WinRT: remove the need to compile this with C++/CX (/ZW) extensions, and if possible, without C++ at all
-*/
-
-#ifdef __WINRT__
-
-extern "C" {
-#include "SDL_filesystem.h"
-#include "SDL_error.h"
-#include "SDL_hints.h"
-#include "SDL_stdinc.h"
-#include "SDL_system.h"
-#include "../../core/windows/SDL_windows.h"
-}
-
-#include <string>
-#include <unordered_map>
-
-using namespace std;
-using namespace Windows::Storage;
-
-extern "C" const wchar_t *
-SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType)
-{
-    switch (pathType) {
-        case SDL_WINRT_PATH_INSTALLED_LOCATION:
-        {
-            static wstring path;
-            if (path.empty()) {
-#if defined(NTDDI_WIN10_19H1) && (NTDDI_VERSION >= NTDDI_WIN10_19H1) && (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) /* Only PC supports mods */
-                /* Windows 1903 supports mods, via the EffectiveLocation API */
-                if (Windows::Foundation::Metadata::ApiInformation::IsApiContractPresent("Windows.Foundation.UniversalApiContract", 8, 0)) {
-                    path = Windows::ApplicationModel::Package::Current->EffectiveLocation->Path->Data();
-                } else {
-                    path = Windows::ApplicationModel::Package::Current->InstalledLocation->Path->Data();
-                }
-#else
-                path = Windows::ApplicationModel::Package::Current->InstalledLocation->Path->Data();
-#endif
-            }
-            return path.c_str();
-        }
-
-        case SDL_WINRT_PATH_LOCAL_FOLDER:
-        {
-            static wstring path;
-            if (path.empty()) {
-                path = ApplicationData::Current->LocalFolder->Path->Data();
-            }
-            return path.c_str();
-        }
-
-#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION > NTDDI_WIN8)
-        case SDL_WINRT_PATH_ROAMING_FOLDER:
-        {
-            static wstring path;
-            if (path.empty()) {
-                path = ApplicationData::Current->RoamingFolder->Path->Data();
-            }
-            return path.c_str();
-        }
-
-        case SDL_WINRT_PATH_TEMP_FOLDER:
-        {
-            static wstring path;
-            if (path.empty()) {
-                path = ApplicationData::Current->TemporaryFolder->Path->Data();
-            }
-            return path.c_str();
-        }
-#endif
-
-        default:
-            break;
-    }
-
-    SDL_Unsupported();
-    return NULL;
-}
-
-extern "C" const char *
-SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType)
-{
-    typedef unordered_map<SDL_WinRT_Path, string> UTF8PathMap;
-    static UTF8PathMap utf8Paths;
-
-    UTF8PathMap::iterator searchResult = utf8Paths.find(pathType);
-    if (searchResult != utf8Paths.end()) {
-        return searchResult->second.c_str();
-    }
-
-    const wchar_t * ucs2Path = SDL_WinRTGetFSPathUNICODE(pathType);
-    if (!ucs2Path) {
-        return NULL;
-    }
-
-    char * utf8Path = WIN_StringToUTF8(ucs2Path);
-    utf8Paths[pathType] = utf8Path;
-    SDL_free(utf8Path);
-    return utf8Paths[pathType].c_str();
-}
-
-extern "C" char *
-SDL_GetBasePath(void)
-{
-    const char * srcPath = SDL_WinRTGetFSPathUTF8(SDL_WINRT_PATH_INSTALLED_LOCATION);
-    size_t destPathLen;
-    char * destPath = NULL;
-
-    if (!srcPath) {
-        SDL_SetError("Couldn't locate our basepath: %s", SDL_GetError());
-        return NULL;
-    }
-
-    destPathLen = SDL_strlen(srcPath) + 2;
-    destPath = (char *) SDL_malloc(destPathLen);
-    if (!destPath) {
-        SDL_OutOfMemory();
-        return NULL;
-    }
-
-    SDL_snprintf(destPath, destPathLen, "%s\\", srcPath);
-    return destPath;
-}
-
-extern "C" char *
-SDL_GetPrefPath(const char *org, const char *app)
-{
-    /* WinRT note: The 'SHGetFolderPath' API that is used in Windows 7 and
-     * earlier is not available on WinRT or Windows Phone.  WinRT provides
-     * a similar API, but SHGetFolderPath can't be called, at least not
-     * without violating Microsoft's app-store requirements.
-     */
-
-    const WCHAR * srcPath = NULL;
-    WCHAR path[MAX_PATH];
-    char *retval = NULL;
-    WCHAR* worg = NULL;
-    WCHAR* wapp = NULL;
-    size_t new_wpath_len = 0;
-    BOOL api_result = FALSE;
-
-    if (!app) {
-        SDL_InvalidParamError("app");
-        return NULL;
-    }
-    if (!org) {
-        org = "";
-    }
-
-    srcPath = SDL_WinRTGetFSPathUNICODE(SDL_WINRT_PATH_LOCAL_FOLDER);
-    if ( ! srcPath) {
-        SDL_SetError("Unable to find a source path");
-        return NULL;
-    }
-
-    if (SDL_wcslen(srcPath) >= MAX_PATH) {
-        SDL_SetError("Path too long.");
-        return NULL;
-    }
-    SDL_wcslcpy(path, srcPath, SDL_arraysize(path));
-
-    worg = WIN_UTF8ToString(org);
-    if (worg == NULL) {
-        SDL_OutOfMemory();
-        return NULL;
-    }
-
-    wapp = WIN_UTF8ToString(app);
-    if (wapp == NULL) {
-        SDL_free(worg);
-        SDL_OutOfMemory();
-        return NULL;
-    }
-
-    new_wpath_len = SDL_wcslen(worg) + SDL_wcslen(wapp) + SDL_wcslen(path) + 3;
-
-    if ((new_wpath_len + 1) > MAX_PATH) {
-        SDL_free(worg);
-        SDL_free(wapp);
-        SDL_SetError("Path too long.");
-        return NULL;
-    }
-
-    if (*worg) {
-        SDL_wcslcat(path, L"\\", new_wpath_len + 1);
-        SDL_wcslcat(path, worg, new_wpath_len + 1);
-        SDL_free(worg);
-    }
-
-    api_result = CreateDirectoryW(path, NULL);
-    if (api_result == FALSE) {
-        if (GetLastError() != ERROR_ALREADY_EXISTS) {
-            SDL_free(wapp);
-            WIN_SetError("Couldn't create a prefpath.");
-            return NULL;
-        }
-    }
-
-    SDL_wcslcat(path, L"\\", new_wpath_len + 1);
-    SDL_wcslcat(path, wapp, new_wpath_len + 1);
-    SDL_free(wapp);
-
-    api_result = CreateDirectoryW(path, NULL);
-    if (api_result == FALSE) {
-        if (GetLastError() != ERROR_ALREADY_EXISTS) {
-            WIN_SetError("Couldn't create a prefpath.");
-            return NULL;
-        }
-    }
-
-    SDL_wcslcat(path, L"\\", new_wpath_len + 1);
-
-    retval = WIN_StringToUTF8(path);
-
-    return retval;
-}
-
-#endif /* __WINRT__ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 4
src/joystick/SDL_joystick.c

@@ -436,9 +436,6 @@ SDL_JoystickGetDevicePlayerIndex(int device_index)
 static SDL_bool
 static SDL_bool
 SDL_JoystickAxesCenteredAtZero(SDL_Joystick *joystick)
 SDL_JoystickAxesCenteredAtZero(SDL_Joystick *joystick)
 {
 {
-#ifdef __WINRT__
-    return SDL_TRUE;
-#else
     static Uint32 zero_centered_joysticks[] = {
     static Uint32 zero_centered_joysticks[] = {
         MAKE_VIDPID(0x0e8f, 0x3013),    /* HuiJia SNES USB adapter */
         MAKE_VIDPID(0x0e8f, 0x3013),    /* HuiJia SNES USB adapter */
         MAKE_VIDPID(0x05a0, 0x3232),    /* 8Bitdo Zero Gamepad */
         MAKE_VIDPID(0x05a0, 0x3232),    /* 8Bitdo Zero Gamepad */
@@ -461,7 +458,6 @@ SDL_JoystickAxesCenteredAtZero(SDL_Joystick *joystick)
         }
         }
     }
     }
     return SDL_FALSE;
     return SDL_FALSE;
-#endif /* __WINRT__ */
 }
 }
 
 
 /*
 /*

+ 0 - 5
src/joystick/windows/SDL_rawinputjoystick.c

@@ -577,13 +577,8 @@ RAWINPUT_InitWindowsGamingInput(RAWINPUT_DeviceContext *ctx)
             typedef HRESULT (WINAPI *WindowsCreateStringReference_t)(PCWSTR sourceString, UINT32 length, HSTRING_HEADER *hstringHeader, HSTRING* string);
             typedef HRESULT (WINAPI *WindowsCreateStringReference_t)(PCWSTR sourceString, UINT32 length, HSTRING_HEADER *hstringHeader, HSTRING* string);
             typedef HRESULT (WINAPI *RoGetActivationFactory_t)(HSTRING activatableClassId, REFIID iid, void** factory);
             typedef HRESULT (WINAPI *RoGetActivationFactory_t)(HSTRING activatableClassId, REFIID iid, void** factory);
 
 
-#ifdef __WINRT__
-            WindowsCreateStringReference_t WindowsCreateStringReferenceFunc = WindowsCreateStringReference;
-            RoGetActivationFactory_t RoGetActivationFactoryFunc = RoGetActivationFactory;
-#else
             WindowsCreateStringReference_t WindowsCreateStringReferenceFunc = (WindowsCreateStringReference_t)WIN_LoadComBaseFunction("WindowsCreateStringReference");
             WindowsCreateStringReference_t WindowsCreateStringReferenceFunc = (WindowsCreateStringReference_t)WIN_LoadComBaseFunction("WindowsCreateStringReference");
             RoGetActivationFactory_t RoGetActivationFactoryFunc = (RoGetActivationFactory_t)WIN_LoadComBaseFunction("RoGetActivationFactory");
             RoGetActivationFactory_t RoGetActivationFactoryFunc = (RoGetActivationFactory_t)WIN_LoadComBaseFunction("RoGetActivationFactory");
-#endif
             if (WindowsCreateStringReferenceFunc && RoGetActivationFactoryFunc) {
             if (WindowsCreateStringReferenceFunc && RoGetActivationFactoryFunc) {
                 PCWSTR pNamespace = L"Windows.Gaming.Input.Gamepad";
                 PCWSTR pNamespace = L"Windows.Gaming.Input.Gamepad";
                 HSTRING_HEADER hNamespaceStringHeader;
                 HSTRING_HEADER hNamespaceStringHeader;

+ 5 - 22
src/joystick/windows/SDL_windows_gaming_input.c

@@ -282,17 +282,9 @@ static HRESULT STDMETHODCALLTYPE IEventHandler_CRawGameControllerVtbl_InvokeAdde
             typedef PCWSTR (WINAPI *WindowsGetStringRawBuffer_t)(HSTRING string, UINT32 *length);
             typedef PCWSTR (WINAPI *WindowsGetStringRawBuffer_t)(HSTRING string, UINT32 *length);
             typedef HRESULT (WINAPI *WindowsDeleteString_t)(HSTRING string);
             typedef HRESULT (WINAPI *WindowsDeleteString_t)(HSTRING string);
 
 
-            WindowsGetStringRawBuffer_t WindowsGetStringRawBufferFunc = NULL;
-            WindowsDeleteString_t WindowsDeleteStringFunc = NULL;
-#ifdef __WINRT__
-            WindowsGetStringRawBufferFunc = WindowsGetStringRawBuffer;
-            WindowsDeleteStringFunc = WindowsDeleteString;
-#else
-            {
-                WindowsGetStringRawBufferFunc = (WindowsGetStringRawBuffer_t)WIN_LoadComBaseFunction("WindowsGetStringRawBuffer");
-                WindowsDeleteStringFunc = (WindowsDeleteString_t)WIN_LoadComBaseFunction("WindowsDeleteString");
-            }
-#endif /* __WINRT__ */
+            WindowsGetStringRawBuffer_t WindowsGetStringRawBufferFunc = (WindowsGetStringRawBuffer_t)WIN_LoadComBaseFunction("WindowsGetStringRawBuffer");
+            WindowsDeleteString_t WindowsDeleteStringFunc = (WindowsDeleteString_t)WIN_LoadComBaseFunction("WindowsDeleteString");
+
             if (WindowsGetStringRawBufferFunc && WindowsDeleteStringFunc) {
             if (WindowsGetStringRawBufferFunc && WindowsDeleteStringFunc) {
                 HSTRING hString;
                 HSTRING hString;
                 hr = __x_ABI_CWindows_CGaming_CInput_CIRawGameController2_get_DisplayName(controller2, &hString);
                 hr = __x_ABI_CWindows_CGaming_CInput_CIRawGameController2_get_DisplayName(controller2, &hString);
@@ -484,7 +476,6 @@ WGI_JoystickInit(void)
     }
     }
     wgi.ro_initialized = SDL_TRUE;
     wgi.ro_initialized = SDL_TRUE;
 
 
-#ifndef __WINRT__
     {
     {
         /* There seems to be a bug in Windows where a dependency of WGI can be unloaded from memory prior to WGI itself.
         /* There seems to be a bug in Windows where a dependency of WGI can be unloaded from memory prior to WGI itself.
          * This results in Windows_Gaming_Input!GameController::~GameController() invoking an unloaded DLL and crashing.
          * This results in Windows_Gaming_Input!GameController::~GameController() invoking an unloaded DLL and crashing.
@@ -505,17 +496,9 @@ WGI_JoystickInit(void)
             }
             }
         }
         }
     }
     }
-#endif
 
 
-#ifdef __WINRT__
-    WindowsCreateStringReferenceFunc = WindowsCreateStringReference;
-    RoGetActivationFactoryFunc = RoGetActivationFactory;
-#else
-    {
-        WindowsCreateStringReferenceFunc = (WindowsCreateStringReference_t)WIN_LoadComBaseFunction("WindowsCreateStringReference");
-        RoGetActivationFactoryFunc = (RoGetActivationFactory_t)WIN_LoadComBaseFunction("RoGetActivationFactory");
-    }
-#endif /* __WINRT__ */
+    WindowsCreateStringReferenceFunc = (WindowsCreateStringReference_t)WIN_LoadComBaseFunction("WindowsCreateStringReference");
+    RoGetActivationFactoryFunc = (RoGetActivationFactory_t)WIN_LoadComBaseFunction("RoGetActivationFactory");
     if (WindowsCreateStringReferenceFunc && RoGetActivationFactoryFunc) {
     if (WindowsCreateStringReferenceFunc && RoGetActivationFactoryFunc) {
         PCWSTR pNamespace;
         PCWSTR pNamespace;
         HSTRING_HEADER hNamespaceStringHeader;
         HSTRING_HEADER hNamespaceStringHeader;

+ 5 - 9
src/joystick/windows/SDL_windowsjoystick.c

@@ -41,7 +41,7 @@
 #include "../SDL_sysjoystick.h"
 #include "../SDL_sysjoystick.h"
 #include "../../thread/SDL_systhread.h"
 #include "../../thread/SDL_systhread.h"
 #include "../../core/windows/SDL_windows.h"
 #include "../../core/windows/SDL_windows.h"
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
 #include <dbt.h>
 #include <dbt.h>
 #endif
 #endif
 
 
@@ -146,7 +146,7 @@ static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2L, 0xF16F, 0x11CF, { 0x88, 0xCB,
 
 
 JoyStick_DeviceData *SYS_Joystick;    /* array to hold joystick ID values */
 JoyStick_DeviceData *SYS_Joystick;    /* array to hold joystick ID values */
 
 
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
 static HMODULE cfgmgr32_lib_handle;
 static HMODULE cfgmgr32_lib_handle;
 static CM_Register_NotificationFunc CM_Register_Notification;
 static CM_Register_NotificationFunc CM_Register_Notification;
 static CM_Unregister_NotificationFunc CM_Unregister_Notification;
 static CM_Unregister_NotificationFunc CM_Unregister_Notification;
@@ -332,10 +332,8 @@ SDL_WaitForDeviceNotification(SDL_DeviceNotificationData *data, SDL_mutex *mutex
     return (lastret != -1) ? SDL_TRUE : SDL_FALSE;
     return (lastret != -1) ? SDL_TRUE : SDL_FALSE;
 }
 }
 
 
-#endif /* !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__) */
-
+#endif /* !defined(__XBOXONE__) && !defined(__XBOXSERIES__) */
 
 
-#if !defined(__WINRT__)
 
 
 #if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
 #if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
 static SDL_DeviceNotificationData s_notification_data;
 static SDL_DeviceNotificationData s_notification_data;
@@ -445,8 +443,6 @@ SDL_StopJoystickThread(void)
     s_joystickThread = NULL;
     s_joystickThread = NULL;
 }
 }
 
 
-#endif /* !defined(__WINRT__) */
-
 void WINDOWS_AddJoystickDevice(JoyStick_DeviceData *device)
 void WINDOWS_AddJoystickDevice(JoyStick_DeviceData *device)
 {
 {
     device->send_add_event = SDL_TRUE;
     device->send_add_event = SDL_TRUE;
@@ -479,7 +475,7 @@ WINDOWS_JoystickInit(void)
 
 
     WINDOWS_JoystickDetect();
     WINDOWS_JoystickDetect();
 
 
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
     SDL_CreateDeviceNotificationFunc();
     SDL_CreateDeviceNotificationFunc();
 
 
     s_bJoystickThread = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_THREAD, SDL_FALSE);
     s_bJoystickThread = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_THREAD, SDL_FALSE);
@@ -771,7 +767,7 @@ WINDOWS_JoystickQuit(void)
     }
     }
     SYS_Joystick = NULL;
     SYS_Joystick = NULL;
 
 
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
     if (s_bJoystickThread) {
     if (s_bJoystickThread) {
         SDL_StopJoystickThread();
         SDL_StopJoystickThread();
     } else {
     } else {

+ 3 - 7
src/joystick/windows/SDL_xinputjoystick.c

@@ -46,11 +46,7 @@ static char *s_arrXInputDevicePath[XUSER_MAX_COUNT];
 static SDL_bool
 static SDL_bool
 SDL_XInputUseOldJoystickMapping()
 SDL_XInputUseOldJoystickMapping()
 {
 {
-#ifdef __WINRT__
-    /* TODO: remove this __WINRT__ block, but only after integrating with UWP/WinRT's HID API */
-    /* FIXME: Why are Win8/10 different here? -flibit */
-    return (NTDDI_VERSION < NTDDI_WIN10);
-#elif defined(__XBOXONE__) || defined(__XBOXSERIES__)
+#if defined(__XBOXONE__) || defined(__XBOXSERIES__)
     return SDL_FALSE;
     return SDL_FALSE;
 #else
 #else
     static int s_XInputUseOldJoystickMapping = -1;
     static int s_XInputUseOldJoystickMapping = -1;
@@ -133,7 +129,7 @@ GetXInputName(const Uint8 userid, BYTE SubType)
 static void
 static void
 GuessXInputDevice(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Uint16 *pVersion)
 GuessXInputDevice(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Uint16 *pVersion)
 {
 {
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__) /* TODO: remove this ifndef __WINRT__ block, but only after integrating with UWP/WinRT's HID API */
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__) /* TODO: remove this ifndef __WINRT__ block, but only after integrating with UWP/WinRT's HID API */
     PRAWINPUTDEVICELIST devices = NULL;
     PRAWINPUTDEVICELIST devices = NULL;
     UINT i, j, device_count = 0;
     UINT i, j, device_count = 0;
 
 
@@ -231,7 +227,7 @@ GuessXInputDevice(Uint8 userid, Uint16 *pVID, Uint16 *pPID, Uint16 *pVersion)
         }
         }
     }
     }
     SDL_free(devices);
     SDL_free(devices);
-#endif  /* !__WINRT__ */
+#endif
 
 
     /* The device wasn't in the raw HID device list, it's probably Bluetooth */
     /* The device wasn't in the raw HID device list, it's probably Bluetooth */
     *pVID = 0x045e; /* Microsoft */
     *pVID = 0x045e; /* Microsoft */

+ 0 - 8
src/loadso/windows/SDL_sysloadso.c

@@ -40,15 +40,7 @@ SDL_LoadObject(const char *sofile)
         return NULL;
         return NULL;
     }
     }
     tstr = WIN_UTF8ToString(sofile);
     tstr = WIN_UTF8ToString(sofile);
-#ifdef __WINRT__
-    /* WinRT only publicly supports LoadPackagedLibrary() for loading .dll
-       files.  LoadLibrary() is a private API, and not available for apps
-       (that can be published to MS' Windows Store.)
-    */
-    handle = (void *) LoadPackagedLibrary(tstr, 0);
-#else
     handle = (void *) LoadLibrary(tstr);
     handle = (void *) LoadLibrary(tstr);
-#endif
     SDL_free(tstr);
     SDL_free(tstr);
 
 
     /* Generate an error message if all loads failed */
     /* Generate an error message if all loads failed */

+ 0 - 58
src/locale/winrt/SDL_syslocale.c

@@ -1,58 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include <Windows.h>
-
-#include "../../SDL_internal.h"
-#include "../SDL_syslocale.h"
-
-/*using namespace Windows::Graphics::Display;*/
-#include <wchar.h>
-
-void
-SDL_SYS_GetPreferredLocales(char *buf, size_t buflen)
-{
-    WCHAR wbuffer[128] = L"";
-    int ret = 0;
-
-    /* !!! FIXME: do we not have GetUserPreferredUILanguages on WinPhone or UWP? */
-# if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    ret = GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_SNAME, wbuffer, SDL_arraysize(wbuffer));
-# else
-    ret = GetSystemDefaultLocaleName(wbuffer, SDL_arraysize(wbuffer));
-# endif
-
-    if (ret > 0)
-    {
-        /* Need to convert LPWSTR to LPSTR, that is wide char to char. */
-        int i;
-
-        if ( ((size_t) ret) >= (buflen - 1) ) {
-            ret = (int) (buflen - 1);
-        }
-        for (i = 0; i < ret; i++) {
-            buf[i] = (char) wbuffer[i];  /* assume this was ASCII anyhow. */
-        }
-    }
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
-

BIN
src/main/winrt/SDL3-WinRTResource_BlankCursor.cur


+ 0 - 3
src/main/winrt/SDL3-WinRTResources.rc

@@ -1,3 +0,0 @@
-#include "winres.h"
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-5000 CURSOR "SDL3-WinRTResource_BlankCursor.cur"

+ 0 - 54
src/main/winrt/SDL_winrt_main_NonXAML.cpp

@@ -1,54 +0,0 @@
-/*
-    SDL_winrt_main_NonXAML.cpp, placed in the public domain by David Ludwig  3/13/14
-*/
-
-#include "SDL_main.h"
-#include <wrl.h>
-
-/* At least one file in any SDL/WinRT app appears to require compilation
-   with C++/CX, otherwise a Windows Metadata file won't get created, and
-   an APPX0702 build error can appear shortly after linking.
-
-   The following set of preprocessor code forces this file to be compiled
-   as C++/CX, which appears to cause Visual C++ 2012's build tools to
-   create this .winmd file, and will help allow builds of SDL/WinRT apps
-   to proceed without error.
-
-   If other files in an app's project enable C++/CX compilation, then it might
-   be possible for SDL_winrt_main_NonXAML.cpp to be compiled without /ZW,
-   for Visual C++'s build tools to create a winmd file, and for the app to
-   build without APPX0702 errors.  In this case, if
-   SDL_WINRT_METADATA_FILE_AVAILABLE is defined as a C/C++ macro, then
-   the #error (to force C++/CX compilation) will be disabled.
-
-   Please note that /ZW can be specified on a file-by-file basis.  To do this,
-   right click on the file in Visual C++, click Properties, then change the
-   setting through the dialog that comes up.
-*/
-#ifndef SDL_WINRT_METADATA_FILE_AVAILABLE
-#ifndef __cplusplus_winrt
-#error SDL_winrt_main_NonXAML.cpp must be compiled with /ZW, otherwise build errors due to missing .winmd files can occur.
-#endif
-#endif
-
-/* Prevent MSVC++ from warning about threading models when defining our
-   custom WinMain.  The threading model will instead be set via a direct
-   call to Windows::Foundation::Initialize (rather than via an attributed
-   function).
-
-   To note, this warning (C4447) does not seem to come up unless this file
-   is compiled with C++/CX enabled (via the /ZW compiler flag).
-*/
-#ifdef _MSC_VER
-#pragma warning(disable:4447)
-#endif
-
-/* Make sure the function to initialize the Windows Runtime gets linked in. */
-#ifdef _MSC_VER
-#pragma comment(lib, "runtimeobject.lib")
-#endif
-
-int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
-{
-    return SDL_WinRTRunApp(SDL_main, NULL);
-}

+ 0 - 41
src/misc/winrt/SDL_sysurl.cpp

@@ -1,41 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#include "../SDL_sysurl.h"
-#include "../../core/windows/SDL_windows.h"
-
-int
-SDL_SYS_OpenURL(const char *url)
-{
-    WCHAR *wurl = WIN_UTF8ToStringW(url);
-    if (!wurl) {
-        return SDL_OutOfMemory();
-    }
-    auto strurl = ref new Platform::String(wurl);
-    SDL_free(wurl);
-
-    auto uri = ref new Windows::Foundation::Uri(strurl);
-    Windows::System::Launcher::LaunchUriAsync(uri);
-    return 0;  // oh well, we're not waiting on an async task here.
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
-

+ 0 - 3
src/power/SDL_power.c

@@ -74,9 +74,6 @@ static SDL_GetPowerInfo_Impl implementations[] = {
 #ifdef SDL_POWER_N3DS        /* handles N3DS. */
 #ifdef SDL_POWER_N3DS        /* handles N3DS. */
     SDL_GetPowerInfo_N3DS,
     SDL_GetPowerInfo_N3DS,
 #endif
 #endif
-#ifdef SDL_POWER_WINRT          /* handles WinRT */
-    SDL_GetPowerInfo_WinRT,
-#endif
 #ifdef SDL_POWER_EMSCRIPTEN     /* handles Emscripten */
 #ifdef SDL_POWER_EMSCRIPTEN     /* handles Emscripten */
     SDL_GetPowerInfo_Emscripten,
     SDL_GetPowerInfo_Emscripten,
 #endif
 #endif

+ 0 - 1
src/power/SDL_syspower.h

@@ -40,7 +40,6 @@ SDL_bool SDL_GetPowerInfo_Android(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_PSP(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_PSP(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_VITA(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_VITA(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_N3DS(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_N3DS(SDL_PowerState *, int *, int *);
-SDL_bool SDL_GetPowerInfo_WinRT(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_Emscripten(SDL_PowerState *, int *, int *);
 SDL_bool SDL_GetPowerInfo_Emscripten(SDL_PowerState *, int *, int *);
 
 
 /* this one is static in SDL_power.c */
 /* this one is static in SDL_power.c */

+ 0 - 44
src/power/winrt/SDL_syspower.cpp

@@ -1,44 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#ifndef SDL_POWER_DISABLED
-#if SDL_POWER_WINRT
-
-#include "SDL_power.h"
-
-extern "C"
-SDL_bool
-SDL_GetPowerInfo_WinRT(SDL_PowerState * state, int *seconds, int *percent)
-{
-    /* TODO, WinRT: Battery info is available on at least one WinRT platform (Windows Phone 8).  Implement SDL_GetPowerInfo_WinRT as appropriate. */
-    /* Notes:
-         - the Win32 function, GetSystemPowerStatus, is not available for use on WinRT
-         - Windows Phone 8 has a 'Battery' class, which is documented as available for C++
-             - More info on WP8's Battery class can be found at http://msdn.microsoft.com/library/windowsphone/develop/jj207231
-    */
-    return SDL_FALSE;
-}
-
-#endif /* SDL_POWER_WINRT */
-#endif /* SDL_POWER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 1 - 56
src/render/direct3d11/SDL_render_d3d11.c

@@ -27,9 +27,7 @@
 
 
 #define COBJMACROS
 #define COBJMACROS
 #include "../../core/windows/SDL_windows.h"
 #include "../../core/windows/SDL_windows.h"
-#if !defined(__WINRT__)
 #include "../../video/windows/SDL_windowswindow.h"
 #include "../../video/windows/SDL_windowswindow.h"
-#endif
 #include "SDL_hints.h"
 #include "SDL_hints.h"
 #include "SDL_loadso.h"
 #include "SDL_loadso.h"
 #include "SDL_syswm.h"
 #include "SDL_syswm.h"
@@ -40,22 +38,6 @@
 
 
 #include "SDL_shaders_d3d11.h"
 #include "SDL_shaders_d3d11.h"
 
 
-#ifdef __WINRT__
-
-#if NTDDI_VERSION > NTDDI_WIN8
-#include <DXGI1_3.h>
-#endif
-
-#include "SDL_render_winrt.h"
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-#include <windows.ui.xaml.media.dxinterop.h>
-/* TODO, WinRT, XAML: get the ISwapChainBackgroundPanelNative from something other than a global var */
-extern ISwapChainBackgroundPanelNative * WINRT_GlobalSwapChainBackgroundPanelNative;
-#endif  /* WINAPI_FAMILY == WINAPI_FAMILY_APP */
-
-#endif  /* __WINRT__ */
-
 
 
 #if defined(_MSC_VER) && !defined(__clang__)
 #if defined(_MSC_VER) && !defined(__clang__)
 #define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
 #define SDL_COMPOSE_ERROR(str) __FUNCTION__ ", " str
@@ -187,9 +169,6 @@ typedef struct
 
 
 static const GUID SDL_IID_IDXGIFactory2 = { 0x50c83a1c, 0xe072, 0x4c48, { 0x87, 0xb0, 0x36, 0x30, 0xfa, 0x36, 0xa6, 0xd0 } };
 static const GUID SDL_IID_IDXGIFactory2 = { 0x50c83a1c, 0xe072, 0x4c48, { 0x87, 0xb0, 0x36, 0x30, 0xfa, 0x36, 0xa6, 0xd0 } };
 static const GUID SDL_IID_IDXGIDevice1 = { 0x77db970f, 0x6276, 0x48ba, { 0xba, 0x28, 0x07, 0x01, 0x43, 0xb4, 0x39, 0x2c } };
 static const GUID SDL_IID_IDXGIDevice1 = { 0x77db970f, 0x6276, 0x48ba, { 0xba, 0x28, 0x07, 0x01, 0x43, 0xb4, 0x39, 0x2c } };
-#if defined(__WINRT__) && NTDDI_VERSION > NTDDI_WIN8
-static const GUID SDL_IID_IDXGIDevice3 = { 0x6007896c, 0x3244, 0x4afd, { 0xbf, 0x18, 0xa6, 0xd3, 0xbe, 0xda, 0x50, 0x23 } };
-#endif
 static const GUID SDL_IID_ID3D11Texture2D = { 0x6f15aaf2, 0xd208, 0x4e89, { 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c } };
 static const GUID SDL_IID_ID3D11Texture2D = { 0x6f15aaf2, 0xd208, 0x4e89, { 0x9a, 0xb4, 0x48, 0x95, 0x35, 0xd3, 0x4f, 0x9c } };
 static const GUID SDL_IID_ID3D11Device1 = { 0xa04bfb29, 0x08ef, 0x43d6, { 0xa4, 0x9c, 0xa9, 0xbd, 0xbd, 0xcb, 0xe6, 0x86 } };
 static const GUID SDL_IID_ID3D11Device1 = { 0xa04bfb29, 0x08ef, 0x43d6, { 0xa4, 0x9c, 0xa9, 0xbd, 0xbd, 0xcb, 0xe6, 0x86 } };
 static const GUID SDL_IID_ID3D11DeviceContext1 = { 0xbb2c6faa, 0xb5fb, 0x4082, { 0x8e, 0x6b, 0x38, 0x8b, 0x8c, 0xfa, 0x90, 0xe1 } };
 static const GUID SDL_IID_ID3D11DeviceContext1 = { 0xbb2c6faa, 0xb5fb, 0x4082, { 0x8e, 0x6b, 0x38, 0x8b, 0x8c, 0xfa, 0x90, 0xe1 } };
@@ -439,10 +418,6 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
     D3D11_SAMPLER_DESC samplerDesc;
     D3D11_SAMPLER_DESC samplerDesc;
     D3D11_RASTERIZER_DESC rasterDesc;
     D3D11_RASTERIZER_DESC rasterDesc;
 
 
-#ifdef __WINRT__
-    CreateDXGIFactoryFunc = CreateDXGIFactory1;
-    D3D11CreateDeviceFunc = D3D11CreateDevice;
-#else
     data->hDXGIMod = SDL_LoadObject("dxgi.dll");
     data->hDXGIMod = SDL_LoadObject("dxgi.dll");
     if (!data->hDXGIMod) {
     if (!data->hDXGIMod) {
         result = E_FAIL;
         result = E_FAIL;
@@ -466,7 +441,6 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
         result = E_FAIL;
         result = E_FAIL;
         goto done;
         goto done;
     }
     }
-#endif /* __WINRT__ */
 
 
     result = CreateDXGIFactoryFunc(&SDL_IID_IDXGIFactory2, (void **)&data->dxgiFactory);
     result = CreateDXGIFactoryFunc(&SDL_IID_IDXGIFactory2, (void **)&data->dxgiFactory);
     if (FAILED(result)) {
     if (FAILED(result)) {
@@ -754,13 +728,8 @@ static HRESULT
 D3D11_CreateSwapChain(SDL_Renderer * renderer, int w, int h)
 D3D11_CreateSwapChain(SDL_Renderer * renderer, int w, int h)
 {
 {
     D3D11_RenderData *data = (D3D11_RenderData *)renderer->driverdata;
     D3D11_RenderData *data = (D3D11_RenderData *)renderer->driverdata;
-#ifdef __WINRT__
-    IUnknown *coreWindow = D3D11_GetCoreWindowFromSDLRenderer(renderer);
-    const BOOL usingXAML = (coreWindow == NULL);
-#else
     IUnknown *coreWindow = NULL;
     IUnknown *coreWindow = NULL;
     const BOOL usingXAML = FALSE;
     const BOOL usingXAML = FALSE;
-#endif
     HRESULT result = S_OK;
     HRESULT result = S_OK;
 
 
     /* Create a swap chain using the same adapter as the existing Direct3D device. */
     /* Create a swap chain using the same adapter as the existing Direct3D device. */
@@ -913,11 +882,7 @@ D3D11_CreateWindowSizeDependentResources(SDL_Renderer * renderer)
     /* The width and height of the swap chain must be based on the display's
     /* The width and height of the swap chain must be based on the display's
      * non-rotated size.
      * non-rotated size.
      */
      */
-#if defined(__WINRT__)
-    SDL_GetWindowSize(renderer->window, &w, &h);
-#else
     SDL_GetWindowSizeInPixels(renderer->window, &w, &h);
     SDL_GetWindowSizeInPixels(renderer->window, &w, &h);
-#endif
     data->rotation = D3D11_GetCurrentRotation();
     data->rotation = D3D11_GetCurrentRotation();
     /* SDL_Log("%s: windowSize={%d,%d}, orientation=%d\n", __FUNCTION__, w, h, (int)data->rotation); */
     /* SDL_Log("%s: windowSize={%d,%d}, orientation=%d\n", __FUNCTION__, w, h, (int)data->rotation); */
     if (D3D11_IsDisplayRotated90Degrees(data->rotation)) {
     if (D3D11_IsDisplayRotated90Degrees(data->rotation)) {
@@ -928,7 +893,7 @@ D3D11_CreateWindowSizeDependentResources(SDL_Renderer * renderer)
 
 
     if (data->swapChain) {
     if (data->swapChain) {
         /* IDXGISwapChain::ResizeBuffers is not available on Windows Phone 8. */
         /* IDXGISwapChain::ResizeBuffers is not available on Windows Phone 8. */
-#if !defined(__WINRT__) || (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
+#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
         /* If the swap chain already exists, resize it. */
         /* If the swap chain already exists, resize it. */
         result = IDXGISwapChain_ResizeBuffers(data->swapChain,
         result = IDXGISwapChain_ResizeBuffers(data->swapChain,
             0,
             0,
@@ -1032,22 +997,6 @@ D3D11_UpdateForWindowSizeChange(SDL_Renderer * renderer)
 void
 void
 D3D11_Trim(SDL_Renderer * renderer)
 D3D11_Trim(SDL_Renderer * renderer)
 {
 {
-#ifdef __WINRT__
-#if NTDDI_VERSION > NTDDI_WIN8
-    D3D11_RenderData *data = (D3D11_RenderData *)renderer->driverdata;
-    HRESULT result = S_OK;
-    IDXGIDevice3 *dxgiDevice = NULL;
-
-    result = ID3D11Device_QueryInterface(data->d3dDevice, &SDL_IID_IDXGIDevice3, &dxgiDevice);
-    if (FAILED(result)) {
-        //WIN_SetErrorFromHRESULT(__FUNCTION__ ", ID3D11Device to IDXGIDevice3", result);
-        return;
-    }
-
-    IDXGIDevice3_Trim(dxgiDevice);
-    SAFE_RELEASE(dxgiDevice);
-#endif
-#endif
 }
 }
 
 
 static void
 static void
@@ -1058,14 +1007,12 @@ D3D11_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
     }
     }
 }
 }
 
 
-#if !defined(__WINRT__)
 static int
 static int
 D3D11_GetOutputSize(SDL_Renderer * renderer, int *w, int *h)
 D3D11_GetOutputSize(SDL_Renderer * renderer, int *w, int *h)
 {
 {
     SDL_GetWindowSizeInPixels(renderer->window, w, h);
     SDL_GetWindowSizeInPixels(renderer->window, w, h);
     return 0;
     return 0;
 }
 }
-#endif
 
 
 static SDL_bool
 static SDL_bool
 D3D11_SupportsBlendMode(SDL_Renderer * renderer, SDL_BlendMode blendMode)
 D3D11_SupportsBlendMode(SDL_Renderer * renderer, SDL_BlendMode blendMode)
@@ -2384,9 +2331,7 @@ D3D11_CreateRenderer(SDL_Window * window, Uint32 flags)
     data->identity = MatrixIdentity();
     data->identity = MatrixIdentity();
 
 
     renderer->WindowEvent = D3D11_WindowEvent;
     renderer->WindowEvent = D3D11_WindowEvent;
-#if !defined(__WINRT__)
     renderer->GetOutputSize = D3D11_GetOutputSize;
     renderer->GetOutputSize = D3D11_GetOutputSize;
-#endif
     renderer->SupportsBlendMode = D3D11_SupportsBlendMode;
     renderer->SupportsBlendMode = D3D11_SupportsBlendMode;
     renderer->CreateTexture = D3D11_CreateTexture;
     renderer->CreateTexture = D3D11_CreateTexture;
     renderer->UpdateTexture = D3D11_UpdateTexture;
     renderer->UpdateTexture = D3D11_UpdateTexture;

+ 0 - 116
src/render/direct3d11/SDL_render_winrt.cpp

@@ -1,116 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-
-#include "SDL_syswm.h"
-#include "../../video/winrt/SDL_winrtvideo_cpp.h"
-extern "C" {
-#include "../SDL_sysrender.h"
-}
-
-#include <windows.ui.core.h>
-#include <windows.graphics.display.h>
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_APP
-#include <windows.ui.xaml.media.dxinterop.h>
-#endif
-
-using namespace Windows::UI::Core;
-using namespace Windows::Graphics::Display;
-
-#include <DXGI.h>
-
-#include "SDL_render_winrt.h"
-
-
-extern "C" void *
-D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer)
-{
-    SDL_Window * sdlWindow = renderer->window;
-    if ( ! renderer->window ) {
-        return NULL;
-    }
-
-    SDL_SysWMinfo sdlWindowInfo;
-    SDL_VERSION(&sdlWindowInfo.version);
-    if ( ! SDL_GetWindowWMInfo(sdlWindow, &sdlWindowInfo) ) {
-        return NULL;
-    }
-
-    if (sdlWindowInfo.subsystem != SDL_SYSWM_WINRT) {
-        return NULL;
-    }
-
-    if (!sdlWindowInfo.info.winrt.window) {
-        return NULL;
-    }
-
-    ABI::Windows::UI::Core::ICoreWindow *coreWindow = NULL;
-    if (FAILED(sdlWindowInfo.info.winrt.window->QueryInterface(&coreWindow))) {
-        return NULL;
-    }
-
-    IUnknown *coreWindowAsIUnknown = NULL;
-    coreWindow->QueryInterface(&coreWindowAsIUnknown);
-    coreWindow->Release();
-
-    return coreWindowAsIUnknown;
-}
-
-extern "C" DXGI_MODE_ROTATION
-D3D11_GetCurrentRotation()
-{
-    const DisplayOrientations currentOrientation = WINRT_DISPLAY_PROPERTY(CurrentOrientation);
-
-    switch (currentOrientation) {
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    /* Windows Phone rotations */
-    case DisplayOrientations::Landscape:
-        return DXGI_MODE_ROTATION_ROTATE90;
-    case DisplayOrientations::Portrait:
-        return DXGI_MODE_ROTATION_IDENTITY;
-    case DisplayOrientations::LandscapeFlipped:
-        return DXGI_MODE_ROTATION_ROTATE270;
-    case DisplayOrientations::PortraitFlipped:
-        return DXGI_MODE_ROTATION_ROTATE180;
-#else
-    /* Non-Windows-Phone rotations (ex: Windows 8, Windows RT) */
-    case DisplayOrientations::Landscape:
-        return DXGI_MODE_ROTATION_IDENTITY;
-    case DisplayOrientations::Portrait:
-        return DXGI_MODE_ROTATION_ROTATE270;
-    case DisplayOrientations::LandscapeFlipped:
-        return DXGI_MODE_ROTATION_ROTATE180;
-    case DisplayOrientations::PortraitFlipped:
-        return DXGI_MODE_ROTATION_ROTATE90;
-#endif /* WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP */
-    }
-
-    return DXGI_MODE_ROTATION_IDENTITY;
-}
-
-
-#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 40
src/render/direct3d11/SDL_render_winrt.h

@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
-
-#include "SDL_render.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void * D3D11_GetCoreWindowFromSDLRenderer(SDL_Renderer * renderer);
-DXGI_MODE_ROTATION D3D11_GetCurrentRotation();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 8
src/render/opengles2/SDL_render_gles2.c

@@ -2152,14 +2152,6 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags)
         goto error;
         goto error;
     }
     }
 
 
-#if __WINRT__
-    /* DLudwig, 2013-11-29: ANGLE for WinRT doesn't seem to work unless VSync
-     * is turned on.  Not doing so will freeze the screen's contents to that
-     * of the first drawn frame.
-     */
-    flags |= SDL_RENDERER_PRESENTVSYNC;
-#endif
-
     if (flags & SDL_RENDERER_PRESENTVSYNC) {
     if (flags & SDL_RENDERER_PRESENTVSYNC) {
         SDL_GL_SetSwapInterval(1);
         SDL_GL_SetSwapInterval(1);
     } else {
     } else {

+ 0 - 31
src/thread/stdcpp/SDL_systhread.cpp

@@ -32,10 +32,6 @@ extern "C" {
 #include <thread>
 #include <thread>
 #include <system_error>
 #include <system_error>
 
 
-#ifdef __WINRT__
-#include <Windows.h>
-#endif
-
 static void
 static void
 RunThread(void *args)
 RunThread(void *args)
 {
 {
@@ -71,9 +67,6 @@ extern "C"
 SDL_threadID
 SDL_threadID
 SDL_ThreadID(void)
 SDL_ThreadID(void)
 {
 {
-#ifdef __WINRT__
-    return GetCurrentThreadId();
-#else
     // HACK: Mimick a thread ID, if one isn't otherwise available.
     // HACK: Mimick a thread ID, if one isn't otherwise available.
     static thread_local SDL_threadID current_thread_id = 0;
     static thread_local SDL_threadID current_thread_id = 0;
     static SDL_threadID next_thread_id = 1;
     static SDL_threadID next_thread_id = 1;
@@ -86,37 +79,13 @@ SDL_ThreadID(void)
     }
     }
 
 
     return current_thread_id;
     return current_thread_id;
-#endif
 }
 }
 
 
 extern "C"
 extern "C"
 int
 int
 SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority)
 SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority)
 {
 {
-#ifdef __WINRT__
-    int value;
-
-    if (priority == SDL_THREAD_PRIORITY_LOW) {
-        value = THREAD_PRIORITY_LOWEST;
-    }
-    else if (priority == SDL_THREAD_PRIORITY_HIGH) {
-        value = THREAD_PRIORITY_HIGHEST;
-    }
-    else if (priority == SDL_THREAD_PRIORITY_TIME_CRITICAL) {
-        // FIXME: WinRT does not support TIME_CRITICAL! -flibit
-        SDL_LogWarn(SDL_LOG_CATEGORY_SYSTEM, "TIME_CRITICAL unsupported, falling back to HIGHEST");
-        value = THREAD_PRIORITY_HIGHEST;
-    }
-    else {
-        value = THREAD_PRIORITY_NORMAL;
-    }
-    if (!SetThreadPriority(GetCurrentThread(), value)) {
-        return WIN_SetError("SetThreadPriority()");
-    }
-    return 0;
-#else
     return SDL_Unsupported();
     return SDL_Unsupported();
-#endif
 }
 }
 
 
 extern "C"
 extern "C"

+ 0 - 12
src/thread/windows/SDL_syscond_cv.c

@@ -58,12 +58,6 @@ typedef struct CONDITION_VARIABLE {
 } CONDITION_VARIABLE, *PCONDITION_VARIABLE;
 } CONDITION_VARIABLE, *PCONDITION_VARIABLE;
 #endif
 #endif
 
 
-#if __WINRT__
-#define pWakeConditionVariable WakeConditionVariable
-#define pWakeAllConditionVariable WakeAllConditionVariable
-#define pSleepConditionVariableSRW SleepConditionVariableSRW
-#define pSleepConditionVariableCS SleepConditionVariableCS
-#else
 typedef VOID(WINAPI *pfnWakeConditionVariable)(PCONDITION_VARIABLE);
 typedef VOID(WINAPI *pfnWakeConditionVariable)(PCONDITION_VARIABLE);
 typedef VOID(WINAPI *pfnWakeAllConditionVariable)(PCONDITION_VARIABLE);
 typedef VOID(WINAPI *pfnWakeAllConditionVariable)(PCONDITION_VARIABLE);
 typedef BOOL(WINAPI *pfnSleepConditionVariableSRW)(PCONDITION_VARIABLE, PSRWLOCK, DWORD, ULONG);
 typedef BOOL(WINAPI *pfnSleepConditionVariableSRW)(PCONDITION_VARIABLE, PSRWLOCK, DWORD, ULONG);
@@ -73,7 +67,6 @@ static pfnWakeConditionVariable pWakeConditionVariable = NULL;
 static pfnWakeAllConditionVariable pWakeAllConditionVariable = NULL;
 static pfnWakeAllConditionVariable pWakeAllConditionVariable = NULL;
 static pfnSleepConditionVariableSRW pSleepConditionVariableSRW = NULL;
 static pfnSleepConditionVariableSRW pSleepConditionVariableSRW = NULL;
 static pfnSleepConditionVariableCS pSleepConditionVariableCS = NULL;
 static pfnSleepConditionVariableCS pSleepConditionVariableCS = NULL;
-#endif
 
 
 typedef struct SDL_cond_cv
 typedef struct SDL_cond_cv
 {
 {
@@ -242,10 +235,6 @@ SDL_CreateCond(void)
             SDL_assert(SDL_mutex_impl_active.Type != SDL_MUTEX_INVALID);
             SDL_assert(SDL_mutex_impl_active.Type != SDL_MUTEX_INVALID);
         }
         }
 
 
-#if __WINRT__
-        /* Link statically on this platform */
-        impl = &SDL_cond_impl_cv;
-#else
         {
         {
             HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
             HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
             if (kernel32) {
             if (kernel32) {
@@ -259,7 +248,6 @@ SDL_CreateCond(void)
                 }
                 }
             }
             }
         }
         }
-#endif
 
 
         SDL_copyp(&SDL_cond_impl_active, impl);
         SDL_copyp(&SDL_cond_impl_active, impl);
     }
     }

+ 0 - 16
src/thread/windows/SDL_sysmutex.c

@@ -44,19 +44,12 @@ SDL_mutex_impl_t SDL_mutex_impl_active = {0};
  * Implementation based on Slim Reader/Writer (SRW) Locks for Win 7 and newer.
  * Implementation based on Slim Reader/Writer (SRW) Locks for Win 7 and newer.
  */
  */
 
 
-#if __WINRT__
-/* Functions are guaranteed to be available */
-#define pReleaseSRWLockExclusive ReleaseSRWLockExclusive
-#define pAcquireSRWLockExclusive AcquireSRWLockExclusive
-#define pTryAcquireSRWLockExclusive TryAcquireSRWLockExclusive
-#else
 typedef VOID(WINAPI *pfnReleaseSRWLockExclusive)(PSRWLOCK);
 typedef VOID(WINAPI *pfnReleaseSRWLockExclusive)(PSRWLOCK);
 typedef VOID(WINAPI *pfnAcquireSRWLockExclusive)(PSRWLOCK);
 typedef VOID(WINAPI *pfnAcquireSRWLockExclusive)(PSRWLOCK);
 typedef BOOLEAN(WINAPI *pfnTryAcquireSRWLockExclusive)(PSRWLOCK);
 typedef BOOLEAN(WINAPI *pfnTryAcquireSRWLockExclusive)(PSRWLOCK);
 static pfnReleaseSRWLockExclusive pReleaseSRWLockExclusive = NULL;
 static pfnReleaseSRWLockExclusive pReleaseSRWLockExclusive = NULL;
 static pfnAcquireSRWLockExclusive pAcquireSRWLockExclusive = NULL;
 static pfnAcquireSRWLockExclusive pAcquireSRWLockExclusive = NULL;
 static pfnTryAcquireSRWLockExclusive pTryAcquireSRWLockExclusive = NULL;
 static pfnTryAcquireSRWLockExclusive pTryAcquireSRWLockExclusive = NULL;
-#endif
 
 
 static SDL_mutex *
 static SDL_mutex *
 SDL_CreateMutex_srw(void)
 SDL_CreateMutex_srw(void)
@@ -180,11 +173,7 @@ SDL_CreateMutex_cs(void)
     if (mutex) {
     if (mutex) {
         /* Initialize */
         /* Initialize */
         /* On SMP systems, a non-zero spin count generally helps performance */
         /* On SMP systems, a non-zero spin count generally helps performance */
-#if __WINRT__
-        InitializeCriticalSectionEx(&mutex->cs, 2000, 0);
-#else
         InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000);
         InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000);
-#endif
     } else {
     } else {
         SDL_OutOfMemory();
         SDL_OutOfMemory();
     }
     }
@@ -267,10 +256,6 @@ SDL_CreateMutex(void)
         const SDL_mutex_impl_t * impl = &SDL_mutex_impl_cs;
         const SDL_mutex_impl_t * impl = &SDL_mutex_impl_cs;
 
 
         if (!SDL_GetHintBoolean(SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS, SDL_FALSE)) {
         if (!SDL_GetHintBoolean(SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS, SDL_FALSE)) {
-#if __WINRT__
-            /* Link statically on this platform */
-            impl = &SDL_mutex_impl_srw;
-#else
             /* Try faster implementation for Windows 7 and newer */
             /* Try faster implementation for Windows 7 and newer */
             HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
             HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
             if (kernel32) {
             if (kernel32) {
@@ -283,7 +268,6 @@ SDL_CreateMutex(void)
                     impl = &SDL_mutex_impl_srw;
                     impl = &SDL_mutex_impl_srw;
                 }
                 }
             }
             }
-#endif
         }
         }
 
 
         /* Copy instead of using pointer to save one level of indirection */
         /* Copy instead of using pointer to save one level of indirection */

+ 0 - 15
src/thread/windows/SDL_syssem.c

@@ -76,17 +76,11 @@ static SDL_sem_impl_t SDL_sem_impl_active = {0};
 #endif
 #endif
 
 
 #if !SDL_WINAPI_FAMILY_PHONE
 #if !SDL_WINAPI_FAMILY_PHONE
-#if __WINRT__
-/* Functions are guaranteed to be available */
-#define pWaitOnAddress WaitOnAddress
-#define pWakeByAddressSingle WakeByAddressSingle
-#else
 typedef BOOL(WINAPI *pfnWaitOnAddress)(volatile VOID*, PVOID, SIZE_T, DWORD);
 typedef BOOL(WINAPI *pfnWaitOnAddress)(volatile VOID*, PVOID, SIZE_T, DWORD);
 typedef VOID(WINAPI *pfnWakeByAddressSingle)(PVOID);
 typedef VOID(WINAPI *pfnWakeByAddressSingle)(PVOID);
 
 
 static pfnWaitOnAddress pWaitOnAddress = NULL;
 static pfnWaitOnAddress pWaitOnAddress = NULL;
 static pfnWakeByAddressSingle pWakeByAddressSingle = NULL;
 static pfnWakeByAddressSingle pWakeByAddressSingle = NULL;
-#endif
 
 
 typedef struct SDL_semaphore_atom
 typedef struct SDL_semaphore_atom
 {
 {
@@ -274,11 +268,7 @@ SDL_CreateSemaphore_kern(Uint32 initial_value)
     sem = (SDL_sem_kern *) SDL_malloc(sizeof(*sem));
     sem = (SDL_sem_kern *) SDL_malloc(sizeof(*sem));
     if (sem) {
     if (sem) {
         /* Create the semaphore, with max value 32K */
         /* Create the semaphore, with max value 32K */
-#if __WINRT__
-        sem->id = CreateSemaphoreEx(NULL, initial_value, 32 * 1024, NULL, 0, SEMAPHORE_ALL_ACCESS);
-#else
         sem->id = CreateSemaphore(NULL, initial_value, 32 * 1024, NULL);
         sem->id = CreateSemaphore(NULL, initial_value, 32 * 1024, NULL);
-#endif
         sem->count = initial_value;
         sem->count = initial_value;
         if (!sem->id) {
         if (!sem->id) {
             SDL_SetError("Couldn't create semaphore");
             SDL_SetError("Couldn't create semaphore");
@@ -405,10 +395,6 @@ SDL_CreateSemaphore(Uint32 initial_value)
 
 
 #if !SDL_WINAPI_FAMILY_PHONE
 #if !SDL_WINAPI_FAMILY_PHONE
         if (!SDL_GetHintBoolean(SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL, SDL_FALSE)) {
         if (!SDL_GetHintBoolean(SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL, SDL_FALSE)) {
-#if __WINRT__
-            /* Link statically on this platform */
-            impl = &SDL_sem_impl_atom;
-#else
             /* We already statically link to features from this Api
             /* We already statically link to features from this Api
              * Set (e.g. WaitForSingleObject). Dynamically loading
              * Set (e.g. WaitForSingleObject). Dynamically loading
              * API Sets is not explicitly documented but according to
              * API Sets is not explicitly documented but according to
@@ -425,7 +411,6 @@ SDL_CreateSemaphore(Uint32 initial_value)
                     impl = &SDL_sem_impl_atom;
                     impl = &SDL_sem_impl_atom;
                 }
                 }
             }
             }
-#endif
         }
         }
 #endif
 #endif
 
 

+ 1 - 3
src/thread/windows/SDL_systhread.c

@@ -87,7 +87,7 @@ SDL_SYS_CreateThread(SDL_Thread * thread,
                      pfnSDL_CurrentBeginThread pfnBeginThread,
                      pfnSDL_CurrentBeginThread pfnBeginThread,
                      pfnSDL_CurrentEndThread pfnEndThread)
                      pfnSDL_CurrentEndThread pfnEndThread)
 {
 {
-#elif defined(__CYGWIN__) || defined(__WINRT__)
+#elif defined(__CYGWIN__)
 int
 int
 SDL_SYS_CreateThread(SDL_Thread * thread)
 SDL_SYS_CreateThread(SDL_Thread * thread)
 {
 {
@@ -141,7 +141,6 @@ void
 SDL_SYS_SetupThread(const char *name)
 SDL_SYS_SetupThread(const char *name)
 {
 {
     if (name != NULL) {
     if (name != NULL) {
-        #ifndef __WINRT__   /* !!! FIXME: There's no LoadLibrary() in WinRT; don't know if SetThreadDescription is available there at all at the moment. */
         static pfnSetThreadDescription pSetThreadDescription = NULL;
         static pfnSetThreadDescription pSetThreadDescription = NULL;
         static HMODULE kernel32 = 0;
         static HMODULE kernel32 = 0;
 
 
@@ -159,7 +158,6 @@ SDL_SYS_SetupThread(const char *name)
                 SDL_free(strw);
                 SDL_free(strw);
             }
             }
         }
         }
-        #endif
 
 
         /* Presumably some version of Visual Studio will understand SetThreadDescription(),
         /* Presumably some version of Visual Studio will understand SetThreadDescription(),
            but we still need to deal with older OSes and debuggers. Set it with the arcane
            but we still need to deal with older OSes and debuggers. Set it with the arcane

+ 0 - 12
src/thread/windows/SDL_systls.c

@@ -28,18 +28,6 @@
 #include "SDL_thread.h"
 #include "SDL_thread.h"
 #include "../SDL_thread_c.h"
 #include "../SDL_thread_c.h"
 
 
-#if WINAPI_FAMILY_WINRT
-#include <fibersapi.h>
-
-#ifndef TLS_OUT_OF_INDEXES
-#define TLS_OUT_OF_INDEXES  FLS_OUT_OF_INDEXES
-#endif
-
-#define TlsAlloc()  FlsAlloc(NULL)
-#define TlsSetValue FlsSetValue
-#define TlsGetValue FlsGetValue
-#endif
-
 static DWORD thread_local_storage = TLS_OUT_OF_INDEXES;
 static DWORD thread_local_storage = TLS_OUT_OF_INDEXES;
 static SDL_bool generic_local_storage = SDL_FALSE;
 static SDL_bool generic_local_storage = SDL_FALSE;
 
 

+ 1 - 21
src/timer/windows/SDL_systimer.c

@@ -41,7 +41,7 @@ static LARGE_INTEGER ticks_per_second;
 static void
 static void
 SDL_SetSystemTimerResolution(const UINT uPeriod)
 SDL_SetSystemTimerResolution(const UINT uPeriod)
 {
 {
-#if !defined(__WINRT__) && !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
+#if !defined(__XBOXONE__) && !defined(__XBOXSERIES__)
     static UINT timer_period = 0;
     static UINT timer_period = 0;
 
 
     if (uPeriod != timer_period) {
     if (uPeriod != timer_period) {
@@ -146,31 +146,11 @@ SDL_GetPerformanceFrequency(void)
 void
 void
 SDL_Delay(Uint32 ms)
 SDL_Delay(Uint32 ms)
 {
 {
-    /* Sleep() is not publicly available to apps in early versions of WinRT.
-     *
-     * Visual C++ 2013 Update 4 re-introduced Sleep() for Windows 8.1 and
-     * Windows Phone 8.1.
-     *
-     * Use the compiler version to determine availability.
-     *
-     * NOTE #1: _MSC_FULL_VER == 180030723 for Visual C++ 2013 Update 3.
-     * NOTE #2: Visual C++ 2013, when compiling for Windows 8.0 and
-     *    Windows Phone 8.0, uses the Visual C++ 2012 compiler to build
-     *    apps and libraries.
-     */
-#if defined(__WINRT__) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER <= 180030723)
-    static HANDLE mutex = 0;
-    if (!mutex) {
-        mutex = CreateEventEx(0, 0, 0, EVENT_ALL_ACCESS);
-    }
-    WaitForSingleObjectEx(mutex, ms, FALSE);
-#else
     if (!ticks_started) {
     if (!ticks_started) {
         SDL_TicksInit();
         SDL_TicksInit();
     }
     }
 
 
     Sleep(ms);
     Sleep(ms);
-#endif
 }
 }
 
 
 #endif /* SDL_TIMER_WINDOWS */
 #endif /* SDL_TIMER_WINDOWS */

+ 4 - 6
src/video/SDL_egl.c

@@ -22,7 +22,7 @@
 
 
 #if SDL_VIDEO_OPENGL_EGL
 #if SDL_VIDEO_OPENGL_EGL
 
 
-#if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT
+#if SDL_VIDEO_DRIVER_WINDOWS
 #include "../core/windows/SDL_windows.h"
 #include "../core/windows/SDL_windows.h"
 #endif
 #endif
 #if SDL_VIDEO_DRIVER_ANDROID
 #if SDL_VIDEO_DRIVER_ANDROID
@@ -73,7 +73,7 @@
 #define DEFAULT_OGL_ES_PVR "libGLES_CM.so"
 #define DEFAULT_OGL_ES_PVR "libGLES_CM.so"
 #define DEFAULT_OGL_ES "libGLESv1_CM.so"
 #define DEFAULT_OGL_ES "libGLESv1_CM.so"
 
 
-#elif SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT
+#elif SDL_VIDEO_DRIVER_WINDOWS
 /* EGL AND OpenGL ES support via ANGLE */
 /* EGL AND OpenGL ES support via ANGLE */
 #define DEFAULT_EGL "libEGL.dll"
 #define DEFAULT_EGL "libEGL.dll"
 #define DEFAULT_OGL_ES2 "libGLESv2.dll"
 #define DEFAULT_OGL_ES2 "libGLESv2.dll"
@@ -297,14 +297,14 @@ SDL_EGL_LoadLibraryInternal(_THIS, const char *egl_path)
 {
 {
     void *egl_dll_handle = NULL, *opengl_dll_handle = NULL;
     void *egl_dll_handle = NULL, *opengl_dll_handle = NULL;
     const char *path = NULL;
     const char *path = NULL;
-#if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT
+#if SDL_VIDEO_DRIVER_WINDOWS
     const char *d3dcompiler;
     const char *d3dcompiler;
 #endif
 #endif
 #if SDL_VIDEO_DRIVER_RPI
 #if SDL_VIDEO_DRIVER_RPI
     SDL_bool vc4 = (0 == access("/sys/module/vc4/", F_OK));
     SDL_bool vc4 = (0 == access("/sys/module/vc4/", F_OK));
 #endif
 #endif
 
 
-#if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT
+#if SDL_VIDEO_DRIVER_WINDOWS
     d3dcompiler = SDL_GetHint(SDL_HINT_VIDEO_WIN_D3DCOMPILER);
     d3dcompiler = SDL_GetHint(SDL_HINT_VIDEO_WIN_D3DCOMPILER);
     if (d3dcompiler) {
     if (d3dcompiler) {
         if (SDL_strcasecmp(d3dcompiler, "none") != 0) {
         if (SDL_strcasecmp(d3dcompiler, "none") != 0) {
@@ -510,7 +510,6 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
 
 
     _this->egl_data->egl_display = EGL_NO_DISPLAY;
     _this->egl_data->egl_display = EGL_NO_DISPLAY;
 
 
-#if !defined(__WINRT__)
 #if !defined(SDL_VIDEO_DRIVER_VITA)
 #if !defined(SDL_VIDEO_DRIVER_VITA)
     if (platform) {
     if (platform) {
         /* EGL 1.5 allows querying for client version with EGL_NO_DISPLAY
         /* EGL 1.5 allows querying for client version with EGL_NO_DISPLAY
@@ -552,7 +551,6 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
         *_this->gl_config.driver_path = '\0';
         *_this->gl_config.driver_path = '\0';
         return SDL_SetError("Could not initialize EGL");
         return SDL_SetError("Could not initialize EGL");
     }
     }
-#endif
 
 
     /* Get the EGL version with a valid egl_display, for EGL <= 1.4 */
     /* Get the EGL version with a valid egl_display, for EGL <= 1.4 */
     SDL_EGL_GetVersion(_this);
     SDL_EGL_GetVersion(_this);

+ 1 - 1
src/video/SDL_stretch.c

@@ -352,7 +352,7 @@ scale_mat(const Uint32 *src, int src_w, int src_h, int src_pitch,
 #  define CAST_uint32x2_t (uint32x2_t)
 #  define CAST_uint32x2_t (uint32x2_t)
 #endif
 #endif
 
 
-#if defined(__WINRT__) || defined(_MSC_VER)
+#if defined(_MSC_VER)
 #  if defined(HAVE_NEON_INTRINSICS)
 #  if defined(HAVE_NEON_INTRINSICS)
 #    undef CAST_uint8x8_t
 #    undef CAST_uint8x8_t
 #    undef CAST_uint32x2_t
 #    undef CAST_uint32x2_t

+ 0 - 1
src/video/SDL_sysvideo.h

@@ -451,7 +451,6 @@ typedef struct VideoBootStrap
 extern VideoBootStrap COCOA_bootstrap;
 extern VideoBootStrap COCOA_bootstrap;
 extern VideoBootStrap X11_bootstrap;
 extern VideoBootStrap X11_bootstrap;
 extern VideoBootStrap WINDOWS_bootstrap;
 extern VideoBootStrap WINDOWS_bootstrap;
-extern VideoBootStrap WINRT_bootstrap;
 extern VideoBootStrap HAIKU_bootstrap;
 extern VideoBootStrap HAIKU_bootstrap;
 extern VideoBootStrap PND_bootstrap;
 extern VideoBootStrap PND_bootstrap;
 extern VideoBootStrap UIKIT_bootstrap;
 extern VideoBootStrap UIKIT_bootstrap;

+ 1 - 54
src/video/SDL_video.c

@@ -76,9 +76,6 @@ static VideoBootStrap *bootstrap[] = {
 #if SDL_VIDEO_DRIVER_WINDOWS
 #if SDL_VIDEO_DRIVER_WINDOWS
     &WINDOWS_bootstrap,
     &WINDOWS_bootstrap,
 #endif
 #endif
-#if SDL_VIDEO_DRIVER_WINRT
-    &WINRT_bootstrap,
-#endif
 #if SDL_VIDEO_DRIVER_HAIKU
 #if SDL_VIDEO_DRIVER_HAIKU
     &HAIKU_bootstrap,
     &HAIKU_bootstrap,
 #endif
 #endif
@@ -1335,10 +1332,6 @@ SDL_RestoreMousePosition(SDL_Window *window)
     }
     }
 }
 }
 
 
-#if __WINRT__
-extern Uint32 WINRT_DetectWindowFlags(SDL_Window * window);
-#endif
-
 static int
 static int
 SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
 SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
 {
 {
@@ -1381,30 +1374,6 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen)
             return 0;
             return 0;
         }
         }
     }
     }
-#elif __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10)
-    /* HACK: WinRT 8.x apps can't choose whether or not they are fullscreen
-       or not.  The user can choose this, via OS-provided UI, but this can't
-       be set programmatically.
-
-       Just look at what SDL's WinRT video backend code detected with regards
-       to fullscreen (being active, or not), and figure out a return/error code
-       from that.
-    */
-    if (fullscreen == !(WINRT_DetectWindowFlags(window) & FULLSCREEN_MASK)) {
-        /* Uh oh, either:
-            1. fullscreen was requested, and we're already windowed
-            2. windowed-mode was requested, and we're already fullscreen
-
-            WinRT 8.x can't resolve either programmatically, so we're
-            giving up.
-        */
-        return -1;
-    } else {
-        /* Whatever was requested, fullscreen or windowed mode, is already
-            in-place.
-        */
-        return 0;
-    }
 #endif
 #endif
 
 
     display = SDL_GetDisplayForWindow(window);
     display = SDL_GetDisplayForWindow(window);
@@ -1758,18 +1727,6 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
     }
     }
 #endif
 #endif
 
 
-#if __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10)
-    /* HACK: WinRT 8.x apps can't choose whether or not they are fullscreen
-       or not.  The user can choose this, via OS-provided UI, but this can't
-       be set programmatically.
-
-       Just look at what SDL's WinRT video backend code detected with regards
-       to fullscreen (being active, or not), and figure out a return/error code
-       from that.
-    */
-    flags = window->flags;
-#endif
-
     if (title) {
     if (title) {
         SDL_SetWindowTitle(window, title);
         SDL_SetWindowTitle(window, title);
     }
     }
@@ -4417,9 +4374,6 @@ SDL_GetMessageBoxCount(void)
 #if SDL_VIDEO_DRIVER_WINDOWS
 #if SDL_VIDEO_DRIVER_WINDOWS
 #include "windows/SDL_windowsmessagebox.h"
 #include "windows/SDL_windowsmessagebox.h"
 #endif
 #endif
-#if SDL_VIDEO_DRIVER_WINRT
-#include "winrt/SDL_winrtmessagebox.h"
-#endif
 #if SDL_VIDEO_DRIVER_COCOA
 #if SDL_VIDEO_DRIVER_COCOA
 #include "cocoa/SDL_cocoamessagebox.h"
 #include "cocoa/SDL_cocoamessagebox.h"
 #endif
 #endif
@@ -4442,7 +4396,7 @@ SDL_GetMessageBoxCount(void)
 #include "vita/SDL_vitamessagebox.h"
 #include "vita/SDL_vitamessagebox.h"
 #endif
 #endif
 
 
-#if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT || SDL_VIDEO_DRIVER_COCOA || SDL_VIDEO_DRIVER_UIKIT || SDL_VIDEO_DRIVER_X11 || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_HAIKU || SDL_VIDEO_DRIVER_RISCOS
+#if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_COCOA || SDL_VIDEO_DRIVER_UIKIT || SDL_VIDEO_DRIVER_X11 || SDL_VIDEO_DRIVER_WAYLAND || SDL_VIDEO_DRIVER_HAIKU || SDL_VIDEO_DRIVER_RISCOS
 static SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
 static SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
 {
 {
     SDL_SysWMinfo info;
     SDL_SysWMinfo info;
@@ -4515,13 +4469,6 @@ SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
         retval = 0;
         retval = 0;
     }
     }
 #endif
 #endif
-#if SDL_VIDEO_DRIVER_WINRT
-    if (retval == -1 &&
-        SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_WINRT) &&
-        WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
-        retval = 0;
-    }
-#endif
 #if SDL_VIDEO_DRIVER_COCOA
 #if SDL_VIDEO_DRIVER_COCOA
     if (retval == -1 &&
     if (retval == -1 &&
         SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_COCOA) &&
         SDL_MessageboxValidForDriver(messageboxdata, SDL_SYSWM_COCOA) &&

+ 0 - 153
src/video/winrt/SDL_winrtevents.cpp

@@ -1,153 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/*
- * Windows includes:
- */
-#include <Windows.h>
-using namespace Windows::UI::Core;
-using Windows::UI::Core::CoreCursor;
-
-/*
- * SDL includes:
- */
-#include "SDL_winrtevents_c.h"
-#include "../../core/winrt/SDL_winrtapp_common.h"
-#include "../../core/winrt/SDL_winrtapp_direct3d.h"
-#include "../../core/winrt/SDL_winrtapp_xaml.h"
-#include "SDL_system.h"
-
-extern "C" {
-#include "../../thread/SDL_systhread.h"
-#include "../SDL_sysvideo.h"
-#include "../../events/SDL_events_c.h"
-}
-
-
-/* Forward declarations */
-static void WINRT_YieldXAMLThread();
-
-
-/* Global event management */
-
-void
-WINRT_PumpEvents(_THIS)
-{
-    if (SDL_WinRTGlobalApp) {
-        SDL_WinRTGlobalApp->PumpEvents();
-    } else if (WINRT_XAMLWasEnabled) {
-        WINRT_YieldXAMLThread();
-    }
-}
-
-
-/* XAML Thread management */
-
-enum SDL_XAMLAppThreadState
-{
-    ThreadState_NotLaunched = 0,
-    ThreadState_Running,
-    ThreadState_Yielding
-};
-
-static SDL_XAMLAppThreadState _threadState = ThreadState_NotLaunched;
-static SDL_Thread * _XAMLThread = nullptr;
-static SDL_mutex * _mutex = nullptr;
-static SDL_cond * _cond = nullptr;
-
-static void
-WINRT_YieldXAMLThread()
-{
-    SDL_LockMutex(_mutex);
-    SDL_assert(_threadState == ThreadState_Running);
-    _threadState = ThreadState_Yielding;
-    SDL_UnlockMutex(_mutex);
-
-    SDL_CondSignal(_cond);
-
-    SDL_LockMutex(_mutex);
-    while (_threadState != ThreadState_Running) {
-        SDL_CondWait(_cond, _mutex);
-    }
-    SDL_UnlockMutex(_mutex);
-}
-
-static int
-WINRT_XAMLThreadMain(void * userdata)
-{
-    // TODO, WinRT: pass the C-style main() a reasonably realistic
-    // representation of command line arguments.
-    int argc = 0;
-    char **argv = NULL;
-    return WINRT_SDLAppEntryPoint(argc, argv);
-}
-
-void
-WINRT_CycleXAMLThread(void)
-{
-    switch (_threadState) {
-        case ThreadState_NotLaunched:
-        {
-            _cond = SDL_CreateCond();
-
-            _mutex = SDL_CreateMutex();
-            _threadState = ThreadState_Running;
-            _XAMLThread = SDL_CreateThreadInternal(WINRT_XAMLThreadMain, "SDL/XAML App Thread", 0, nullptr);
-
-            SDL_LockMutex(_mutex);
-            while (_threadState != ThreadState_Yielding) {
-                SDL_CondWait(_cond, _mutex);
-            }
-            SDL_UnlockMutex(_mutex);
-
-            break;
-        }
-
-        case ThreadState_Running:
-        {
-            SDL_assert(false);
-            break;
-        }
-
-        case ThreadState_Yielding:
-        {
-            SDL_LockMutex(_mutex);
-            SDL_assert(_threadState == ThreadState_Yielding);
-            _threadState = ThreadState_Running;
-            SDL_UnlockMutex(_mutex);
-
-            SDL_CondSignal(_cond);
-
-            SDL_LockMutex(_mutex);
-            while (_threadState != ThreadState_Yielding) {
-                SDL_CondWait(_cond, _mutex);
-            }
-            SDL_UnlockMutex(_mutex);
-        }
-    }
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 83
src/video/winrt/SDL_winrtevents_c.h

@@ -1,83 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-extern "C" {
-#include "../SDL_sysvideo.h"
-}
-
-/*
- * Internal-use, C-style functions:
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void WINRT_InitTouch(_THIS);
-extern void WINRT_PumpEvents(_THIS);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-/*
- * Internal-use, C++/CX functions:
- */
-#ifdef __cplusplus_winrt
-
-/* Pointers (Mice, Touch, etc.) */
-typedef enum {
-    NormalizeZeroToOne,
-    TransformToSDLWindowSize
-} WINRT_CursorNormalizationType;
-extern Windows::Foundation::Point WINRT_TransformCursorPosition(SDL_Window * window,
-                                                                Windows::Foundation::Point rawPosition,
-                                                                WINRT_CursorNormalizationType normalization);
-extern SDL_bool WINRT_GetSDLButtonForPointerPoint(Windows::UI::Input::PointerPoint ^pt, Uint8 *button, Uint8 *pressed);
-extern void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessPointerEnteredEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessPointerExitedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint);
-extern void WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args);
-
-/* Keyboard */
-extern void WINRT_ProcessKeyDownEvent(Windows::UI::Core::KeyEventArgs ^args);
-extern void WINRT_ProcessKeyUpEvent(Windows::UI::Core::KeyEventArgs ^args);
-extern void WINRT_ProcessCharacterReceivedEvent(Windows::UI::Core::CharacterReceivedEventArgs ^args);
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-extern void WINTRT_InitialiseInputPaneEvents(_THIS);
-extern SDL_bool WINRT_HasScreenKeyboardSupport(_THIS);
-extern void WINRT_ShowScreenKeyboard(_THIS, SDL_Window *window);
-extern void WINRT_HideScreenKeyboard(_THIS, SDL_Window *window);
-extern SDL_bool WINRT_IsScreenKeyboardShown(_THIS, SDL_Window *window);
-#endif  // NTDDI_VERSION >= ...
-
-/* XAML Thread Management */
-extern void WINRT_CycleXAMLThread(void);
-
-#endif // ifdef __cplusplus_winrt
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 196
src/video/winrt/SDL_winrtgamebar.cpp

@@ -1,196 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/* Windows includes */
-#include <roapi.h>
-#include <windows.foundation.h>
-#include <windows.system.h>
-
-
-/* SDL includes */
-extern "C" {
-#include "SDL_mouse.h"
-#include "../SDL_sysvideo.h"
-}
-#include "SDL_winrtvideo_cpp.h"
-
-
-/* Game Bar events can come in off the main thread.  Use the following
-   WinRT CoreDispatcher to deal with them on SDL's thread.
-*/
-static Platform::WeakReference WINRT_MainThreadDispatcher;
-
-
-/* Win10's initial SDK (the 10.0.10240.0 release) does not include references
-   to Game Bar APIs, as the Game Bar was released via Win10 10.0.10586.0.
-
-   Declare its WinRT/COM interface here, to allow compilation with earlier
-   Windows SDKs.
-*/
-MIDL_INTERFACE("1DB9A292-CC78-4173-BE45-B61E67283EA7")
-IGameBarStatics_ : public IInspectable
-{
-public:
-    virtual HRESULT STDMETHODCALLTYPE add_VisibilityChanged( 
-        __FIEventHandler_1_IInspectable *handler,
-        Windows::Foundation::EventRegistrationToken *token) = 0;
-    
-    virtual HRESULT STDMETHODCALLTYPE remove_VisibilityChanged( 
-        Windows::Foundation::EventRegistrationToken token) = 0;
-    
-    virtual HRESULT STDMETHODCALLTYPE add_IsInputRedirectedChanged( 
-        __FIEventHandler_1_IInspectable *handler,
-        Windows::Foundation::EventRegistrationToken *token) = 0;
-    
-    virtual HRESULT STDMETHODCALLTYPE remove_IsInputRedirectedChanged( 
-        Windows::Foundation::EventRegistrationToken token) = 0;
-    
-    virtual HRESULT STDMETHODCALLTYPE get_Visible( 
-        boolean *value) = 0;
-    
-    virtual HRESULT STDMETHODCALLTYPE get_IsInputRedirected( 
-        boolean *value) = 0;
-};
-
-/* Declare the game bar's COM GUID */
-static GUID IID_IGameBarStatics_ = { MAKELONG(0xA292, 0x1DB9), 0xCC78, 0x4173, { 0xBE, 0x45, 0xB6, 0x1E, 0x67, 0x28, 0x3E, 0xA7 } };
-
-/* Retrieves a pointer to the game bar, or NULL if it is not available.
-   If a pointer is returned, it's ->Release() method must be called
-   after the caller has finished using it.
-*/
-static IGameBarStatics_ *
-WINRT_GetGameBar()
-{
-    wchar_t *wClassName = L"Windows.Gaming.UI.GameBar";
-    HSTRING hClassName;
-    IActivationFactory *pActivationFactory = NULL;
-    IGameBarStatics_ *pGameBar = NULL;
-    HRESULT hr;
-
-    hr = ::WindowsCreateString(wClassName, (UINT32)SDL_wcslen(wClassName), &hClassName);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-    hr = Windows::Foundation::GetActivationFactory(hClassName, &pActivationFactory);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-    pActivationFactory->QueryInterface(IID_IGameBarStatics_, (void **) &pGameBar);
-
-done:
-    if (pActivationFactory) {
-        pActivationFactory->Release();
-    }
-    if (hClassName) {
-        ::WindowsDeleteString(hClassName);
-    }
-    return pGameBar;
-}
-
-static void
-WINRT_HandleGameBarIsInputRedirected_MainThread()
-{
-    IGameBarStatics_ *gameBar;
-    boolean isInputRedirected = 0;
-    if (!WINRT_MainThreadDispatcher) {
-        /* The game bar event handler has been deregistered! */
-        return;
-    }
-    gameBar = WINRT_GetGameBar();
-    if (!gameBar) {
-        /* Shouldn't happen, but just in case... */
-        return;
-    }
-    if (SUCCEEDED(gameBar->get_IsInputRedirected(&isInputRedirected))) {
-        if ( ! isInputRedirected) {
-            /* Input-control is now back to the SDL app. Restore the cursor,
-               in case Windows does not (it does not in either Win10
-               10.0.10240.0 or 10.0.10586.0, maybe later version(s) too.
-            */
-            SDL_Cursor *cursor = SDL_GetCursor();
-            SDL_SetCursor(cursor);
-        }
-    }
-    gameBar->Release();
-}
-
-static void
-WINRT_HandleGameBarIsInputRedirected_NonMainThread(Platform::Object ^ o1, Platform::Object ^o2)
-{
-    Windows::UI::Core::CoreDispatcher ^dispatcher = WINRT_MainThreadDispatcher.Resolve<Windows::UI::Core::CoreDispatcher>();
-    if (dispatcher) {
-        dispatcher->RunAsync(
-            Windows::UI::Core::CoreDispatcherPriority::Normal,
-            ref new Windows::UI::Core::DispatchedHandler(&WINRT_HandleGameBarIsInputRedirected_MainThread));
-    }
-}
-
-void
-WINRT_InitGameBar(_THIS)
-{
-    SDL_VideoData *driverdata = (SDL_VideoData *)_this->driverdata;
-    IGameBarStatics_ *gameBar = WINRT_GetGameBar();
-    if (gameBar) {
-        /* GameBar.IsInputRedirected events can come in via something other than
-           the main/SDL thread.
-
-           Get a WinRT 'CoreDispatcher' that can be used to call back into the
-           SDL thread.
-        */
-        WINRT_MainThreadDispatcher = Windows::UI::Core::CoreWindow::GetForCurrentThread()->Dispatcher;
-        Windows::Foundation::EventHandler<Platform::Object ^> ^handler = \
-            ref new Windows::Foundation::EventHandler<Platform::Object ^>(&WINRT_HandleGameBarIsInputRedirected_NonMainThread);
-        __FIEventHandler_1_IInspectable * pHandler = reinterpret_cast<__FIEventHandler_1_IInspectable *>(handler);
-        gameBar->add_IsInputRedirectedChanged(pHandler, &driverdata->gameBarIsInputRedirectedToken);
-        gameBar->Release();
-    }
-}
-
-void
-WINRT_QuitGameBar(_THIS)
-{
-    SDL_VideoData *driverdata;
-    IGameBarStatics_ *gameBar;
-    if (!_this || !_this->driverdata) {
-        return;
-    }
-    gameBar = WINRT_GetGameBar();
-    if (!gameBar) {
-        return;
-    }
-    driverdata = (SDL_VideoData *)_this->driverdata;
-    if (driverdata->gameBarIsInputRedirectedToken.Value) {
-        gameBar->remove_IsInputRedirectedChanged(driverdata->gameBarIsInputRedirectedToken);
-        driverdata->gameBarIsInputRedirectedToken.Value = 0;
-    }
-    WINRT_MainThreadDispatcher = nullptr;
-    gameBar->Release();
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 35
src/video/winrt/SDL_winrtgamebar_cpp.h

@@ -1,35 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-#ifndef SDL_winrtgamebar_h_
-#define SDL_winrtgamebar_h_
-
-#ifdef __cplusplus
-/* These are exported as C++ functions, rather than C, to fix a compilation
-   bug with MSVC 2013, for Windows 8.x builds. */
-extern void WINRT_InitGameBar(_THIS);
-extern void WINRT_QuitGameBar(_THIS);
-#endif
-
-#endif /* SDL_winrtgamebar_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 466
src/video/winrt/SDL_winrtkeyboard.cpp

@@ -1,466 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/* Windows-specific includes */
-#include <Windows.h>
-#include <agile.h>
-
-
-/* SDL-specific includes */
-#include "SDL.h"
-#include "SDL_winrtevents_c.h"
-
-extern "C" {
-#include "../../events/scancodes_windows.h"
-#include "../../events/SDL_keyboard_c.h"
-}
-
-
-static SDL_Scancode WinRT_Official_Keycodes[] = {
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.None -- 0 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.LeftButton -- 1 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.RightButton -- 2 */
-    SDL_SCANCODE_CANCEL,        /* VirtualKey.Cancel -- 3 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.MiddleButton -- 4 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.XButton1 -- 5 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.XButton2 -- 6 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 7 */
-    SDL_SCANCODE_BACKSPACE,     /* VirtualKey.Back -- 8 */
-    SDL_SCANCODE_TAB,           /* VirtualKey.Tab -- 9 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 10 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 11 */
-    SDL_SCANCODE_CLEAR,         /* VirtualKey.Clear -- 12 */
-    SDL_SCANCODE_RETURN,        /* VirtualKey.Enter -- 13 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 14 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 15 */
-    SDL_SCANCODE_LSHIFT,        /* VirtualKey.Shift -- 16 */
-    SDL_SCANCODE_LCTRL,         /* VirtualKey.Control -- 17 */
-    SDL_SCANCODE_MENU,          /* VirtualKey.Menu -- 18 */
-    SDL_SCANCODE_PAUSE,         /* VirtualKey.Pause -- 19 */
-    SDL_SCANCODE_CAPSLOCK,      /* VirtualKey.CapitalLock -- 20 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Kana or VirtualKey.Hangul -- 21 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 22 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Junja -- 23 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Final -- 24 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Hanja or VirtualKey.Kanji -- 25 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 26 */
-    SDL_SCANCODE_ESCAPE,        /* VirtualKey.Escape -- 27 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Convert -- 28 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.NonConvert -- 29 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Accept -- 30 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.ModeChange -- 31  (maybe SDL_SCANCODE_MODE ?) */
-    SDL_SCANCODE_SPACE,         /* VirtualKey.Space -- 32 */
-    SDL_SCANCODE_PAGEUP,        /* VirtualKey.PageUp -- 33 */
-    SDL_SCANCODE_PAGEDOWN,      /* VirtualKey.PageDown -- 34 */
-    SDL_SCANCODE_END,           /* VirtualKey.End -- 35 */
-    SDL_SCANCODE_HOME,          /* VirtualKey.Home -- 36 */
-    SDL_SCANCODE_LEFT,          /* VirtualKey.Left -- 37 */
-    SDL_SCANCODE_UP,            /* VirtualKey.Up -- 38 */
-    SDL_SCANCODE_RIGHT,         /* VirtualKey.Right -- 39 */
-    SDL_SCANCODE_DOWN,          /* VirtualKey.Down -- 40 */
-    SDL_SCANCODE_SELECT,        /* VirtualKey.Select -- 41 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Print -- 42  (maybe SDL_SCANCODE_PRINTSCREEN ?) */
-    SDL_SCANCODE_EXECUTE,       /* VirtualKey.Execute -- 43 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Snapshot -- 44 */
-    SDL_SCANCODE_INSERT,        /* VirtualKey.Insert -- 45 */
-    SDL_SCANCODE_DELETE,        /* VirtualKey.Delete -- 46 */
-    SDL_SCANCODE_HELP,          /* VirtualKey.Help -- 47 */
-    SDL_SCANCODE_0,             /* VirtualKey.Number0 -- 48 */
-    SDL_SCANCODE_1,             /* VirtualKey.Number1 -- 49 */
-    SDL_SCANCODE_2,             /* VirtualKey.Number2 -- 50 */
-    SDL_SCANCODE_3,             /* VirtualKey.Number3 -- 51 */
-    SDL_SCANCODE_4,             /* VirtualKey.Number4 -- 52 */
-    SDL_SCANCODE_5,             /* VirtualKey.Number5 -- 53 */
-    SDL_SCANCODE_6,             /* VirtualKey.Number6 -- 54 */
-    SDL_SCANCODE_7,             /* VirtualKey.Number7 -- 55 */
-    SDL_SCANCODE_8,             /* VirtualKey.Number8 -- 56 */
-    SDL_SCANCODE_9,             /* VirtualKey.Number9 -- 57 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 58 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 59 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 60 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 61 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 62 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 63 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 64 */
-    SDL_SCANCODE_A,             /* VirtualKey.A -- 65 */
-    SDL_SCANCODE_B,             /* VirtualKey.B -- 66 */
-    SDL_SCANCODE_C,             /* VirtualKey.C -- 67 */
-    SDL_SCANCODE_D,             /* VirtualKey.D -- 68 */
-    SDL_SCANCODE_E,             /* VirtualKey.E -- 69 */
-    SDL_SCANCODE_F,             /* VirtualKey.F -- 70 */
-    SDL_SCANCODE_G,             /* VirtualKey.G -- 71 */
-    SDL_SCANCODE_H,             /* VirtualKey.H -- 72 */
-    SDL_SCANCODE_I,             /* VirtualKey.I -- 73 */
-    SDL_SCANCODE_J,             /* VirtualKey.J -- 74 */
-    SDL_SCANCODE_K,             /* VirtualKey.K -- 75 */
-    SDL_SCANCODE_L,             /* VirtualKey.L -- 76 */
-    SDL_SCANCODE_M,             /* VirtualKey.M -- 77 */
-    SDL_SCANCODE_N,             /* VirtualKey.N -- 78 */
-    SDL_SCANCODE_O,             /* VirtualKey.O -- 79 */
-    SDL_SCANCODE_P,             /* VirtualKey.P -- 80 */
-    SDL_SCANCODE_Q,             /* VirtualKey.Q -- 81 */
-    SDL_SCANCODE_R,             /* VirtualKey.R -- 82 */
-    SDL_SCANCODE_S,             /* VirtualKey.S -- 83 */
-    SDL_SCANCODE_T,             /* VirtualKey.T -- 84 */
-    SDL_SCANCODE_U,             /* VirtualKey.U -- 85 */
-    SDL_SCANCODE_V,             /* VirtualKey.V -- 86 */
-    SDL_SCANCODE_W,             /* VirtualKey.W -- 87 */
-    SDL_SCANCODE_X,             /* VirtualKey.X -- 88 */
-    SDL_SCANCODE_Y,             /* VirtualKey.Y -- 89 */
-    SDL_SCANCODE_Z,             /* VirtualKey.Z -- 90 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.LeftWindows -- 91  (maybe SDL_SCANCODE_APPLICATION or SDL_SCANCODE_LGUI ?) */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.RightWindows -- 92  (maybe SDL_SCANCODE_APPLICATION or SDL_SCANCODE_RGUI ?) */
-    SDL_SCANCODE_APPLICATION,   /* VirtualKey.Application -- 93 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 94 */
-    SDL_SCANCODE_SLEEP,         /* VirtualKey.Sleep -- 95 */
-    SDL_SCANCODE_KP_0,          /* VirtualKey.NumberPad0 -- 96 */
-    SDL_SCANCODE_KP_1,          /* VirtualKey.NumberPad1 -- 97 */
-    SDL_SCANCODE_KP_2,          /* VirtualKey.NumberPad2 -- 98 */
-    SDL_SCANCODE_KP_3,          /* VirtualKey.NumberPad3 -- 99 */
-    SDL_SCANCODE_KP_4,          /* VirtualKey.NumberPad4 -- 100 */
-    SDL_SCANCODE_KP_5,          /* VirtualKey.NumberPad5 -- 101 */
-    SDL_SCANCODE_KP_6,          /* VirtualKey.NumberPad6 -- 102 */
-    SDL_SCANCODE_KP_7,          /* VirtualKey.NumberPad7 -- 103 */
-    SDL_SCANCODE_KP_8,          /* VirtualKey.NumberPad8 -- 104 */
-    SDL_SCANCODE_KP_9,          /* VirtualKey.NumberPad9 -- 105 */
-    SDL_SCANCODE_KP_MULTIPLY,   /* VirtualKey.Multiply -- 106 */
-    SDL_SCANCODE_KP_PLUS,       /* VirtualKey.Add -- 107 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Separator -- 108 */
-    SDL_SCANCODE_KP_MINUS,      /* VirtualKey.Subtract -- 109 */
-    SDL_SCANCODE_UNKNOWN,       /* VirtualKey.Decimal -- 110  (maybe SDL_SCANCODE_DECIMALSEPARATOR, SDL_SCANCODE_KP_DECIMAL, or SDL_SCANCODE_KP_PERIOD ?) */
-    SDL_SCANCODE_KP_DIVIDE,     /* VirtualKey.Divide -- 111 */
-    SDL_SCANCODE_F1,            /* VirtualKey.F1 -- 112 */
-    SDL_SCANCODE_F2,            /* VirtualKey.F2 -- 113 */
-    SDL_SCANCODE_F3,            /* VirtualKey.F3 -- 114 */
-    SDL_SCANCODE_F4,            /* VirtualKey.F4 -- 115 */
-    SDL_SCANCODE_F5,            /* VirtualKey.F5 -- 116 */
-    SDL_SCANCODE_F6,            /* VirtualKey.F6 -- 117 */
-    SDL_SCANCODE_F7,            /* VirtualKey.F7 -- 118 */
-    SDL_SCANCODE_F8,            /* VirtualKey.F8 -- 119 */
-    SDL_SCANCODE_F9,            /* VirtualKey.F9 -- 120 */
-    SDL_SCANCODE_F10,           /* VirtualKey.F10 -- 121 */
-    SDL_SCANCODE_F11,           /* VirtualKey.F11 -- 122 */
-    SDL_SCANCODE_F12,           /* VirtualKey.F12 -- 123 */
-    SDL_SCANCODE_F13,           /* VirtualKey.F13 -- 124 */
-    SDL_SCANCODE_F14,           /* VirtualKey.F14 -- 125 */
-    SDL_SCANCODE_F15,           /* VirtualKey.F15 -- 126 */
-    SDL_SCANCODE_F16,           /* VirtualKey.F16 -- 127 */
-    SDL_SCANCODE_F17,           /* VirtualKey.F17 -- 128 */
-    SDL_SCANCODE_F18,           /* VirtualKey.F18 -- 129 */
-    SDL_SCANCODE_F19,           /* VirtualKey.F19 -- 130 */
-    SDL_SCANCODE_F20,           /* VirtualKey.F20 -- 131 */
-    SDL_SCANCODE_F21,           /* VirtualKey.F21 -- 132 */
-    SDL_SCANCODE_F22,           /* VirtualKey.F22 -- 133 */
-    SDL_SCANCODE_F23,           /* VirtualKey.F23 -- 134 */
-    SDL_SCANCODE_F24,           /* VirtualKey.F24 -- 135 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 136 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 137 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 138 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 139 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 140 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 141 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 142 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 143 */
-    SDL_SCANCODE_NUMLOCKCLEAR,  /* VirtualKey.NumberKeyLock -- 144 */
-    SDL_SCANCODE_SCROLLLOCK,    /* VirtualKey.Scroll -- 145 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 146 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 147 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 148 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 149 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 150 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 151 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 152 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 153 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 154 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 155 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 156 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 157 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 158 */
-    SDL_SCANCODE_UNKNOWN,       /* -- 159 */
-    SDL_SCANCODE_LSHIFT,        /* VirtualKey.LeftShift -- 160 */
-    SDL_SCANCODE_RSHIFT,        /* VirtualKey.RightShift -- 161 */
-    SDL_SCANCODE_LCTRL,         /* VirtualKey.LeftControl -- 162 */
-    SDL_SCANCODE_RCTRL,         /* VirtualKey.RightControl -- 163 */
-    SDL_SCANCODE_MENU,          /* VirtualKey.LeftMenu -- 164 */
-    SDL_SCANCODE_MENU,          /* VirtualKey.RightMenu -- 165 */
-    SDL_SCANCODE_AC_BACK,       /* VirtualKey.GoBack -- 166 : The go back key. */
-    SDL_SCANCODE_AC_FORWARD,    /* VirtualKey.GoForward -- 167 : The go forward key. */
-    SDL_SCANCODE_AC_REFRESH,    /* VirtualKey.Refresh -- 168 : The refresh key. */
-    SDL_SCANCODE_AC_STOP,       /* VirtualKey.Stop -- 169 : The stop key. */
-    SDL_SCANCODE_AC_SEARCH,     /* VirtualKey.Search -- 170 : The search key. */
-    SDL_SCANCODE_AC_BOOKMARKS,  /* VirtualKey.Favorites -- 171 : The favorites key. */
-    SDL_SCANCODE_AC_HOME        /* VirtualKey.GoHome -- 172 : The go home key. */
-};
-
-/* Attempt to translate a keycode that isn't listed in WinRT's VirtualKey enum.
- */
-static SDL_Scancode
-WINRT_TranslateUnofficialKeycode(int keycode)
-{
-    switch (keycode) {
-        case 173: return SDL_SCANCODE_MUTE;         /* VK_VOLUME_MUTE */
-        case 174: return SDL_SCANCODE_VOLUMEDOWN;   /* VK_VOLUME_DOWN */
-        case 175: return SDL_SCANCODE_VOLUMEUP;     /* VK_VOLUME_UP */
-        case 176: return SDL_SCANCODE_AUDIONEXT;    /* VK_MEDIA_NEXT_TRACK */
-        case 177: return SDL_SCANCODE_AUDIOPREV;    /* VK_MEDIA_PREV_TRACK */
-        // case 178: return ;                       /* VK_MEDIA_STOP */
-        case 179: return SDL_SCANCODE_AUDIOPLAY;    /* VK_MEDIA_PLAY_PAUSE */
-        case 180: return SDL_SCANCODE_MAIL;         /* VK_LAUNCH_MAIL */
-        case 181: return SDL_SCANCODE_MEDIASELECT;  /* VK_LAUNCH_MEDIA_SELECT */
-        // case 182: return ;                       /* VK_LAUNCH_APP1 */
-        case 183: return SDL_SCANCODE_CALCULATOR;   /* VK_LAUNCH_APP2 */
-        // case 184: return ;                       /* ... reserved ... */
-        // case 185: return ;                       /* ... reserved ... */
-        case 186: return SDL_SCANCODE_SEMICOLON;    /* VK_OEM_1, ';:' key on US standard keyboards */
-        case 187: return SDL_SCANCODE_EQUALS;       /* VK_OEM_PLUS */
-        case 188: return SDL_SCANCODE_COMMA;        /* VK_OEM_COMMA */
-        case 189: return SDL_SCANCODE_MINUS;        /* VK_OEM_MINUS */
-        case 190: return SDL_SCANCODE_PERIOD;       /* VK_OEM_PERIOD */
-        case 191: return SDL_SCANCODE_SLASH;        /* VK_OEM_2, '/?' key on US standard keyboards */
-        case 192: return SDL_SCANCODE_GRAVE;        /* VK_OEM_3, '`~' key on US standard keyboards */
-        // ?
-        // ... reserved or unassigned ...
-        // ?
-        case 219: return SDL_SCANCODE_LEFTBRACKET;  /* VK_OEM_4, '[{' key on US standard keyboards */
-        case 220: return SDL_SCANCODE_BACKSLASH;    /* VK_OEM_5, '\|' key on US standard keyboards */
-        case 221: return SDL_SCANCODE_RIGHTBRACKET; /* VK_OEM_6, ']}' key on US standard keyboards */
-        case 222: return SDL_SCANCODE_APOSTROPHE;   /* VK_OEM_7, 'single/double quote' on US standard keyboards */
-        default: break;
-    }
-    return SDL_SCANCODE_UNKNOWN;
-}
-
-static SDL_Scancode
-WINRT_TranslateKeycode(int keycode, unsigned int nativeScancode)
-{
-    // TODO, WinRT: try filling out the WinRT keycode table as much as possible, using the Win32 table for interpretation hints
-
-    SDL_Scancode scancode = SDL_SCANCODE_UNKNOWN;
-
-    /* HACK ALERT: At least one VirtualKey constant (Shift) with a left/right
-     * designation might not get reported with its correct handedness, however
-     * its hardware scan code can fill in the gaps.  If this is detected,
-     * use the hardware scan code to try telling if the left, or the right
-     * side's key was used.
-     *
-     * If Microsoft ever allows MapVirtualKey or MapVirtualKeyEx to be used
-     * in WinRT apps, or something similar to these (it doesn't appear to be,
-     * at least not for Windows [Phone] 8/8.1, as of Oct 24, 2014), then this
-     * hack might become deprecated, or obsolete.
-     */
-    if (nativeScancode < SDL_arraysize(windows_scancode_table)) {
-        switch (keycode) {
-            case 16:    // VirtualKey.Shift
-                switch (windows_scancode_table[nativeScancode]) {
-                    case SDL_SCANCODE_LSHIFT:
-                    case SDL_SCANCODE_RSHIFT:
-                        return windows_scancode_table[nativeScancode];
-                }
-                break;
-            
-            // Add others, as necessary.
-            //
-            // Unfortunately, this hack doesn't seem to work in determining
-            // handedness with Control keys.
-
-            default:
-                break;
-        }
-    }
-
-    /* Try to get a documented, WinRT, 'VirtualKey' next (as documented at
-       http://msdn.microsoft.com/en-us/library/windows/apps/windows.system.virtualkey.aspx ).
-       If that fails, fall back to a Win32 virtual key.
-       If that fails, attempt to fall back to a scancode-derived key.
-    */
-    if (keycode < SDL_arraysize(WinRT_Official_Keycodes)) {
-        scancode = WinRT_Official_Keycodes[keycode];
-    }
-    if (scancode == SDL_SCANCODE_UNKNOWN) {
-        scancode = WINRT_TranslateUnofficialKeycode(keycode);
-    }
-    if (scancode == SDL_SCANCODE_UNKNOWN) {
-        if (nativeScancode < SDL_arraysize(windows_scancode_table)) {
-            scancode = windows_scancode_table[nativeScancode];
-        }
-    }
-    /*
-    if (scancode == SDL_SCANCODE_UNKNOWN) {
-        SDL_Log("WinRT TranslateKeycode, unknown keycode=%d\n", (int)keycode);
-    }
-    */
-    return scancode;
-}
-
-void
-WINRT_ProcessKeyDownEvent(Windows::UI::Core::KeyEventArgs ^args)
-{
-    SDL_Scancode sdlScancode = WINRT_TranslateKeycode((int)args->VirtualKey, args->KeyStatus.ScanCode);
-#if 0
-    SDL_Keycode keycode = SDL_GetKeyFromScancode(sdlScancode);
-    SDL_Log("key down, handled=%s, ext?=%s, released?=%s, menu key down?=%s, "
-            "repeat count=%d, native scan code=0x%x, was down?=%s, vkey=%d, "
-            "sdl scan code=%d (%s), sdl key code=%d (%s)\n",
-        (args->Handled ? "1" : "0"),
-        (args->KeyStatus.IsExtendedKey ? "1" : "0"),
-        (args->KeyStatus.IsKeyReleased ? "1" : "0"),
-        (args->KeyStatus.IsMenuKeyDown ? "1" : "0"),
-        args->KeyStatus.RepeatCount,
-        args->KeyStatus.ScanCode,
-        (args->KeyStatus.WasKeyDown ? "1" : "0"),
-        args->VirtualKey,
-        sdlScancode,
-        SDL_GetScancodeName(sdlScancode),
-        keycode,
-        SDL_GetKeyName(keycode));
-    //args->Handled = true;
-#endif
-    SDL_SendKeyboardKey(SDL_PRESSED, sdlScancode);
-}
-
-void
-WINRT_ProcessKeyUpEvent(Windows::UI::Core::KeyEventArgs ^args)
-{
-    SDL_Scancode sdlScancode = WINRT_TranslateKeycode((int)args->VirtualKey, args->KeyStatus.ScanCode);
-#if 0
-    SDL_Keycode keycode = SDL_GetKeyFromScancode(sdlScancode);
-    SDL_Log("key up, handled=%s, ext?=%s, released?=%s, menu key down?=%s, "
-            "repeat count=%d, native scan code=0x%x, was down?=%s, vkey=%d, "
-            "sdl scan code=%d (%s), sdl key code=%d (%s)\n",
-        (args->Handled ? "1" : "0"),
-        (args->KeyStatus.IsExtendedKey ? "1" : "0"),
-        (args->KeyStatus.IsKeyReleased ? "1" : "0"),
-        (args->KeyStatus.IsMenuKeyDown ? "1" : "0"),
-        args->KeyStatus.RepeatCount,
-        args->KeyStatus.ScanCode,
-        (args->KeyStatus.WasKeyDown ? "1" : "0"),
-        args->VirtualKey,
-        sdlScancode,
-        SDL_GetScancodeName(sdlScancode),
-        keycode,
-        SDL_GetKeyName(keycode));
-    //args->Handled = true;
-#endif
-    SDL_SendKeyboardKey(SDL_RELEASED, sdlScancode);
-}
-
-void
-WINRT_ProcessCharacterReceivedEvent(Windows::UI::Core::CharacterReceivedEventArgs ^args)
-{
-    wchar_t src_ucs2[2];
-    char dest_utf8[16];
-    int result;
-
-    /* Setup src */
-    src_ucs2[0] = args->KeyCode;
-    src_ucs2[1] = L'\0';
-
-    /* Convert the text, then send an SDL_TEXTINPUT event. */
-    result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)&src_ucs2, -1, (LPSTR)dest_utf8, sizeof(dest_utf8), NULL, NULL);
-    if (result > 0) {
-        SDL_SendKeyboardText(dest_utf8);
-    }
-}
-
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-
-static bool WINRT_InputPaneVisible = false;
-
-void WINTRT_OnInputPaneShowing(Windows::UI::ViewManagement::InputPane ^ sender, Windows::UI::ViewManagement::InputPaneVisibilityEventArgs ^ args)
-{
-    WINRT_InputPaneVisible = true;
-}
-
-void WINTRT_OnInputPaneHiding(Windows::UI::ViewManagement::InputPane ^ sender, Windows::UI::ViewManagement::InputPaneVisibilityEventArgs ^ args)
-{
-    WINRT_InputPaneVisible = false;
-}
-
-void WINTRT_InitialiseInputPaneEvents(_THIS)
-{
-    using namespace Windows::UI::ViewManagement;
-    InputPane ^ inputPane = InputPane::GetForCurrentView();
-    if (inputPane) {
-        inputPane->Showing += ref new Windows::Foundation::TypedEventHandler<Windows::UI::ViewManagement::InputPane ^, 
-            Windows::UI::ViewManagement::InputPaneVisibilityEventArgs ^>(&WINTRT_OnInputPaneShowing);
-        inputPane->Hiding += ref new Windows::Foundation::TypedEventHandler<Windows::UI::ViewManagement::InputPane ^, 
-            Windows::UI::ViewManagement::InputPaneVisibilityEventArgs ^>(&WINTRT_OnInputPaneHiding);
-    }
-}
-
-SDL_bool WINRT_HasScreenKeyboardSupport(_THIS)
-{
-    return SDL_TRUE;
-}
-
-void WINRT_ShowScreenKeyboard(_THIS, SDL_Window *window)
-{
-    using namespace Windows::UI::ViewManagement;
-    InputPane ^ inputPane = InputPane::GetForCurrentView();
-    if (inputPane) {
-        inputPane->TryShow();
-    }
-}
-
-void WINRT_HideScreenKeyboard(_THIS, SDL_Window *window)
-{
-    using namespace Windows::UI::ViewManagement;
-    InputPane ^ inputPane = InputPane::GetForCurrentView();
-    if (inputPane) {
-        inputPane->TryHide();
-    }
-}
-
-SDL_bool WINRT_IsScreenKeyboardShown(_THIS, SDL_Window *window)
-{
-    using namespace Windows::UI::ViewManagement;
-    InputPane ^ inputPane = InputPane::GetForCurrentView();
-    if (inputPane) {
-        switch (SDL_WinRTGetDeviceFamily()) {
-        case SDL_WINRT_DEVICEFAMILY_XBOX:
-            //Documentation recommends using inputPane->Visible 
-            //https://learn.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.inputpane.visible?view=winrt-22621
-            //This does not seem to work on latest UWP/Xbox.
-            //Workaround: Listen to Showing/Hiding events
-            if (WINRT_InputPaneVisible) {
-                return SDL_TRUE;
-            }
-            break;
-        default:
-            //OccludedRect is recommend on universal apps per docs
-            //https://learn.microsoft.com/en-us/uwp/api/windows.ui.viewmanagement.inputpane.visible?view=winrt-22621
-            Windows::Foundation::Rect rect = inputPane->OccludedRect;
-            if (rect.Width > 0 && rect.Height > 0) {
-                return SDL_TRUE;
-            }
-            break;
-        }
-    }
-    return SDL_FALSE;
-}
-
-#endif  // NTDDI_VERSION >= ...
-
-#endif // SDL_VIDEO_DRIVER_WINRT

+ 0 - 118
src/video/winrt/SDL_winrtmessagebox.cpp

@@ -1,118 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-extern "C" {
-#include "SDL_messagebox.h"
-#include "../../core/windows/SDL_windows.h"
-}
-
-#include "SDL_winrtevents_c.h"
-
-#include <windows.ui.popups.h>
-using namespace Platform;
-using namespace Windows::Foundation;
-using namespace Windows::UI::Popups;
-
-static String ^
-WINRT_UTF8ToPlatformString(const char * str)
-{
-    wchar_t * wstr = WIN_UTF8ToString(str);
-    String ^ rtstr = ref new String(wstr);
-    SDL_free(wstr);
-    return rtstr;
-}
-
-extern "C" int
-WINRT_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
-{
-#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) && (NTDDI_VERSION == NTDDI_WIN8)
-    /* Sadly, Windows Phone 8 doesn't include the MessageDialog class that
-     * Windows 8.x/RT does, even though MSDN's reference documentation for
-     * Windows Phone 8 mentions it.
-     * 
-     * The .NET runtime on Windows Phone 8 does, however, include a
-     * MessageBox class.  Perhaps this could be called, somehow?
-     */
-    return SDL_SetError("SDL_messagebox support is not available for Windows Phone 8.0");
-#else
-    SDL_VideoDevice *_this = SDL_GetVideoDevice();
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    const int maxbuttons = 2;
-    const char * platform = "Windows Phone 8.1+";
-#else
-    const int maxbuttons = 3;
-    const char * platform = "Windows 8.x";
-#endif
-
-    if (messageboxdata->numbuttons > maxbuttons) {
-        return SDL_SetError("WinRT's MessageDialog only supports %d buttons, at most, on %s. %d were requested.",
-            maxbuttons, platform, messageboxdata->numbuttons);
-    }
-
-    /* Build a MessageDialog object and its buttons */
-    MessageDialog ^ dialog = ref new MessageDialog(WINRT_UTF8ToPlatformString(messageboxdata->message));
-    dialog->Title = WINRT_UTF8ToPlatformString(messageboxdata->title);
-    for (int i = 0; i < messageboxdata->numbuttons; ++i) {
-        const SDL_MessageBoxButtonData *sdlButton;
-        if (messageboxdata->flags & SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT) {
-            sdlButton = &messageboxdata->buttons[messageboxdata->numbuttons - 1 - i];
-        } else {
-            sdlButton = &messageboxdata->buttons[i];
-        }
-        UICommand ^ button = ref new UICommand(WINRT_UTF8ToPlatformString(sdlButton->text));
-        button->Id = IntPtr((int)((size_t)(sdlButton - messageboxdata->buttons)));
-        dialog->Commands->Append(button);
-        if (sdlButton->flags & SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT) {
-            dialog->CancelCommandIndex = i;
-        }
-        if (sdlButton->flags & SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT) {
-            dialog->DefaultCommandIndex = i;
-        }
-    }
-
-    /* Display the MessageDialog, then wait for it to be closed */
-    /* TODO, WinRT: Find a way to redraw MessageDialog instances if a GPU device-reset occurs during the following event-loop */
-    auto operation = dialog->ShowAsync();
-    while (operation->Status == Windows::Foundation::AsyncStatus::Started) {
-        WINRT_PumpEvents(_this);
-    }
-
-    /* Retrieve results from the MessageDialog and process them accordingly */
-    if (operation->Status != Windows::Foundation::AsyncStatus::Completed) {
-        return SDL_SetError("An unknown error occurred in displaying the WinRT MessageDialog");
-    }
-    if (buttonid) {
-        IntPtr results = safe_cast<IntPtr>(operation->GetResults()->Id);
-        int clicked_index = results.ToInt32();
-        *buttonid = messageboxdata->buttons[clicked_index].buttonid;
-    }
-    return 0;
-#endif /* if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP / else */
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */
-

+ 0 - 29
src/video/winrt/SDL_winrtmessagebox.h

@@ -1,29 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-extern int WINRT_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 222
src/video/winrt/SDL_winrtmouse.cpp

@@ -1,222 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/*
- * Windows includes:
- */
-#include <Windows.h>
-#include <windows.ui.core.h>
-using namespace Windows::UI::Core;
-using Windows::UI::Core::CoreCursor;
-
-/*
- * SDL includes:
- */
-extern "C" {
-#include "../../events/SDL_mouse_c.h"
-#include "../../events/SDL_touch_c.h"
-#include "../SDL_sysvideo.h"
-#include "SDL_events.h"
-}
-
-#include "../../core/winrt/SDL_winrtapp_direct3d.h"
-#include "SDL_winrtvideo_cpp.h"
-#include "SDL_winrtmouse_c.h"
-
-
-extern "C" SDL_bool WINRT_UsingRelativeMouseMode = SDL_FALSE;
-
-
-static SDL_Cursor *
-WINRT_CreateSystemCursor(SDL_SystemCursor id)
-{
-    SDL_Cursor *cursor;
-    CoreCursorType cursorType = CoreCursorType::Arrow;
-
-    switch(id)
-    {
-    default:
-        SDL_assert(0);
-        return NULL;
-    case SDL_SYSTEM_CURSOR_ARROW:     cursorType = CoreCursorType::Arrow; break;
-    case SDL_SYSTEM_CURSOR_IBEAM:     cursorType = CoreCursorType::IBeam; break;
-    case SDL_SYSTEM_CURSOR_WAIT:      cursorType = CoreCursorType::Wait; break;
-    case SDL_SYSTEM_CURSOR_CROSSHAIR: cursorType = CoreCursorType::Cross; break;
-    case SDL_SYSTEM_CURSOR_WAITARROW: cursorType = CoreCursorType::Wait; break;
-    case SDL_SYSTEM_CURSOR_SIZENWSE:  cursorType = CoreCursorType::SizeNorthwestSoutheast; break;
-    case SDL_SYSTEM_CURSOR_SIZENESW:  cursorType = CoreCursorType::SizeNortheastSouthwest; break;
-    case SDL_SYSTEM_CURSOR_SIZEWE:    cursorType = CoreCursorType::SizeWestEast; break;
-    case SDL_SYSTEM_CURSOR_SIZENS:    cursorType = CoreCursorType::SizeNorthSouth; break;
-    case SDL_SYSTEM_CURSOR_SIZEALL:   cursorType = CoreCursorType::SizeAll; break;
-    case SDL_SYSTEM_CURSOR_NO:        cursorType = CoreCursorType::UniversalNo; break;
-    case SDL_SYSTEM_CURSOR_HAND:      cursorType = CoreCursorType::Hand; break;
-    }
-
-    cursor = (SDL_Cursor *) SDL_calloc(1, sizeof(*cursor));
-    if (cursor) {
-        /* Create a pointer to a COM reference to a cursor.  The extra
-           pointer is used (on top of the COM reference) to allow the cursor
-           to be referenced by the SDL_cursor's driverdata field, which is
-           a void pointer.
-        */
-        CoreCursor ^* theCursor = new CoreCursor^(nullptr);
-        *theCursor = ref new CoreCursor(cursorType, 0);
-        cursor->driverdata = (void *) theCursor;
-    } else {
-        SDL_OutOfMemory();
-    }
-
-    return cursor;
-}
-
-static SDL_Cursor *
-WINRT_CreateDefaultCursor()
-{
-    return WINRT_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
-}
-
-static void
-WINRT_FreeCursor(SDL_Cursor * cursor)
-{
-    if (cursor->driverdata) {
-        CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
-        *theCursor = nullptr;       // Release the COM reference to the CoreCursor
-        delete theCursor;           // Delete the pointer to the COM reference
-    }
-    SDL_free(cursor);
-}
-
-static int
-WINRT_ShowCursor(SDL_Cursor * cursor)
-{
-    // TODO, WinRT, XAML: make WINRT_ShowCursor work when XAML support is enabled.
-    if ( ! CoreWindow::GetForCurrentThread()) {
-        return 0;
-    }
-
-    CoreWindow ^ coreWindow = CoreWindow::GetForCurrentThread();
-    if (cursor) {
-        CoreCursor ^* theCursor = (CoreCursor ^*) cursor->driverdata;
-        coreWindow->PointerCursor = *theCursor;
-    } else {
-        // HACK ALERT: TL;DR - Hiding the cursor in WinRT/UWP apps is weird, and
-        //   a Win32-style cursor resource file must be directly included in apps,
-        //   otherwise hiding the cursor will cause mouse-motion data to never be
-        //   received.
-        //
-        // Here's the lengthy explanation:
-        //
-        // There are two ways to hide a cursor in WinRT/UWP apps.
-        // Both involve setting the WinRT CoreWindow's (which is somewhat analogous
-        // to a Win32 HWND) 'PointerCursor' property.
-        //
-        // The first way to hide a cursor sets PointerCursor to nullptr.  This
-        // is, arguably, the easiest to implement for an app.  It does have an
-        // unfortunate side-effect: it'll prevent mouse-motion events from being
-        // sent to the app (via CoreWindow).
-        //
-        // The second way to hide a cursor sets PointerCursor to a transparent
-        // cursor.  This allows mouse-motion events to be sent to the app, but is
-        // more difficult to set up, as:
-        //   1. WinRT/UWP, while providing a few stock cursors, does not provide
-        //      a completely transparent cursor.
-        //   2. WinRT/UWP allows apps to provide custom-built cursors, but *ONLY*
-        //      if they are linked directly inside the app, via Win32-style
-        //      cursor resource files.  APIs to create cursors at runtime are
-        //      not provided to apps, and attempting to link-to or use Win32
-        //      cursor-creation APIs could cause an app to fail Windows Store
-        //      certification.
-        //
-        // SDL can use either means of hiding the cursor.  It provides a Win32-style
-        // set of cursor resource files in its source distribution, inside
-        // src/main/winrt/.  If those files are linked to an SDL-for-WinRT/UWP app
-        // (by including them in a MSVC project, for example), SDL will attempt to
-        // use those, if and when the cursor is hidden via SDL APIs.  If those
-        // files are not linked in, SDL will attempt to hide the cursor via the
-        // 'set PointerCursor to nullptr' means (which, if you recall, causes
-        // mouse-motion data to NOT be sent to the app!).
-        //
-        // Tech notes:
-        //  - SDL's blank cursor resource uses a resource ID of 5000.
-        //  - SDL's cursor resources consist of the following two files:
-        //     - src/main/winrt/SDL3-WinRTResource_BlankCursor.cur -- cursor pixel data
-        //     - src/main/winrt/SDL3-WinRTResources.rc             -- declares the cursor resource, and its ID (of 5000)
-        //
-
-        const unsigned int win32CursorResourceID = 5000;  
-        CoreCursor ^ blankCursor = ref new CoreCursor(CoreCursorType::Custom, win32CursorResourceID);
-
-        // Set 'PointerCursor' to 'blankCursor' in a way that shouldn't throw
-        // an exception if the app hasn't loaded that resource.
-        ABI::Windows::UI::Core::ICoreCursor * iblankCursor = reinterpret_cast<ABI::Windows::UI::Core::ICoreCursor *>(blankCursor);
-        ABI::Windows::UI::Core::ICoreWindow * icoreWindow = reinterpret_cast<ABI::Windows::UI::Core::ICoreWindow *>(coreWindow);
-        HRESULT hr = icoreWindow->put_PointerCursor(iblankCursor);
-        if (FAILED(hr)) {
-            // The app doesn't contain the cursor resource, or some other error
-            // occurred.  Just use the other, but mouse-motion-preventing, means of
-            // hiding the cursor.
-            coreWindow->PointerCursor = nullptr;
-        }
-    }
-    return 0;
-}
-
-static int
-WINRT_SetRelativeMouseMode(SDL_bool enabled)
-{
-    WINRT_UsingRelativeMouseMode = enabled;
-    return 0;
-}
-
-void
-WINRT_InitMouse(_THIS)
-{
-    SDL_Mouse *mouse = SDL_GetMouse();
-
-    /* DLudwig, Dec 3, 2012: WinRT does not currently provide APIs for
-       the following features, AFAIK:
-        - custom cursors  (multiple system cursors are, however, available)
-        - programmatically moveable cursors
-    */
-
-#if WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP
-    //mouse->CreateCursor = WINRT_CreateCursor;
-    mouse->CreateSystemCursor = WINRT_CreateSystemCursor;
-    mouse->ShowCursor = WINRT_ShowCursor;
-    mouse->FreeCursor = WINRT_FreeCursor;
-    //mouse->WarpMouse = WINRT_WarpMouse;
-    mouse->SetRelativeMouseMode = WINRT_SetRelativeMouseMode;
-
-    SDL_SetDefaultCursor(WINRT_CreateDefaultCursor());
-#endif
-}
-
-void
-WINRT_QuitMouse(_THIS)
-{
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 40
src/video/winrt/SDL_winrtmouse_c.h

@@ -1,40 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-#ifndef SDL_winrtmouse_h_
-#define SDL_winrtmouse_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void WINRT_InitMouse(_THIS);
-extern void WINRT_QuitMouse(_THIS);
-extern SDL_bool WINRT_UsingRelativeMouseMode;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SDL_winrtmouse_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 203
src/video/winrt/SDL_winrtopengles.cpp

@@ -1,203 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT && SDL_VIDEO_OPENGL_EGL
-
-/* EGL implementation of SDL OpenGL support */
-
-#include "SDL_winrtvideo_cpp.h"
-extern "C" {
-#include "SDL_winrtopengles.h"
-#include "SDL_loadso.h"
-#include "../SDL_egl_c.h"
-}
-
-/* Windows includes */
-#include <wrl/client.h>
-using namespace Windows::UI::Core;
-
-/* ANGLE/WinRT constants */
-static const int ANGLE_D3D_FEATURE_LEVEL_ANY = 0;
-#define EGL_PLATFORM_ANGLE_ANGLE                        0x3202
-#define EGL_PLATFORM_ANGLE_TYPE_ANGLE                   0x3203
-#define EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE      0x3204
-#define EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE      0x3205
-#define EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE             0x3208
-#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE            0x3209
-#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE       0x320B
-#define EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE  0x320F
-
-#define EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER   0x320B
-
-
-/*
- * SDL/EGL top-level implementation
- */
-
-extern "C" int
-WINRT_GLES_LoadLibrary(_THIS, const char *path)
-{
-    SDL_VideoData *video_data = (SDL_VideoData *)_this->driverdata;
-
-    if (SDL_EGL_LoadLibrary(_this, path, EGL_DEFAULT_DISPLAY, 0) != 0) {
-        return -1;
-    }
-
-    /* Load ANGLE/WinRT-specific functions */
-    CreateWinrtEglWindow_Old_Function CreateWinrtEglWindow = (CreateWinrtEglWindow_Old_Function) SDL_LoadFunction(_this->egl_data->opengl_dll_handle, "CreateWinrtEglWindow");
-    if (CreateWinrtEglWindow) {
-        /* 'CreateWinrtEglWindow' was found, which means that an an older
-         * version of ANGLE/WinRT is being used.  Continue setting up EGL,
-         * as appropriate to this version of ANGLE.
-         */
-
-        /* Create an ANGLE/WinRT EGL-window */
-        /* TODO, WinRT: check for XAML usage before accessing the CoreWindow, as not doing so could lead to a crash */
-        CoreWindow ^ native_win = CoreWindow::GetForCurrentThread();
-        Microsoft::WRL::ComPtr<IUnknown> cpp_win = reinterpret_cast<IUnknown *>(native_win);
-        HRESULT result = CreateWinrtEglWindow(cpp_win, ANGLE_D3D_FEATURE_LEVEL_ANY, &(video_data->winrtEglWindow));
-        if (FAILED(result)) {
-            return -1;
-        }
-
-        /* Call eglGetDisplay and eglInitialize as appropriate.  On other
-         * platforms, this would probably get done by SDL_EGL_LoadLibrary,
-         * however ANGLE/WinRT's current implementation (as of Mar 22, 2014) of
-         * eglGetDisplay requires that a C++ object be passed into it, so the
-         * call will be made in this file, a C++ file, instead.
-         */
-        Microsoft::WRL::ComPtr<IUnknown> cpp_display = video_data->winrtEglWindow;
-        _this->egl_data->egl_display = ((eglGetDisplay_Old_Function)_this->egl_data->eglGetDisplay)(cpp_display);
-        if (!_this->egl_data->egl_display) {
-            return SDL_EGL_SetError("Could not get Windows 8.0 EGL display", "eglGetDisplay");
-        }
-
-        if (_this->egl_data->eglInitialize(_this->egl_data->egl_display, NULL, NULL) != EGL_TRUE) {
-            return SDL_EGL_SetError("Could not initialize Windows 8.0 EGL", "eglInitialize");
-        }
-    } else {
-        /* Declare some ANGLE/EGL initialization property-sets, as suggested by
-         * MSOpenTech's ANGLE-for-WinRT template apps:
-         */
-        const EGLint defaultDisplayAttributes[] =
-        {
-            EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
-            EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
-            EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
-            EGL_NONE,
-        };
-
-        const EGLint fl9_3DisplayAttributes[] =
-        {
-            EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
-            EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, 9,
-            EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, 3,
-            EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
-            EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
-            EGL_NONE,
-        };
-
-        const EGLint warpDisplayAttributes[] =
-        {
-            EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
-            EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE,
-            EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
-            EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
-            EGL_NONE,
-        };
-
-        /* 'CreateWinrtEglWindow' was NOT found, which either means that a
-         * newer version of ANGLE/WinRT is being used, or that we don't have
-         * a valid copy of ANGLE.
-         *
-         * Try loading ANGLE as if it were the newer version.
-         */
-        eglGetPlatformDisplayEXT_Function eglGetPlatformDisplayEXT = (eglGetPlatformDisplayEXT_Function)_this->egl_data->eglGetProcAddress("eglGetPlatformDisplayEXT");
-        if (!eglGetPlatformDisplayEXT) {
-            return SDL_EGL_SetError("Could not retrieve ANGLE/WinRT display function(s)", "eglGetProcAddress");
-        }
-
-#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP)
-        /* Try initializing EGL at D3D11 Feature Level 10_0+ (which is not
-         * supported on WinPhone 8.x.
-         */
-        _this->egl_data->egl_display = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, defaultDisplayAttributes);
-        if (!_this->egl_data->egl_display) {
-            return SDL_EGL_SetError("Could not get EGL display for Direct3D 10_0+", "eglGetPlatformDisplayEXT");
-        }
-
-        if (_this->egl_data->eglInitialize(_this->egl_data->egl_display, NULL, NULL) != EGL_TRUE)
-#endif
-        {
-            /* Try initializing EGL at D3D11 Feature Level 9_3, in case the
-             * 10_0 init fails, or we're on Windows Phone (which only supports
-             * 9_3).
-             */
-            _this->egl_data->egl_display = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, fl9_3DisplayAttributes);
-            if (!_this->egl_data->egl_display) {
-                return SDL_EGL_SetError("Could not get EGL display for Direct3D 9_3", "eglGetPlatformDisplayEXT");
-            }
-
-            if (_this->egl_data->eglInitialize(_this->egl_data->egl_display, NULL, NULL) != EGL_TRUE) {
-                /* Try initializing EGL at D3D11 Feature Level 11_0 on WARP
-                 * (a Windows-provided, software rasterizer) if all else fails.
-                 */
-                _this->egl_data->egl_display = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, warpDisplayAttributes);
-                if (!_this->egl_data->egl_display) {
-                    return SDL_EGL_SetError("Could not get EGL display for Direct3D WARP", "eglGetPlatformDisplayEXT");
-                }
-
-                if (_this->egl_data->eglInitialize(_this->egl_data->egl_display, NULL, NULL) != EGL_TRUE) {
-                    return SDL_EGL_SetError("Could not initialize WinRT 8.x+ EGL", "eglInitialize");
-                }
-            }
-        }
-    }
-
-    return 0;
-}
-
-extern "C" void
-WINRT_GLES_UnloadLibrary(_THIS)
-{
-    SDL_VideoData *video_data = (SDL_VideoData *)_this->driverdata;
-
-    /* Release SDL's own COM reference to the ANGLE/WinRT IWinrtEglWindow */
-    if (video_data->winrtEglWindow) {
-        video_data->winrtEglWindow->Release();
-        video_data->winrtEglWindow = nullptr;
-    }
-
-    /* Perform the bulk of the unloading */
-    SDL_EGL_UnloadLibrary(_this);
-}
-
-extern "C" {
-SDL_EGL_CreateContext_impl(WINRT)
-SDL_EGL_SwapWindow_impl(WINRT)
-SDL_EGL_MakeCurrent_impl(WINRT)
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT && SDL_VIDEO_OPENGL_EGL */
-
-/* vi: set ts=4 sw=4 expandtab: */
-

+ 0 - 70
src/video/winrt/SDL_winrtopengles.h

@@ -1,70 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "SDL_config.h"
-
-#ifndef SDL_winrtopengles_h_
-#define SDL_winrtopengles_h_
-
-#if SDL_VIDEO_DRIVER_WINRT && SDL_VIDEO_OPENGL_EGL
-
-#include "../SDL_sysvideo.h"
-#include "../SDL_egl_c.h"
-
-/* OpenGLES functions */
-#define WINRT_GLES_GetAttribute SDL_EGL_GetAttribute
-#define WINRT_GLES_GetProcAddress SDL_EGL_GetProcAddress
-#define WINRT_GLES_SetSwapInterval SDL_EGL_SetSwapInterval
-#define WINRT_GLES_GetSwapInterval SDL_EGL_GetSwapInterval
-#define WINRT_GLES_DeleteContext SDL_EGL_DeleteContext
-
-extern int WINRT_GLES_LoadLibrary(_THIS, const char *path);
-extern void WINRT_GLES_UnloadLibrary(_THIS);
-extern SDL_GLContext WINRT_GLES_CreateContext(_THIS, SDL_Window * window);
-extern int WINRT_GLES_SwapWindow(_THIS, SDL_Window * window);
-extern int WINRT_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
-
-
-#ifdef __cplusplus
-
-/* Typedefs for ANGLE/WinRT's C++-based native-display and native-window types,
- * which are used when calling eglGetDisplay and eglCreateWindowSurface.
- */
-typedef Microsoft::WRL::ComPtr<IUnknown> WINRT_EGLNativeWindowType_Old;
-
-/* Function pointer typedefs for 'old' ANGLE/WinRT's functions, which may
- * require that C++ objects be passed in:
- */
-typedef EGLDisplay (EGLAPIENTRY *eglGetDisplay_Old_Function)(WINRT_EGLNativeWindowType_Old);
-typedef EGLSurface (EGLAPIENTRY *eglCreateWindowSurface_Old_Function)(EGLDisplay, EGLConfig, WINRT_EGLNativeWindowType_Old, const EGLint *);
-typedef HRESULT (EGLAPIENTRY *CreateWinrtEglWindow_Old_Function)(Microsoft::WRL::ComPtr<IUnknown>, int, IUnknown ** result);
-
-#endif /* __cplusplus */
-
-/* Function pointer typedefs for 'new' ANGLE/WinRT functions, which, unlike
- * the old functions, do not require C++ support and work with plain C.
- */
-typedef EGLDisplay (EGLAPIENTRY *eglGetPlatformDisplayEXT_Function)(EGLenum, void *, const EGLint *);
-
-#endif /* SDL_VIDEO_DRIVER_WINRT && SDL_VIDEO_OPENGL_EGL */
-
-#endif /* SDL_winrtopengles_h_ */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 407
src/video/winrt/SDL_winrtpointerinput.cpp

@@ -1,407 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/* SDL includes */
-#include "SDL_winrtevents_c.h"
-#include "SDL_winrtmouse_c.h"
-#include "SDL_winrtvideo_cpp.h"
-#include "SDL_system.h"
-
-extern "C" {
-#include "../SDL_sysvideo.h"
-#include "../../events/SDL_events_c.h"
-#include "../../events/SDL_mouse_c.h"
-#include "../../events/SDL_touch_c.h"
-}
-
-/* File-specific globals: */
-static SDL_TouchID WINRT_TouchID = 1;
-
-
-void
-WINRT_InitTouch(_THIS)
-{
-    SDL_AddTouch(WINRT_TouchID, SDL_TOUCH_DEVICE_DIRECT, "");
-}
-
-
-//
-// Applies necessary geometric transformations to raw cursor positions:
-//
-Windows::Foundation::Point
-WINRT_TransformCursorPosition(SDL_Window * window,
-                              Windows::Foundation::Point rawPosition,
-                              WINRT_CursorNormalizationType normalization)
-{
-    using namespace Windows::UI::Core;
-    using namespace Windows::Graphics::Display;
-
-    if (!window) {
-        return rawPosition;
-    }
-
-    SDL_WindowData * windowData = (SDL_WindowData *) window->driverdata;
-    if (windowData->coreWindow == nullptr) {
-        // For some reason, the window isn't associated with a CoreWindow.
-        // This might end up being the case as XAML support is extended.
-        // For now, if there's no CoreWindow attached to the SDL_Window,
-        // don't do any transforms.
-
-        // TODO, WinRT: make sure touch input coordinate ranges are correct when using XAML support
-        return rawPosition;
-    }
-
-    // The CoreWindow can only be accessed on certain thread(s).
-    SDL_assert(CoreWindow::GetForCurrentThread() != nullptr);
-
-    CoreWindow ^ nativeWindow = windowData->coreWindow.Get();
-    Windows::Foundation::Point outputPosition;
-
-    // Compute coordinates normalized from 0..1.
-    // If the coordinates need to be sized to the SDL window,
-    // we'll do that after.
-#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION > NTDDI_WIN8)
-    outputPosition.X = rawPosition.X / nativeWindow->Bounds.Width;
-    outputPosition.Y = rawPosition.Y / nativeWindow->Bounds.Height;
-#else
-    switch (WINRT_DISPLAY_PROPERTY(CurrentOrientation))
-    {
-        case DisplayOrientations::Portrait:
-            outputPosition.X = rawPosition.X / nativeWindow->Bounds.Width;
-            outputPosition.Y = rawPosition.Y / nativeWindow->Bounds.Height;
-            break;
-        case DisplayOrientations::PortraitFlipped:
-            outputPosition.X = 1.0f - (rawPosition.X / nativeWindow->Bounds.Width);
-            outputPosition.Y = 1.0f - (rawPosition.Y / nativeWindow->Bounds.Height);
-            break;
-        case DisplayOrientations::Landscape:
-            outputPosition.X = rawPosition.Y / nativeWindow->Bounds.Height;
-            outputPosition.Y = 1.0f - (rawPosition.X / nativeWindow->Bounds.Width);
-            break;
-        case DisplayOrientations::LandscapeFlipped:
-            outputPosition.X = 1.0f - (rawPosition.Y / nativeWindow->Bounds.Height);
-            outputPosition.Y = rawPosition.X / nativeWindow->Bounds.Width;
-            break;
-        default:
-            break;
-    }
-#endif
-
-    if (normalization == TransformToSDLWindowSize) {
-        outputPosition.X *= ((float32) window->w);
-        outputPosition.Y *= ((float32) window->h);
-    }
-
-    return outputPosition;
-}
-
-SDL_bool
-WINRT_GetSDLButtonForPointerPoint(Windows::UI::Input::PointerPoint ^pt, Uint8 *button, Uint8 *pressed)
-{
-    using namespace Windows::UI::Input;
-
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    *button = SDL_BUTTON_LEFT;
-    return SDL_TRUE;
-#else
-    switch (pt->Properties->PointerUpdateKind)
-    {
-        case PointerUpdateKind::LeftButtonPressed:
-        case PointerUpdateKind::LeftButtonReleased:
-            *button = SDL_BUTTON_LEFT;
-            *pressed = (pt->Properties->PointerUpdateKind == PointerUpdateKind::LeftButtonPressed);
-            return SDL_TRUE;
-
-        case PointerUpdateKind::RightButtonPressed:
-        case PointerUpdateKind::RightButtonReleased:
-            *button = SDL_BUTTON_RIGHT;
-            *pressed = (pt->Properties->PointerUpdateKind == PointerUpdateKind::RightButtonPressed);
-            return SDL_TRUE;
-
-        case PointerUpdateKind::MiddleButtonPressed:
-        case PointerUpdateKind::MiddleButtonReleased:
-            *button = SDL_BUTTON_MIDDLE;
-            *pressed = (pt->Properties->PointerUpdateKind == PointerUpdateKind::MiddleButtonPressed);
-            return SDL_TRUE;
-
-        case PointerUpdateKind::XButton1Pressed:
-        case PointerUpdateKind::XButton1Released:
-            *button = SDL_BUTTON_X1;
-            *pressed = (pt->Properties->PointerUpdateKind == PointerUpdateKind::XButton1Pressed);
-            return SDL_TRUE;
-
-        case PointerUpdateKind::XButton2Pressed:
-        case PointerUpdateKind::XButton2Released:
-            *button = SDL_BUTTON_X2;
-            *pressed = (pt->Properties->PointerUpdateKind == PointerUpdateKind::XButton2Pressed);
-            return SDL_TRUE;
-
-        default:
-            break;
-    }
-#endif
-
-    *button = 0;
-    *pressed = 0;
-    return SDL_FALSE;
-}
-
-//const char *
-//WINRT_ConvertPointerUpdateKindToString(Windows::UI::Input::PointerUpdateKind kind)
-//{
-//    using namespace Windows::UI::Input;
-//
-//    switch (kind)
-//    {
-//        case PointerUpdateKind::Other:
-//            return "Other";
-//        case PointerUpdateKind::LeftButtonPressed:
-//            return "LeftButtonPressed";
-//        case PointerUpdateKind::LeftButtonReleased:
-//            return "LeftButtonReleased";
-//        case PointerUpdateKind::RightButtonPressed:
-//            return "RightButtonPressed";
-//        case PointerUpdateKind::RightButtonReleased:
-//            return "RightButtonReleased";
-//        case PointerUpdateKind::MiddleButtonPressed:
-//            return "MiddleButtonPressed";
-//        case PointerUpdateKind::MiddleButtonReleased:
-//            return "MiddleButtonReleased";
-//        case PointerUpdateKind::XButton1Pressed:
-//            return "XButton1Pressed";
-//        case PointerUpdateKind::XButton1Released:
-//            return "XButton1Released";
-//        case PointerUpdateKind::XButton2Pressed:
-//            return "XButton2Pressed";
-//        case PointerUpdateKind::XButton2Released:
-//            return "XButton2Released";
-//    }
-//
-//    return "";
-//}
-
-static bool
-WINRT_IsTouchEvent(Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-#if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-    return true;
-#else
-    using namespace Windows::Devices::Input;
-    switch (pointerPoint->PointerDevice->PointerDeviceType) {
-        case PointerDeviceType::Touch:
-        case PointerDeviceType::Pen:
-            return true;
-        default:
-            return false;
-    }
-#endif
-}
-
-void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window) {
-        return;
-    }
-
-    if ( ! WINRT_IsTouchEvent(pointerPoint)) {
-        Uint8 button, pressed;
-        WINRT_GetSDLButtonForPointerPoint(pointerPoint, &button, &pressed);
-        SDL_assert(pressed == 1);
-        SDL_SendMouseButton(window, 0, SDL_PRESSED, button);
-    } else {
-        Windows::Foundation::Point normalizedPoint = WINRT_TransformCursorPosition(window, pointerPoint->Position, NormalizeZeroToOne);
-        Windows::Foundation::Point windowPoint = WINRT_TransformCursorPosition(window, pointerPoint->Position, TransformToSDLWindowSize);
-
-        SDL_SendTouch(
-            WINRT_TouchID,
-            (SDL_FingerID) pointerPoint->PointerId,
-            window,
-            SDL_TRUE,
-            normalizedPoint.X,
-            normalizedPoint.Y,
-            pointerPoint->Properties->Pressure);
-    }
-}
-
-void
-WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window || WINRT_UsingRelativeMouseMode) {
-        return;
-    }
-
-    Windows::Foundation::Point normalizedPoint = WINRT_TransformCursorPosition(window, pointerPoint->Position, NormalizeZeroToOne);
-    Windows::Foundation::Point windowPoint = WINRT_TransformCursorPosition(window, pointerPoint->Position, TransformToSDLWindowSize);
-
-    if ( ! WINRT_IsTouchEvent(pointerPoint)) {
-        /* For some odd reason Moved events are used for multiple mouse buttons */
-        Uint8 button, pressed;
-        if (WINRT_GetSDLButtonForPointerPoint(pointerPoint, &button, &pressed)) {
-            SDL_SendMouseButton(window, 0, pressed, button);
-        }
-
-        SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
-    } else {
-        SDL_SendTouchMotion(
-            WINRT_TouchID,
-            (SDL_FingerID) pointerPoint->PointerId,
-            window,
-            normalizedPoint.X,
-            normalizedPoint.Y,
-            pointerPoint->Properties->Pressure);
-    }
-}
-
-void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window) {
-        return;
-    }
-
-    if (!WINRT_IsTouchEvent(pointerPoint)) {
-        Uint8 button, pressed;
-        WINRT_GetSDLButtonForPointerPoint(pointerPoint, &button, &pressed);
-        SDL_assert(pressed == 0);
-        SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
-    } else {
-        Windows::Foundation::Point normalizedPoint = WINRT_TransformCursorPosition(window, pointerPoint->Position, NormalizeZeroToOne);
-
-        SDL_SendTouch(
-            WINRT_TouchID,
-            (SDL_FingerID) pointerPoint->PointerId,
-            window,
-            SDL_FALSE,
-            normalizedPoint.X,
-            normalizedPoint.Y,
-            pointerPoint->Properties->Pressure);
-    }
-}
-
-void WINRT_ProcessPointerEnteredEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window) {
-        return;
-    }
-
-    if (!WINRT_IsTouchEvent(pointerPoint)) {
-        SDL_SetMouseFocus(window);
-    }
-}
-
-void WINRT_ProcessPointerExitedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window) {
-        return;
-    }
-
-    if (!WINRT_IsTouchEvent(pointerPoint)) {
-        SDL_SetMouseFocus(NULL);
-    }
-}
-
-void
-WINRT_ProcessPointerWheelChangedEvent(SDL_Window *window, Windows::UI::Input::PointerPoint ^pointerPoint)
-{
-    if (!window) {
-        return;
-    }
-
-    float motion = (float) pointerPoint->Properties->MouseWheelDelta / WHEEL_DELTA;
-    SDL_SendMouseWheel(window, 0, 0, (float) motion, SDL_MOUSEWHEEL_NORMAL);
-}
-
-void
-WINRT_ProcessMouseMovedEvent(SDL_Window * window, Windows::Devices::Input::MouseEventArgs ^args)
-{
-    if (!window || !WINRT_UsingRelativeMouseMode) {
-        return;
-    }
-
-    // DLudwig, 2012-12-28: On some systems, namely Visual Studio's Windows
-    // Simulator, as well as Windows 8 in a Parallels 8 VM, MouseEventArgs'
-    // MouseDelta field often reports very large values.  More information
-    // on this can be found at the following pages on MSDN:
-    //  - http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/a3c789fa-f1c5-49c4-9c0a-7db88d0f90f8
-    //  - https://connect.microsoft.com/VisualStudio/Feedback/details/756515
-    //
-    // The values do not appear to be as large when running on some systems,
-    // most notably a Surface RT.  Furthermore, the values returned by
-    // CoreWindow's PointerMoved event, and sent to this class' OnPointerMoved
-    // method, do not ever appear to be large, even when MouseEventArgs'
-    // MouseDelta is reporting to the contrary.
-    //
-    // On systems with the large-values behavior, it appears that the values
-    // get reported as if the screen's size is 65536 units in both the X and Y
-    // dimensions.  This can be viewed by using Windows' now-private, "Raw Input"
-    // APIs.  (GetRawInputData, RegisterRawInputDevices, WM_INPUT, etc.)
-    //
-    // MSDN's documentation on MouseEventArgs' MouseDelta field (at
-    // http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.input.mouseeventargs.mousedelta ),
-    // does not seem to indicate (to me) that its values should be so large.  It
-    // says that its values should be a "change in screen location".  I could
-    // be misinterpreting this, however a post on MSDN from a Microsoft engineer (see:
-    // http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/09a9868e-95bb-4858-ba1a-cb4d2c298d62 ),
-    // indicates that these values are in DIPs, which is the same unit used
-    // by CoreWindow's PointerMoved events (via the Position field in its CurrentPoint
-    // property.  See http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.input.pointerpoint.position.aspx
-    // for details.)
-    //
-    // To note, PointerMoved events are sent a 'RawPosition' value (via the
-    // CurrentPoint property in MouseEventArgs), however these do not seem
-    // to exhibit the same large-value behavior.
-    //
-    // The values passed via PointerMoved events can't always be used for relative
-    // mouse motion, unfortunately.  Its values are bound to the cursor's position,
-    // which stops when it hits one of the screen's edges.  This can be a problem in
-    // first person shooters, whereby it is normal for mouse motion to travel far
-    // along any one axis for a period of time.  MouseMoved events do not have the
-    // screen-bounding limitation, and can be used regardless of where the system's
-    // cursor is.
-    //
-    // One possible workaround would be to programmatically set the cursor's
-    // position to the screen's center (when SDL's relative mouse mode is enabled),
-    // however WinRT does not yet seem to have the ability to set the cursor's
-    // position via a public API.  Win32 did this via an API call, SetCursorPos,
-    // however WinRT makes this function be private.  Apps that use it won't get
-    // approved for distribution in the Windows Store.  I've yet to be able to find
-    // a suitable, store-friendly counterpart for WinRT.
-    //
-    // There may be some room for a workaround whereby OnPointerMoved's values
-    // are compared to the values from OnMouseMoved in order to detect
-    // when this bug is active.  A suitable transformation could then be made to
-    // OnMouseMoved's values.  For now, however, the system-reported values are sent
-    // to SDL with minimal transformation: from native screen coordinates (in DIPs)
-    // to SDL window coordinates.
-    //
-    const Windows::Foundation::Point mouseDeltaInDIPs((float)args->MouseDelta.X, (float)args->MouseDelta.Y);
-    const Windows::Foundation::Point mouseDeltaInSDLWindowCoords = WINRT_TransformCursorPosition(window, mouseDeltaInDIPs, TransformToSDLWindowSize);
-    SDL_SendMouseMotion(
-        window,
-        0,
-        1,
-        SDL_lroundf(mouseDeltaInSDLWindowCoords.X),
-        SDL_lroundf(mouseDeltaInSDLWindowCoords.Y));
-}
-
-#endif // SDL_VIDEO_DRIVER_WINRT

+ 0 - 907
src/video/winrt/SDL_winrtvideo.cpp

@@ -1,907 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_WINRT
-
-/* WinRT SDL video driver implementation
-
-   Initial work on this was done by David Ludwig ([email protected]), and
-   was based off of SDL's "dummy" video driver.
- */
-
-/* Standard C++11 includes */
-#include <functional>
-#include <string>
-#include <sstream>
-using namespace std;
-
-/* Windows includes */
-#include <agile.h>
-#include <windows.graphics.display.h>
-#include <windows.system.display.h>
-#include <dxgi.h>
-#include <dxgi1_2.h>
-using namespace Windows::ApplicationModel::Core;
-using namespace Windows::Foundation;
-using namespace Windows::Graphics::Display;
-using namespace Windows::UI::Core;
-using namespace Windows::UI::ViewManagement;
-
-
-/* [re]declare Windows GUIDs locally, to limit the amount of external lib(s) SDL has to link to */
-static const GUID SDL_IID_IDisplayRequest   = { 0xe5732044, 0xf49f, 0x4b60, { 0x8d, 0xd4, 0x5e, 0x7e, 0x3a, 0x63, 0x2a, 0xc0 } };
-static const GUID SDL_IID_IDXGIFactory2     = { 0x50c83a1c, 0xe072, 0x4c48, { 0x87, 0xb0, 0x36, 0x30, 0xfa, 0x36, 0xa6, 0xd0 } };
-
-
-/* SDL includes */
-extern "C" {
-#include "SDL_video.h"
-#include "SDL_mouse.h"
-#include "../SDL_sysvideo.h"
-#include "../SDL_pixels_c.h"
-#include "../../events/SDL_events_c.h"
-#include "../../render/SDL_sysrender.h"
-#include "SDL_syswm.h"
-#include "SDL_winrtopengles.h"
-#include "../../core/windows/SDL_windows.h"
-}
-
-#include "../../core/winrt/SDL_winrtapp_direct3d.h"
-#include "../../core/winrt/SDL_winrtapp_xaml.h"
-#include "SDL_winrtvideo_cpp.h"
-#include "SDL_winrtevents_c.h"
-#include "SDL_winrtgamebar_cpp.h"
-#include "SDL_winrtmouse_c.h"
-#include "SDL_main.h"
-#include "SDL_system.h"
-#include "SDL_hints.h"
-
-
-/* Initialization/Query functions */
-static int WINRT_VideoInit(_THIS);
-static int WINRT_InitModes(_THIS);
-static int WINRT_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
-static void WINRT_VideoQuit(_THIS);
-
-
-/* Window functions */
-static int WINRT_CreateWindow(_THIS, SDL_Window * window);
-static void WINRT_SetWindowSize(_THIS, SDL_Window * window);
-static void WINRT_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
-static void WINRT_DestroyWindow(_THIS, SDL_Window * window);
-static SDL_bool WINRT_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info);
-
-
-/* Misc functions */
-static ABI::Windows::System::Display::IDisplayRequest * WINRT_CreateDisplayRequest(_THIS);
-extern void WINRT_SuspendScreenSaver(_THIS);
-
-
-/* SDL-internal globals: */
-SDL_Window * WINRT_GlobalSDLWindow = NULL;
-
-
-/* WinRT driver bootstrap functions */
-
-static void
-WINRT_DeleteDevice(SDL_VideoDevice * device)
-{
-    if (device->driverdata) {
-        SDL_VideoData * video_data = (SDL_VideoData *)device->driverdata;
-        if (video_data->winrtEglWindow) {
-            video_data->winrtEglWindow->Release();
-        }
-        SDL_free(video_data);
-    }
-
-    SDL_free(device);
-}
-
-static SDL_VideoDevice *
-WINRT_CreateDevice(void)
-{
-    SDL_VideoDevice *device;
-    SDL_VideoData *data;
-
-    /* Initialize all variables that we clean on shutdown */
-    device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
-    if (!device) {
-        SDL_OutOfMemory();
-        return (0);
-    }
-
-    data = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
-    if (!data) {
-        SDL_OutOfMemory();
-        SDL_free(device);
-        return (0);
-    }
-    device->driverdata = data;
-
-    /* Set the function pointers */
-    device->VideoInit = WINRT_VideoInit;
-    device->VideoQuit = WINRT_VideoQuit;
-    device->CreateSDLWindow = WINRT_CreateWindow;
-    device->SetWindowSize = WINRT_SetWindowSize;
-    device->SetWindowFullscreen = WINRT_SetWindowFullscreen;
-    device->DestroyWindow = WINRT_DestroyWindow;
-    device->SetDisplayMode = WINRT_SetDisplayMode;
-    device->PumpEvents = WINRT_PumpEvents;
-    device->GetWindowWMInfo = WINRT_GetWindowWMInfo;
-    device->SuspendScreenSaver = WINRT_SuspendScreenSaver;
-
-#if NTDDI_VERSION >= NTDDI_WIN10
-    device->HasScreenKeyboardSupport = WINRT_HasScreenKeyboardSupport;
-    device->ShowScreenKeyboard = WINRT_ShowScreenKeyboard;
-    device->HideScreenKeyboard = WINRT_HideScreenKeyboard;
-    device->IsScreenKeyboardShown = WINRT_IsScreenKeyboardShown;
-
-    WINTRT_InitialiseInputPaneEvents(device);
-#endif
-
-#ifdef SDL_VIDEO_OPENGL_EGL
-    device->GL_LoadLibrary = WINRT_GLES_LoadLibrary;
-    device->GL_GetProcAddress = WINRT_GLES_GetProcAddress;
-    device->GL_UnloadLibrary = WINRT_GLES_UnloadLibrary;
-    device->GL_CreateContext = WINRT_GLES_CreateContext;
-    device->GL_MakeCurrent = WINRT_GLES_MakeCurrent;
-    device->GL_SetSwapInterval = WINRT_GLES_SetSwapInterval;
-    device->GL_GetSwapInterval = WINRT_GLES_GetSwapInterval;
-    device->GL_SwapWindow = WINRT_GLES_SwapWindow;
-    device->GL_DeleteContext = WINRT_GLES_DeleteContext;
-#endif
-    device->free = WINRT_DeleteDevice;
-
-    return device;
-}
-
-#define WINRTVID_DRIVER_NAME "winrt"
-VideoBootStrap WINRT_bootstrap = {
-    WINRTVID_DRIVER_NAME, "SDL WinRT video driver",
-    WINRT_CreateDevice
-};
-
-static void SDLCALL
-WINRT_SetDisplayOrientationsPreference(void *userdata, const char *name, const char *oldValue, const char *newValue)
-{
-    SDL_assert(SDL_strcmp(name, SDL_HINT_ORIENTATIONS) == 0);
-
-    /* HACK: prevent SDL from altering an app's .appxmanifest-set orientation
-     * from being changed on startup, by detecting when SDL_HINT_ORIENTATIONS
-     * is getting registered.
-     *
-     * TODO, WinRT: consider reading in an app's .appxmanifest file, and apply its orientation when 'newValue == NULL'.
-     */
-    if ((oldValue == NULL) && (newValue == NULL)) {
-        return;
-    }
-
-    // Start with no orientation flags, then add each in as they're parsed
-    // from newValue.
-    unsigned int orientationFlags = 0;
-    if (newValue) {
-        std::istringstream tokenizer(newValue);
-        while (!tokenizer.eof()) {
-            std::string orientationName;
-            std::getline(tokenizer, orientationName, ' ');
-            if (orientationName == "LandscapeLeft") {
-                orientationFlags |= (unsigned int) DisplayOrientations::LandscapeFlipped;
-            } else if (orientationName == "LandscapeRight") {
-                orientationFlags |= (unsigned int) DisplayOrientations::Landscape;
-            } else if (orientationName == "Portrait") {
-                orientationFlags |= (unsigned int) DisplayOrientations::Portrait;
-            } else if (orientationName == "PortraitUpsideDown") {
-                orientationFlags |= (unsigned int) DisplayOrientations::PortraitFlipped;
-            }
-        }
-    }
-
-    // If no valid orientation flags were specified, use a reasonable set of defaults:
-    if (!orientationFlags) {
-        // TODO, WinRT: consider seeing if an app's default orientation flags can be found out via some API call(s).
-        orientationFlags = (unsigned int) ( \
-            DisplayOrientations::Landscape |
-            DisplayOrientations::LandscapeFlipped |
-            DisplayOrientations::Portrait |
-            DisplayOrientations::PortraitFlipped);
-    }
-
-    // Set the orientation/rotation preferences.  Please note that this does
-    // not constitute a 100%-certain lock of a given set of possible
-    // orientations.  According to Microsoft's documentation on WinRT [1]
-    // when a device is not capable of being rotated, Windows may ignore
-    // the orientation preferences, and stick to what the device is capable of
-    // displaying.
-    //
-    // [1] Documentation on the 'InitialRotationPreference' setting for a
-    // Windows app's manifest file describes how some orientation/rotation
-    // preferences may be ignored.  See
-    // http://msdn.microsoft.com/en-us/library/windows/apps/hh700343.aspx
-    // for details.  Microsoft's "Display orientation sample" also gives an
-    // outline of how Windows treats device rotation
-    // (http://code.msdn.microsoft.com/Display-Orientation-Sample-19a58e93).
-    WINRT_DISPLAY_PROPERTY(AutoRotationPreferences) = (DisplayOrientations) orientationFlags;
-}
-
-int
-WINRT_VideoInit(_THIS)
-{
-    SDL_VideoData * driverdata = (SDL_VideoData *) _this->driverdata;
-    if (WINRT_InitModes(_this) < 0) {
-        return -1;
-    }
-
-    // Register the hint, SDL_HINT_ORIENTATIONS, with SDL.
-    // TODO, WinRT: see if an app's default orientation can be found out via WinRT API(s), then set the initial value of SDL_HINT_ORIENTATIONS accordingly.
-    SDL_AddHintCallback(SDL_HINT_ORIENTATIONS, WINRT_SetDisplayOrientationsPreference, NULL);
-
-    WINRT_InitMouse(_this);
-    WINRT_InitTouch(_this);
-    WINRT_InitGameBar(_this);
-    if (driverdata) {
-        /* Initialize screensaver-disabling support */
-        driverdata->displayRequest = WINRT_CreateDisplayRequest(_this);
-    }
-    return 0;
-}
-
-extern "C"
-Uint32 D3D11_DXGIFormatToSDLPixelFormat(DXGI_FORMAT dxgiFormat);
-
-static void
-WINRT_DXGIModeToSDLDisplayMode(const DXGI_MODE_DESC * dxgiMode, SDL_DisplayMode * sdlMode)
-{
-    SDL_zerop(sdlMode);
-    sdlMode->w = dxgiMode->Width;
-    sdlMode->h = dxgiMode->Height;
-    sdlMode->refresh_rate = dxgiMode->RefreshRate.Numerator / dxgiMode->RefreshRate.Denominator;
-    sdlMode->format = D3D11_DXGIFormatToSDLPixelFormat(dxgiMode->Format);
-}
-
-static int
-WINRT_AddDisplaysForOutput (_THIS, IDXGIAdapter1 * dxgiAdapter1, int outputIndex)
-{
-    HRESULT hr;
-    IDXGIOutput * dxgiOutput = NULL;
-    DXGI_OUTPUT_DESC dxgiOutputDesc;
-    SDL_VideoDisplay display;
-    char * displayName = NULL;
-    UINT numModes;
-    DXGI_MODE_DESC * dxgiModes = NULL;
-    int functionResult = -1;        /* -1 for failure, 0 for success */
-    DXGI_MODE_DESC modeToMatch, closestMatch;
-
-    SDL_zero(display);
-
-    hr = dxgiAdapter1->EnumOutputs(outputIndex, &dxgiOutput);
-    if (FAILED(hr)) {
-        if (hr != DXGI_ERROR_NOT_FOUND) {
-            WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIAdapter1::EnumOutputs failed", hr);
-        }
-        goto done;
-    }
-
-    hr = dxgiOutput->GetDesc(&dxgiOutputDesc);
-    if (FAILED(hr)) {
-        WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIOutput::GetDesc failed", hr);
-        goto done;
-    }
-
-    SDL_zero(modeToMatch);
-    modeToMatch.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
-    modeToMatch.Width = (dxgiOutputDesc.DesktopCoordinates.right - dxgiOutputDesc.DesktopCoordinates.left);
-    modeToMatch.Height = (dxgiOutputDesc.DesktopCoordinates.bottom - dxgiOutputDesc.DesktopCoordinates.top);
-    hr = dxgiOutput->FindClosestMatchingMode(&modeToMatch, &closestMatch, NULL);
-    if (hr == DXGI_ERROR_NOT_CURRENTLY_AVAILABLE) {
-        /* DXGI_ERROR_NOT_CURRENTLY_AVAILABLE gets returned by IDXGIOutput::FindClosestMatchingMode
-           when running under the Windows Simulator, which uses Remote Desktop (formerly known as Terminal
-           Services) under the hood.  According to the MSDN docs for the similar function,
-           IDXGIOutput::GetDisplayModeList, DXGI_ERROR_NOT_CURRENTLY_AVAILABLE is returned if and
-           when an app is run under a Terminal Services session, hence the assumption.
-
-           In this case, just add an SDL display mode, with approximated values.
-        */
-        SDL_DisplayMode mode;
-        SDL_zero(mode);
-        display.name = "Windows Simulator / Terminal Services Display";
-        mode.w = (dxgiOutputDesc.DesktopCoordinates.right - dxgiOutputDesc.DesktopCoordinates.left);
-        mode.h = (dxgiOutputDesc.DesktopCoordinates.bottom - dxgiOutputDesc.DesktopCoordinates.top);
-        mode.format = DXGI_FORMAT_B8G8R8A8_UNORM;
-        mode.refresh_rate = 0;  /* Display mode is unknown, so just fill in zero, as specified by SDL's header files */
-        display.desktop_mode = mode;
-        display.current_mode = mode;
-        if ( ! SDL_AddDisplayMode(&display, &mode)) {
-            goto done;
-        }
-    } else if (FAILED(hr)) {
-        WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIOutput::FindClosestMatchingMode failed", hr);
-        goto done;
-    } else {
-        displayName = WIN_StringToUTF8(dxgiOutputDesc.DeviceName);
-        display.name = displayName;
-        WINRT_DXGIModeToSDLDisplayMode(&closestMatch, &display.desktop_mode);
-        display.current_mode = display.desktop_mode;
-
-        hr = dxgiOutput->GetDisplayModeList(DXGI_FORMAT_B8G8R8A8_UNORM, 0, &numModes, NULL);
-        if (FAILED(hr)) {
-            if (hr == DXGI_ERROR_NOT_CURRENTLY_AVAILABLE) {
-                // TODO, WinRT: make sure display mode(s) are added when using Terminal Services / Windows Simulator
-            }
-            WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIOutput::GetDisplayModeList [get mode list size] failed", hr);
-            goto done;
-        }
-
-        dxgiModes = (DXGI_MODE_DESC *)SDL_calloc(numModes, sizeof(DXGI_MODE_DESC));
-        if ( ! dxgiModes) {
-            SDL_OutOfMemory();
-            goto done;
-        }
-
-        hr = dxgiOutput->GetDisplayModeList(DXGI_FORMAT_B8G8R8A8_UNORM, 0, &numModes, dxgiModes);
-        if (FAILED(hr)) {
-            WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIOutput::GetDisplayModeList [get mode contents] failed", hr);
-            goto done;
-        }
-
-        for (UINT i = 0; i < numModes; ++i) {
-            SDL_DisplayMode sdlMode;
-            WINRT_DXGIModeToSDLDisplayMode(&dxgiModes[i], &sdlMode);
-            SDL_AddDisplayMode(&display, &sdlMode);
-        }
-    }
-
-    if (SDL_AddVideoDisplay(&display, SDL_FALSE) < 0) {
-        goto done;
-    }
-
-    functionResult = 0;     /* 0 for Success! */
-done:
-    if (dxgiModes) {
-        SDL_free(dxgiModes);
-    }
-    if (dxgiOutput) {
-        dxgiOutput->Release();
-    }
-    if (displayName) {
-        SDL_free(displayName);
-    }
-    return functionResult;
-}
-
-static int
-WINRT_AddDisplaysForAdapter (_THIS, IDXGIFactory2 * dxgiFactory2, int adapterIndex)
-{
-    HRESULT hr;
-    IDXGIAdapter1 * dxgiAdapter1;
-
-    hr = dxgiFactory2->EnumAdapters1(adapterIndex, &dxgiAdapter1);
-    if (FAILED(hr)) {
-        if (hr != DXGI_ERROR_NOT_FOUND) {
-            WIN_SetErrorFromHRESULT(__FUNCTION__ ", IDXGIFactory1::EnumAdapters1() failed", hr);
-        }
-        return -1;
-    }
-
-    for (int outputIndex = 0; ; ++outputIndex) {
-        if (WINRT_AddDisplaysForOutput(_this, dxgiAdapter1, outputIndex) < 0) {
-            /* HACK: The Windows App Certification Kit 10.0 can fail, when
-               running the Store Apps' test, "Direct3D Feature Test".  The
-               certification kit's error is:
-
-               "Application App was not running at the end of the test. It likely crashed or was terminated for having become unresponsive."
-
-               This was caused by SDL/WinRT's DXGI failing to report any
-               outputs.  Attempts to get the 1st display-output from the
-               1st display-adapter can fail, with IDXGIAdapter::EnumOutputs
-               returning DXGI_ERROR_NOT_FOUND.  This could be a bug in Windows,
-               the Windows App Certification Kit, or possibly in SDL/WinRT's
-               display detection code.  Either way, try to detect when this
-               happens, and use a hackish means to create a reasonable-as-possible
-               'display mode'.  -- DavidL
-            */
-            if (adapterIndex == 0 && outputIndex == 0) {
-                SDL_VideoDisplay display;
-                SDL_DisplayMode mode;
-#if SDL_WINRT_USE_APPLICATIONVIEW
-                ApplicationView ^ appView = ApplicationView::GetForCurrentView();
-#endif
-                CoreWindow ^ coreWin = CoreWindow::GetForCurrentThread();
-                SDL_zero(display);
-                SDL_zero(mode);
-                display.name = "DXGI Display-detection Workaround";
-
-                /* HACK: ApplicationView's VisibleBounds property, appeared, via testing, to
-                   give a better approximation of display-size, than did CoreWindow's
-                   Bounds property, insofar that ApplicationView::VisibleBounds seems like
-                   it will, at least some of the time, give the full display size (during the
-                   failing test), whereas CoreWindow might not.  -- DavidL
-                */
-
-#if (NTDDI_VERSION >= NTDDI_WIN10) || (SDL_WINRT_USE_APPLICATIONVIEW && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
-                mode.w = WINRT_DIPS_TO_PHYSICAL_PIXELS(appView->VisibleBounds.Width);
-                mode.h = WINRT_DIPS_TO_PHYSICAL_PIXELS(appView->VisibleBounds.Height);
-#else
-                /* On platform(s) that do not support VisibleBounds, such as Windows 8.1,
-                   fall back to CoreWindow's Bounds property.
-                */
-                mode.w = WINRT_DIPS_TO_PHYSICAL_PIXELS(coreWin->Bounds.Width);
-                mode.h = WINRT_DIPS_TO_PHYSICAL_PIXELS(coreWin->Bounds.Height);
-#endif
-
-                mode.format = DXGI_FORMAT_B8G8R8A8_UNORM;
-                mode.refresh_rate = 0;  /* Display mode is unknown, so just fill in zero, as specified by SDL's header files */
-                display.desktop_mode = mode;
-                display.current_mode = mode;
-                if ((SDL_AddDisplayMode(&display, &mode) < 0) ||
-                    (SDL_AddVideoDisplay(&display, SDL_FALSE) < 0))
-                {
-                    return SDL_SetError("Failed to apply DXGI Display-detection workaround");
-                }
-            }
-
-            break;
-        }
-    }
-
-    dxgiAdapter1->Release();
-    return 0;
-}
-
-int
-WINRT_InitModes(_THIS)
-{
-    /* HACK: Initialize a single display, for whatever screen the app's
-         CoreApplicationView is on.
-       TODO, WinRT: Try initializing multiple displays, one for each monitor.
-         Appropriate WinRT APIs for this seem elusive, though.  -- DavidL
-    */
-
-    HRESULT hr;
-    IDXGIFactory2 * dxgiFactory2 = NULL;
-
-    hr = CreateDXGIFactory1(SDL_IID_IDXGIFactory2, (void **)&dxgiFactory2);
-    if (FAILED(hr)) {
-        return WIN_SetErrorFromHRESULT(__FUNCTION__ ", CreateDXGIFactory1() failed", hr);
-    }
-
-    for (int adapterIndex = 0; ; ++adapterIndex) {
-        if (WINRT_AddDisplaysForAdapter(_this, dxgiFactory2, adapterIndex) < 0) {
-            break;
-        }
-    }
-
-    return 0;
-}
-
-static int
-WINRT_SetDisplayMode(_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode)
-{
-    return 0;
-}
-
-void
-WINRT_VideoQuit(_THIS)
-{
-    SDL_VideoData * driverdata = (SDL_VideoData *) _this->driverdata;
-    if (driverdata && driverdata->displayRequest) {
-        driverdata->displayRequest->Release();
-        driverdata->displayRequest = NULL;
-    }
-    WINRT_QuitGameBar(_this);
-    WINRT_QuitMouse(_this);
-}
-
-static const Uint32 WINRT_DetectableFlags =
-    SDL_WINDOW_MAXIMIZED |
-    SDL_WINDOW_FULLSCREEN_DESKTOP |
-    SDL_WINDOW_SHOWN |
-    SDL_WINDOW_HIDDEN |
-    SDL_WINDOW_MOUSE_FOCUS;
-
-extern "C" Uint32
-WINRT_DetectWindowFlags(SDL_Window * window)
-{
-    Uint32 latestFlags = 0;
-    SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
-    bool is_fullscreen = false;
-
-#if SDL_WINRT_USE_APPLICATIONVIEW
-    if (data->appView) {
-        is_fullscreen = data->appView->IsFullScreenMode;
-    }
-#elif (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION == NTDDI_WIN8)
-    is_fullscreen = true;
-#endif
-
-    if (data->coreWindow.Get()) {
-        if (is_fullscreen) {
-            SDL_VideoDisplay * display = SDL_GetDisplayForWindow(window);
-            int w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
-            int h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
-
-#if (WINAPI_FAMILY != WINAPI_FAMILY_PHONE_APP) || (NTDDI_VERSION > NTDDI_WIN8)
-            // On all WinRT platforms, except for WinPhone 8.0, rotate the
-            // window size.  This is needed to properly calculate
-            // fullscreen vs. maximized.
-            const DisplayOrientations currentOrientation = WINRT_DISPLAY_PROPERTY(CurrentOrientation);
-            switch (currentOrientation) {
-#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
-                case DisplayOrientations::Landscape:
-                case DisplayOrientations::LandscapeFlipped:
-#else
-                case DisplayOrientations::Portrait:
-                case DisplayOrientations::PortraitFlipped:
-#endif
-                {
-                    int tmp = w;
-                    w = h;
-                    h = tmp;
-                } break;
-            }
-#endif
-
-            if (display->desktop_mode.w != w || display->desktop_mode.h != h) {
-                latestFlags |= SDL_WINDOW_MAXIMIZED;
-            } else {
-                latestFlags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
-            }
-        }
-
-        if (data->coreWindow->Visible) {
-            latestFlags |= SDL_WINDOW_SHOWN;
-        } else {
-            latestFlags |= SDL_WINDOW_HIDDEN;
-        }
-
-#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) && (NTDDI_VERSION < NTDDI_WINBLUE)
-        // data->coreWindow->PointerPosition is not supported on WinPhone 8.0
-        latestFlags |= SDL_WINDOW_MOUSE_FOCUS;
-#else
-        if (data->coreWindow->Visible && data->coreWindow->Bounds.Contains(data->coreWindow->PointerPosition)) {
-            latestFlags |= SDL_WINDOW_MOUSE_FOCUS;
-        }
-#endif
-    }
-
-    return latestFlags;
-}
-
-// TODO, WinRT: consider removing WINRT_UpdateWindowFlags, and just calling WINRT_DetectWindowFlags as-appropriate (with appropriate calls to SDL_SendWindowEvent)
-void
-WINRT_UpdateWindowFlags(SDL_Window * window, Uint32 mask)
-{
-    mask &= WINRT_DetectableFlags;
-    if (window) {
-        Uint32 apply = WINRT_DetectWindowFlags(window);
-        if ((apply & mask) & SDL_WINDOW_FULLSCREEN) {
-            window->last_fullscreen_flags = window->flags;  // seems necessary to programmatically un-fullscreen, via SDL APIs
-        }
-        window->flags = (window->flags & ~mask) | (apply & mask);
-    }
-}
-
-static bool
-WINRT_IsCoreWindowActive(CoreWindow ^ coreWindow)
-{
-    /* WinRT does not appear to offer API(s) to determine window-activation state,
-       at least not that I am aware of in Win8 - Win10.  As such, SDL tracks this
-       itself, via window-activation events.
-       
-       If there *is* an API to track this, it should probably get used instead
-       of the following hack (that uses "SDLHelperWindowActivationState").
-         -- DavidL.
-    */
-    if (coreWindow->CustomProperties->HasKey("SDLHelperWindowActivationState")) {
-        CoreWindowActivationState activationState = \
-            safe_cast<CoreWindowActivationState>(coreWindow->CustomProperties->Lookup("SDLHelperWindowActivationState"));
-        return (activationState != CoreWindowActivationState::Deactivated);
-    }
-
-    /* Assume that non-SDL tracked windows are active, although this should
-       probably be avoided, if possible.
-       
-       This might not even be possible, in normal SDL use, at least as of
-       this writing (Dec 22, 2015; via latest hg.libsdl.org/SDL clone)  -- DavidL
-    */
-    return true;
-}
-
-int
-WINRT_CreateWindow(_THIS, SDL_Window * window)
-{
-    // Make sure that only one window gets created, at least until multimonitor
-    // support is added.
-    if (WINRT_GlobalSDLWindow != NULL) {
-        return SDL_SetError("WinRT only supports one window");
-    }
-
-    SDL_WindowData *data = new SDL_WindowData;  /* use 'new' here as SDL_WindowData may use WinRT/C++ types */
-    if (!data) {
-        return SDL_OutOfMemory();
-    }
-    window->driverdata = data;
-    data->sdlWindow = window;
-
-    /* To note, when XAML support is enabled, access to the CoreWindow will not
-       be possible, at least not via the SDL/XAML thread.  Attempts to access it
-       from there will throw exceptions.  As such, the SDL_WindowData's
-       'coreWindow' field will only be set (to a non-null value) if XAML isn't
-       enabled.
-    */
-    if (!WINRT_XAMLWasEnabled) {
-        data->coreWindow = CoreWindow::GetForCurrentThread();
-#if SDL_WINRT_USE_APPLICATIONVIEW
-        data->appView = ApplicationView::GetForCurrentView();
-#endif
-    }
-
-    /* Make note of the requested window flags, before they start getting changed. */
-    const Uint32 requestedFlags = window->flags;
-
-#if SDL_VIDEO_OPENGL_EGL
-    /* Setup the EGL surface, but only if OpenGL ES 2 was requested. */
-    if (!(window->flags & SDL_WINDOW_OPENGL)) {
-        /* OpenGL ES 2 wasn't requested.  Don't set up an EGL surface. */
-        data->egl_surface = EGL_NO_SURFACE;
-    } else {
-        /* OpenGL ES 2 was reuqested.  Set up an EGL surface. */
-        SDL_VideoData * video_data = (SDL_VideoData *)_this->driverdata;
-
-        /* Call SDL_EGL_ChooseConfig and eglCreateWindowSurface directly,
-         * rather than via SDL_EGL_CreateSurface, as older versions of
-         * ANGLE/WinRT may require that a C++ object, ComPtr<IUnknown>,
-         * be passed into eglCreateWindowSurface.
-         */
-        if (SDL_EGL_ChooseConfig(_this) != 0) {
-            /* SDL_EGL_ChooseConfig failed, SDL_GetError() should have info */
-            return -1; 
-        }
-
-        if (video_data->winrtEglWindow) {   /* ... is the 'old' version of ANGLE/WinRT being used? */
-            /* Attempt to create a window surface using older versions of
-             * ANGLE/WinRT:
-             */
-            Microsoft::WRL::ComPtr<IUnknown> cpp_winrtEglWindow = video_data->winrtEglWindow;
-            data->egl_surface = ((eglCreateWindowSurface_Old_Function)_this->egl_data->eglCreateWindowSurface)(
-                _this->egl_data->egl_display,
-                _this->egl_data->egl_config,
-                cpp_winrtEglWindow, NULL);
-            if (data->egl_surface == NULL) {
-                return SDL_EGL_SetError("unable to create EGL native-window surface", "eglCreateWindowSurface");
-            }
-        } else if (data->coreWindow.Get() != nullptr) {
-            /* Attempt to create a window surface using newer versions of
-             * ANGLE/WinRT:
-             */
-            IInspectable * coreWindowAsIInspectable = reinterpret_cast<IInspectable *>(data->coreWindow.Get());
-            data->egl_surface = _this->egl_data->eglCreateWindowSurface(
-                _this->egl_data->egl_display,
-                _this->egl_data->egl_config,
-                (NativeWindowType)coreWindowAsIInspectable,
-                NULL);
-            if (data->egl_surface == NULL) {
-                return SDL_EGL_SetError("unable to create EGL native-window surface", "eglCreateWindowSurface");
-            }
-        } else {
-            return SDL_SetError("No supported means to create an EGL window surface are available");
-        }
-    }
-#endif
-
-    /* Determine as many flags dynamically, as possible. */
-    window->flags =
-        SDL_WINDOW_BORDERLESS |
-        SDL_WINDOW_RESIZABLE;
-
-#if SDL_VIDEO_OPENGL_EGL
-    if (data->egl_surface) {
-        window->flags |= SDL_WINDOW_OPENGL;
-    }
-#endif
-
-    if (WINRT_XAMLWasEnabled) {
-        /* TODO, WinRT: set SDL_Window size, maybe position too, from XAML control */
-        window->x = 0;
-        window->y = 0;
-        window->flags |= SDL_WINDOW_SHOWN;
-        SDL_SetMouseFocus(NULL);        // TODO: detect this
-        SDL_SetKeyboardFocus(NULL);     // TODO: detect this
-    } else {
-        /* WinRT 8.x apps seem to live in an environment where the OS controls the
-           app's window size, with some apps being fullscreen, depending on
-           user choice of various things.  For now, just adapt the SDL_Window to
-           whatever Windows set-up as the native-window's geometry.
-        */
-        window->x = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Left);
-        window->y = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Top);
-#if NTDDI_VERSION < NTDDI_WIN10
-        /* On WinRT 8.x / pre-Win10, just use the size we were given. */
-        window->w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
-        window->h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
-#else
-        /* On Windows 10, we occasionally get control over window size.  For windowed
-           mode apps, try this.
-        */
-        bool didSetSize = false;
-        if (!(requestedFlags & SDL_WINDOW_FULLSCREEN)) {
-            const Windows::Foundation::Size size(WINRT_PHYSICAL_PIXELS_TO_DIPS(window->w),
-                                                 WINRT_PHYSICAL_PIXELS_TO_DIPS(window->h));
-            didSetSize = data->appView->TryResizeView(size);
-        }
-        if (!didSetSize) {
-            /* We either weren't able to set the window size, or a request for
-               fullscreen was made.  Get window-size info from the OS.
-            */
-            window->w = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Width);
-            window->h = WINRT_DIPS_TO_PHYSICAL_PIXELS(data->coreWindow->Bounds.Height);
-        }
-#endif
-
-        WINRT_UpdateWindowFlags(
-            window,
-            0xffffffff      /* Update any window flag(s) that WINRT_UpdateWindow can handle */
-        );
-
-        /* Try detecting if the window is active */
-        bool isWindowActive = WINRT_IsCoreWindowActive(data->coreWindow.Get());
-        if (isWindowActive) {
-            SDL_SetKeyboardFocus(window);
-        }
-    }
- 
-    /* Make sure the WinRT app's IFramworkView can post events on
-       behalf of SDL:
-    */
-    WINRT_GlobalSDLWindow = window;
-
-    /* All done! */
-    return 0;
-}
-
-void
-WINRT_SetWindowSize(_THIS, SDL_Window * window)
-{
-#if NTDDI_VERSION >= NTDDI_WIN10
-    SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
-    const Windows::Foundation::Size size(WINRT_PHYSICAL_PIXELS_TO_DIPS(window->w),
-                                         WINRT_PHYSICAL_PIXELS_TO_DIPS(window->h));
-    data->appView->TryResizeView(size); // TODO, WinRT: return failure (to caller?) from TryResizeView()
-#endif
-}
-
-void
-WINRT_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen)
-{
-#if NTDDI_VERSION >= NTDDI_WIN10
-    SDL_WindowData * data = (SDL_WindowData *)window->driverdata;
-    bool isWindowActive = WINRT_IsCoreWindowActive(data->coreWindow.Get());
-    if (isWindowActive) {
-        if (fullscreen) {
-            if (!data->appView->IsFullScreenMode) {
-                data->appView->TryEnterFullScreenMode();    // TODO, WinRT: return failure (to caller?) from TryEnterFullScreenMode()
-            }
-        } else {
-            if (data->appView->IsFullScreenMode) {
-                data->appView->ExitFullScreenMode();
-            }
-        }
-    }
-#endif
-}
-
-
-void
-WINRT_DestroyWindow(_THIS, SDL_Window * window)
-{
-    SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
-
-    if (WINRT_GlobalSDLWindow == window) {
-        WINRT_GlobalSDLWindow = NULL;
-    }
-
-    if (data) {
-        // Delete the internal window data:
-        delete data;
-        data = NULL;
-        window->driverdata = NULL;
-    }
-}
-
-SDL_bool
-WINRT_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info)
-{
-    SDL_WindowData * data = (SDL_WindowData *) window->driverdata;
-
-    if (info->version.major <= SDL_MAJOR_VERSION) {
-        info->subsystem = SDL_SYSWM_WINRT;
-        info->info.winrt.window = reinterpret_cast<IInspectable *>(data->coreWindow.Get());
-        return SDL_TRUE;
-    } else {
-        SDL_SetError("Application not compiled with SDL %d",
-                     SDL_MAJOR_VERSION);
-        return SDL_FALSE;
-    }
-    return SDL_FALSE;
-}
-
-static ABI::Windows::System::Display::IDisplayRequest *
-WINRT_CreateDisplayRequest(_THIS)
-{
-    /* Setup a WinRT DisplayRequest object, usable for enabling/disabling screensaver requests */
-    wchar_t *wClassName = L"Windows.System.Display.DisplayRequest";
-    HSTRING hClassName;
-    IActivationFactory *pActivationFactory = NULL;
-    IInspectable * pDisplayRequestRaw = nullptr;
-    ABI::Windows::System::Display::IDisplayRequest * pDisplayRequest = nullptr;
-    HRESULT hr;
-
-    hr = ::WindowsCreateString(wClassName, (UINT32)SDL_wcslen(wClassName), &hClassName);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-    hr = Windows::Foundation::GetActivationFactory(hClassName, &pActivationFactory);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-    hr = pActivationFactory->ActivateInstance(&pDisplayRequestRaw);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-    hr = pDisplayRequestRaw->QueryInterface(SDL_IID_IDisplayRequest, (void **) &pDisplayRequest);
-    if (FAILED(hr)) {
-        goto done;
-    }
-
-done:
-    if (pDisplayRequestRaw) {
-        pDisplayRequestRaw->Release();
-    }
-    if (pActivationFactory) {
-        pActivationFactory->Release();
-    }
-    if (hClassName) {
-        ::WindowsDeleteString(hClassName);
-    }
-
-    return pDisplayRequest;
-}
-
-void
-WINRT_SuspendScreenSaver(_THIS)
-{
-    SDL_VideoData *driverdata = (SDL_VideoData *)_this->driverdata;
-    if (driverdata && driverdata->displayRequest) {
-        ABI::Windows::System::Display::IDisplayRequest * displayRequest = (ABI::Windows::System::Display::IDisplayRequest *) driverdata->displayRequest;
-        if (_this->suspend_screensaver) {
-            displayRequest->RequestActive();
-        } else {
-            displayRequest->RequestRelease();
-        }
-    }
-}
-
-#endif /* SDL_VIDEO_DRIVER_WINRT */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 106
src/video/winrt/SDL_winrtvideo_cpp.h

@@ -1,106 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2022 Sam Lantinga <[email protected]>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* Windows includes: */
-#include <windows.h>
-#ifdef __cplusplus_winrt
-#include <agile.h>
-#endif
-
-/* SDL includes: */
-#include "SDL_video.h"
-#include "SDL_events.h"
-
-#if NTDDI_VERSION >= NTDDI_WINBLUE  /* ApplicationView's functionality only becomes
-                                       useful for SDL in Win[Phone] 8.1 and up.
-                                       Plus, it is not available at all in WinPhone 8.0. */
-#define SDL_WINRT_USE_APPLICATIONVIEW 1
-#endif
-
-extern "C" {
-#include "../SDL_sysvideo.h"
-#include "../SDL_egl_c.h"
-}
-
-/* Private display data */
-typedef struct SDL_VideoData {
-    /* An object created by ANGLE/WinRT (OpenGL ES 2 for WinRT) that gets
-     * passed to eglGetDisplay and eglCreateWindowSurface:
-     */
-    IUnknown *winrtEglWindow;
-
-    /* Event token(s), for unregistering WinRT event handler(s).
-       These are just a struct with a 64-bit integer inside them
-    */
-    Windows::Foundation::EventRegistrationToken gameBarIsInputRedirectedToken;
-
-    /* A WinRT DisplayRequest, used for implementing SDL_*ScreenSaver() functions.
-     * This is really a pointer to a 'ABI::Windows::System::Display::IDisplayRequest *',
-     * It's casted to 'IUnknown *', to help with building SDL.
-    */
-    IUnknown *displayRequest;
-} SDL_VideoData;
-
-/* The global, WinRT, SDL Window.
-   For now, SDL/WinRT only supports one window (due to platform limitations of
-   WinRT.
-*/
-extern SDL_Window * WINRT_GlobalSDLWindow;
-
-/* Updates one or more SDL_Window flags, by querying the OS' native windowing APIs.
-   SDL_Window flags that can be updated should be specified in 'mask'.
-*/
-extern void WINRT_UpdateWindowFlags(SDL_Window * window, Uint32 mask);
-extern "C" Uint32 WINRT_DetectWindowFlags(SDL_Window * window);  /* detects flags w/o applying them */
-
-/* Display mode internals */
-//typedef struct
-//{
-//    Windows::Graphics::Display::DisplayOrientations currentOrientation;
-//} SDL_DisplayModeData;
-
-#ifdef __cplusplus_winrt
-
-/* A convenience macro to get a WinRT display property */
-#if NTDDI_VERSION > NTDDI_WIN8
-#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayInformation::GetForCurrentView()->NAME)
-#else
-#define WINRT_DISPLAY_PROPERTY(NAME) (Windows::Graphics::Display::DisplayProperties::NAME)
-#endif
-
-/* Converts DIPS to/from physical pixels */
-#define WINRT_DIPS_TO_PHYSICAL_PIXELS(DIPS)     ((int)(0.5f + (((float)(DIPS) * (float)WINRT_DISPLAY_PROPERTY(LogicalDpi)) / 96.f)))
-#define WINRT_PHYSICAL_PIXELS_TO_DIPS(PHYSPIX)  (((float)(PHYSPIX) * 96.f)/WINRT_DISPLAY_PROPERTY(LogicalDpi))
-
-/* Internal window data */
-struct SDL_WindowData
-{
-    SDL_Window *sdlWindow;
-    Platform::Agile<Windows::UI::Core::CoreWindow> coreWindow;
-#ifdef SDL_VIDEO_OPENGL_EGL
-    EGLSurface egl_surface;
-#endif
-#if SDL_WINRT_USE_APPLICATIONVIEW
-    Windows::UI::ViewManagement::ApplicationView ^ appView;
-#endif
-};
-
-#endif // ifdef __cplusplus_winrt