From baae74c857e9b0fd49dd207e5c8448662ea4dcd0 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Dec 2017 09:10:02 -0800 Subject: [PATCH] Added SDL_WinRTGetDeviceFamily() to find out what type of device your application is running on (thanks Daniel Knobe!) --- WhatsNew.txt | 10 ++++++++++ include/SDL_system.h | 26 ++++++++++++++++++++++++++ src/core/winrt/SDL_winrtapp_common.cpp | 22 ++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/WhatsNew.txt b/WhatsNew.txt index f30e0ab288225..2555ef484e6b9 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -9,6 +9,16 @@ General: * Added SDL_fmod() * Each of the SDL math functions now has the corresponding float version +Windows: +* Implemented WASAPI support on Windows UWP and removed the deprecated XAudio2 implementation + +Windows UWP: +* Added SDL_WinRTGetDeviceFamily() to find out what type of device your application is running on + +Mac OSX / iOS / tvOS: +* Added a Metal 2D render implementation +* Added SDL_RenderGetMetalLayer() and SDL_RenderGetMetalCommandEncoder() to insert your own drawing into SDL rendering when using the Metal implementation + --------------------------------------------------------------------------- 2.0.7: diff --git a/include/SDL_system.h b/include/SDL_system.h index eb069b33d8127..5974188ccc21a 100644 --- a/include/SDL_system.h +++ b/include/SDL_system.h @@ -169,6 +169,25 @@ typedef enum } 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; + + /** * \brief Retrieves a WinRT defined path on the local file system * @@ -203,6 +222,13 @@ extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path */ extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); +/** + * \brief Detects the device family of WinRT plattform on runtime + * + * \return Device family + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + #endif /* __WINRT__ */ /* Ends C function definitions when using C++ */ diff --git a/src/core/winrt/SDL_winrtapp_common.cpp b/src/core/winrt/SDL_winrtapp_common.cpp index 3ee0be32fddbc..fda00af62c2d6 100644 --- a/src/core/winrt/SDL_winrtapp_common.cpp +++ b/src/core/winrt/SDL_winrtapp_common.cpp @@ -40,3 +40,25 @@ SDL_WinRTRunApp(int (*mainFunction)(int, char **), void * xamlBackgroundPanel) return SDL_WinRTInitNonXAMLApp(mainFunction); } } + + +extern "C" DECLSPEC SDL_WinRT_DeviceFamily +SDL_WinRTGetDeviceFamily() +{ + 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; + } + + return SDL_WINRT_DEVICEFAMILY_UNKNOWN; +} \ No newline at end of file