Index: src/ports/SkThread_win.cpp |
=================================================================== |
--- src/ports/SkThread_win.cpp (revision 10093) |
+++ src/ports/SkThread_win.cpp (working copy) |
@@ -1,4 +1,3 @@ |
- |
/* |
* Copyright 2008 The Android Open Source Project |
* |
@@ -6,11 +5,9 @@ |
* found in the LICENSE file. |
*/ |
- |
#include <windows.h> |
#include <intrin.h> |
#include "SkThread.h" |
-#include "SkTLS.h" |
//MSDN says in order to declare an interlocked function for use as an |
//intrinsic, include intrin.h and put the function in a #pragma intrinsic |
@@ -66,71 +63,3 @@ |
void SkMutex::release() { |
LeaveCriticalSection(reinterpret_cast<CRITICAL_SECTION*>(&fStorage)); |
} |
- |
-/////////////////////////////////////////////////////////////////////////// |
- |
-static bool gOnce; |
-static DWORD gTlsIndex; |
-SK_DECLARE_STATIC_MUTEX(gMutex); |
- |
-void* SkTLS::PlatformGetSpecific(bool forceCreateTheSlot) { |
- if (!forceCreateTheSlot && !gOnce) { |
- return NULL; |
- } |
- |
- if (!gOnce) { |
- SkAutoMutexAcquire tmp(gMutex); |
- if (!gOnce) { |
- gTlsIndex = TlsAlloc(); |
- gOnce = true; |
- } |
- } |
- return TlsGetValue(gTlsIndex); |
-} |
- |
-void SkTLS::PlatformSetSpecific(void* ptr) { |
- SkASSERT(gOnce); |
- (void)TlsSetValue(gTlsIndex, ptr); |
-} |
- |
-// Call TLS destructors on thread exit. Code based on Chromium's |
-// base/threading/thread_local_storage_win.cc |
-#ifdef _WIN64 |
- |
-#pragma comment(linker, "/INCLUDE:_tls_used") |
-#pragma comment(linker, "/INCLUDE:skia_tls_callback") |
- |
-#else |
- |
-#pragma comment(linker, "/INCLUDE:__tls_used") |
-#pragma comment(linker, "/INCLUDE:_skia_tls_callback") |
- |
-#endif |
- |
-void NTAPI onTLSCallback(PVOID unused, DWORD reason, PVOID unused2) { |
- if ((DLL_THREAD_DETACH == reason || DLL_PROCESS_DETACH == reason) && gOnce) { |
- void* ptr = TlsGetValue(gTlsIndex); |
- if (ptr != NULL) { |
- SkTLS::Destructor(ptr); |
- TlsSetValue(gTlsIndex, NULL); |
- } |
- } |
-} |
- |
-extern "C" { |
- |
-#ifdef _WIN64 |
- |
-#pragma const_seg(".CRT$XLB") |
-extern const PIMAGE_TLS_CALLBACK skia_tls_callback; |
-const PIMAGE_TLS_CALLBACK skia_tls_callback = onTLSCallback; |
-#pragma const_seg() |
- |
-#else |
- |
-#pragma data_seg(".CRT$XLB") |
-PIMAGE_TLS_CALLBACK skia_tls_callback = onTLSCallback; |
-#pragma data_seg() |
- |
-#endif |
-} |