Index: src/ports/SkTLS_pthread.cpp |
diff --git a/src/ports/SkTLS_pthread.cpp b/src/ports/SkTLS_pthread.cpp |
index ac558a81965bedfb7a22a6bac8d001181c9eb1b4..445d76d13a6b923b5495326382651576eb032b8e 100644 |
--- a/src/ports/SkTLS_pthread.cpp |
+++ b/src/ports/SkTLS_pthread.cpp |
@@ -6,22 +6,17 @@ |
*/ |
#include "SkTLS.h" |
+#include "SkOnce.h" |
#include <pthread.h> |
static pthread_key_t gSkTLSKey; |
-static pthread_once_t gSkTLSKey_Once = PTHREAD_ONCE_INIT; |
- |
-static void sk_tls_make_key() { |
- (void)pthread_key_create(&gSkTLSKey, SkTLS::Destructor); |
-} |
void* SkTLS::PlatformGetSpecific(bool forceCreateTheSlot) { |
- // should we use forceCreateTheSlot to potentially skip calling pthread_once |
- // and just return nullptr if we've never been called with |
- // forceCreateTheSlot==true ? |
- |
- (void)pthread_once(&gSkTLSKey_Once, sk_tls_make_key); |
+ // should we use forceCreateTheSlot to potentially just return nullptr if |
+ // we've never been called with forceCreateTheSlot==true ? |
+ static SkOnce once; |
+ once(pthread_key_create, &gSkTLSKey, SkTLS::Destructor); |
return pthread_getspecific(gSkTLSKey); |
} |