summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Junghans <tobydox@veyon.io>2018-11-07 13:03:16 +0100
committerTobias Junghans <tobydox@veyon.io>2018-11-19 07:49:11 +0100
commit2411769962b1c95015bfc2d0c817a34213afbbc9 (patch)
tree6ebb42dcf64aa816ebcc5a057549b9dd2e1bebda
parentcfdbb94038e76ff002e3d68dc6b1ca0df2606ef6 (diff)
downloadlibtdevnc-2411769962b1c95015bfc2d0c817a34213afbbc9.tar.gz
libtdevnc-2411769962b1c95015bfc2d0c817a34213afbbc9.zip
LibVNCServer: properly use thread-local storage
The TLS macro never has been defined due to the missing LIBVNCSERVER_HAVE_TLS macro. This revises the macro logic to also cover Win32 builds with MSVC.
-rw-r--r--libvncserver/tight.c7
-rw-r--r--libvncserver/zlib.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/libvncserver/tight.c b/libvncserver/tight.c
index 1081c8f..d6f4749 100644
--- a/libvncserver/tight.c
+++ b/libvncserver/tight.c
@@ -57,10 +57,11 @@
* that we resort to using thread local storage instead of having
* per-client data.
*/
-#if LIBVNCSERVER_HAVE_LIBPTHREAD && LIBVNCSERVER_HAVE_TLS && !defined(TLS) && defined(__linux__)
+#if defined(__GNUC__)
#define TLS __thread
-#endif
-#ifndef TLS
+#elif defined(_MSC_VER)
+#define TLS __declspec(thread)
+#else
#define TLS
#endif
diff --git a/libvncserver/zlib.c b/libvncserver/zlib.c
index 45a1314..6fee4df 100644
--- a/libvncserver/zlib.c
+++ b/libvncserver/zlib.c
@@ -45,10 +45,11 @@
* tight. N.B. ZRLE does it the traditional way with per-client storage
* (and so at least ZRLE will work threaded on older systems.)
*/
-#if LIBVNCSERVER_HAVE_LIBPTHREAD && LIBVNCSERVER_HAVE_TLS && !defined(TLS) && defined(__linux__)
+#if defined(__GNUC__)
#define TLS __thread
-#endif
-#ifndef TLS
+#elif defined(_MSC_VER)
+#define TLS __declspec(thread)
+#else
#define TLS
#endif