WinRT: build fix for Visual C++ 2013 Update 4

Visual C++ 2013 Update 4 re-introduced the Sleep() function to WinRT apps (for
code that targets Windows 8.1 and Windows Phone 8.1).  This led to a build
error, as SDL was defining it's own Sleep() function (to make up for the lack
of a public Sleep() function).  The fix makes sure that SDL's custom Sleep()
function is only used when Windows' Sleep() is not available.

Many thanks go out to Sergiu Marian Gaina for the fix!
main
David Ludwig 2014-11-15 10:12:36 -05:00
parent 8366bbdd7b
commit e6cca5e929
1 changed files with 13 additions and 1 deletions

View File

@ -186,7 +186,19 @@ SDL_GetPerformanceFrequency(void)
return frequency.QuadPart; return frequency.QuadPart;
} }
#ifdef __WINRT__ /* 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 void static void
Sleep(DWORD timeout) Sleep(DWORD timeout)
{ {