X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/49e714e127fb21392772f0f61bed7efe5e73cf2a..38534f596974042130716a26276e9564b0b72295:/include/wx/tls.h diff --git a/include/wx/tls.h b/include/wx/tls.h index bd4e9bad7a..6886434c00 100644 --- a/include/wx/tls.h +++ b/include/wx/tls.h @@ -22,10 +22,13 @@ #if !wxUSE_THREADS #define wxHAS_COMPILER_TLS #define wxTHREAD_SPECIFIC_DECL -// __thread keyword is supported if configure detected it or when using mingw32 -// >= 4.3 which is known to have it too -#elif defined(HAVE___THREAD_KEYWORD) || \ - (defined(__MINGW32__) && wxCHECK_GCC_VERSION(4, 3)) +// otherwise try to find the compiler-specific way to handle TLS unless +// explicitly disabled by setting wxUSE_COMPILER_TLS to 0 (it is 1 by default). +#elif wxUSE_COMPILER_TLS +// __thread keyword is not supported correctly by MinGW, at least in some +// configurations, see http://sourceforge.net/support/tracker.php?aid=2837047 +// and when in doubt we prefer to not use it at all. +#if defined(HAVE___THREAD_KEYWORD) && !defined(__MINGW32__) #define wxHAS_COMPILER_TLS #define wxTHREAD_SPECIFIC_DECL __thread // MSVC has its own version which might be supported by some other Windows @@ -33,7 +36,8 @@ #elif wxCHECK_VISUALC_VERSION(7) #define wxHAS_COMPILER_TLS #define wxTHREAD_SPECIFIC_DECL __declspec(thread) -#endif +#endif // compilers +#endif // wxUSE_COMPILER_TLS // ---------------------------------------------------------------------------- // define wxTLS_TYPE() @@ -50,7 +54,7 @@ typedef void (*wxTlsDestructorFunction)(void*); } - #if defined(__WXMSW__) + #if defined(__WINDOWS__) #include "wx/msw/tls.h" #elif defined(__OS2__) #include "wx/os2/tls.h" @@ -132,7 +136,7 @@ }; #define wxTLS_TYPE(T) wxTlsValue - #define wxTLS_PTR(var) (var) + #define wxTLS_PTR(var) ((var).Get()) #define wxTLS_VALUE(var) (*(var)) #endif // wxHAS_COMPILER_TLS/!wxHAS_COMPILER_TLS