]> git.cworth.org Git - apitrace/blobdiff - common/os_thread.hpp
Merge branch 'attrib_list'
[apitrace] / common / os_thread.hpp
index fb340e162c2401e4bc019326b9f44d413acab544..f3ae210053da2b08ef711f516a92a3be433860b1 100644 (file)
@@ -41,9 +41,8 @@
 
 
 /*
- * These features are not supported on Windows XP
+ * This feature is not supported on Windows XP
  */
-#define USE_WIN32_DECLSPEC_THREAD 0
 #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(_WIN32) || USE_WIN32_DECLSPEC_THREAD
-#  if defined(_MSC_VER)
-#    define OS_THREAD_SPECIFIC_PTR(_type) __declspec(thread) _type *
-#  elif defined(__GNUC__)
-#    define OS_THREAD_SPECIFIC_PTR(_type) __thread _type *
-#  endif
-#endif
-#if !defined(OS_THREAD_SPECIFIC_PTR)
+#if defined(HAVE_COMPILER_TLS)
+#  define OS_THREAD_SPECIFIC_PTR(_type) HAVE_COMPILER_TLS _type *
+#else
 #  define OS_THREAD_SPECIFIC_PTR(_type) os::thread_specific_ptr< _type >
 #endif
 
@@ -380,6 +374,10 @@ namespace os {
         {
         }
 
+        inline
+        ~thread() {
+        }
+
         template< class Function, class Arg >
         explicit thread( Function& f, Arg arg ) {
 #ifdef _WIN32
@@ -390,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;