WinRT: made SDL_ThreadID() return the native thread ID, rather than a fake one
authorDavid Ludwig <dludwig@pobox.com>
Tue, 20 Aug 2013 22:04:09 -0400
changeset 8486 ba33d06f80cd
parent 8485 f0ede9ce6a44
child 8487 3c1f0d357a1a
WinRT: made SDL_ThreadID() return the native thread ID, rather than a fake one
src/thread/stdcpp/SDL_systhread.cpp
--- a/src/thread/stdcpp/SDL_systhread.cpp	Tue Aug 20 21:55:13 2013 -0400
+++ b/src/thread/stdcpp/SDL_systhread.cpp	Tue Aug 20 22:04:09 2013 -0400
@@ -33,13 +33,8 @@
 #include <thread>
 #include <system_error>
 
-// HACK: Mimic C++11's thread_local keyword on Visual C++ 2012 (aka. VC++ 11)
-// TODO: make sure this hack doesn't get used if and when Visual C++ supports
-// the official, 'thread_local' keyword.
-#ifdef _MSC_VER
-#define thread_local __declspec(thread)
-// Documentation for __declspec(thread) can be found online at:
-// http://msdn.microsoft.com/en-us/library/2s9wt68x.aspx
+#ifdef __WINRT__
+#include <Windows.h>
 #endif
 
 static void
@@ -78,6 +73,10 @@
 SDL_threadID
 SDL_ThreadID(void)
 {
+#ifdef __WINRT__
+    return GetCurrentThreadId();
+#else
+    // HACK: Mimick a thread ID, if one isn't otherwise available.
     static thread_local SDL_threadID current_thread_id = 0;
     static SDL_threadID next_thread_id = 1;
     static std::mutex next_thread_id_mutex;
@@ -89,6 +88,7 @@
     }
 
     return current_thread_id;
+#endif
 }
 
 extern "C"