Index: src/utils/SkEventTracer.cpp |
diff --git a/src/utils/SkEventTracer.cpp b/src/utils/SkEventTracer.cpp |
index 32a0207c23ebaa0f3d0ac9edd7a29688a67c0e23..0a748d1464d70f9d30ac9d66f5909ad798cb2a2d 100644 |
--- a/src/utils/SkEventTracer.cpp |
+++ b/src/utils/SkEventTracer.cpp |
@@ -7,7 +7,7 @@ |
#include "SkAtomics.h" |
#include "SkEventTracer.h" |
-#include "SkOncePtr.h" |
+#include "SkOnce.h" |
#include <stdlib.h> |
@@ -39,9 +39,8 @@ class SkDefaultEventTracer : public SkEventTracer { |
} |
}; |
-// We prefer gUserTracer if it's been set, otherwise we fall back on gDefaultTracer. |
+// We prefer gUserTracer if it's been set, otherwise we fall back on a default tracer; |
static SkEventTracer* gUserTracer = nullptr; |
-SK_DECLARE_STATIC_ONCE_PTR(SkDefaultEventTracer, gDefaultTracer); |
void SkEventTracer::SetInstance(SkEventTracer* tracer) { |
SkASSERT(nullptr == sk_atomic_load(&gUserTracer, sk_memory_order_acquire)); |
@@ -54,5 +53,8 @@ SkEventTracer* SkEventTracer::GetInstance() { |
if (SkEventTracer* tracer = sk_atomic_load(&gUserTracer, sk_memory_order_acquire)) { |
return tracer; |
} |
- return gDefaultTracer.get([]{ return new SkDefaultEventTracer; }); |
+ static SkOnce once; |
+ static SkDefaultEventTracer* defaultTracer; |
+ once([] { defaultTracer = new SkDefaultEventTracer; }); |
+ return defaultTracer; |
} |