]> git.cworth.org Git - apitrace/blobdiff - common/os_thread.hpp
Implement grouping of calls.
[apitrace] / common / os_thread.hpp
index da6e106487e5e7c4505a2ae3efb05cc88e36af71..f3ae210053da2b08ef711f516a92a3be433860b1 100644 (file)
@@ -40,6 +40,9 @@
 #endif
 
 
+/*
+ * This feature is not supported on Windows XP
+ */
 #define USE_WIN32_CONDITION_VARIABLES 0
 
 
  * - http://gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc/Thread_002dLocal.html
  * - http://msdn.microsoft.com/en-us/library/9w1sdazb.aspx
  */
-#if defined(_MSC_VER)
-#  define thread_specific __declspec(thread)
-#elif defined(__GNUC__)
-#  define thread_specific __thread
+#if defined(HAVE_COMPILER_TLS)
+#  define OS_THREAD_SPECIFIC_PTR(_type) HAVE_COMPILER_TLS _type *
 #else
-#  define thread_specific
-#  error "Unsupported compiler"
+#  define OS_THREAD_SPECIFIC_PTR(_type) os::thread_specific_ptr< _type >
 #endif
 
 
@@ -374,6 +374,10 @@ namespace os {
         {
         }
 
+        inline
+        ~thread() {
+        }
+
         template< class Function, class Arg >
         explicit thread( Function& f, Arg arg ) {
 #ifdef _WIN32
@@ -384,6 +388,12 @@ namespace os {
 #endif
         }
 
+        inline thread &
+        operator =(const thread &other) {
+            _native_handle = other._native_handle;
+            return *this;
+        }
+
         inline bool
         joinable(void) const {
             return _native_handle != 0;