aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkMessageBus.h
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-09-09 06:48:29 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-09-09 06:48:29 -0700
commita1254acdb344174e761f5061c820559dab64a74c (patch)
treee7337fb34009c082ae4887e0eb91e5027e100ba4 /src/core/SkMessageBus.h
parenta5783aeff042ccaf517e50dee3660a4925f5f694 (diff)
Port uses of SkLazyPtr to SkOncePtr.
This gives SkOncePtr a non-trivial destructor that uses std::default_delete by default. This is overrideable, as seen in SkColorTable. SK_DECLARE_STATIC_ONCE_PTR still just leaves its pointers hanging at EOP. BUG=skia: No public API changes. TBR=reed@google.com Review URL: https://codereview.chromium.org/1322933005
Diffstat (limited to 'src/core/SkMessageBus.h')
-rw-r--r--src/core/SkMessageBus.h15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/core/SkMessageBus.h b/src/core/SkMessageBus.h
index 6f032a1fe2..a2802f06d4 100644
--- a/src/core/SkMessageBus.h
+++ b/src/core/SkMessageBus.h
@@ -8,8 +8,8 @@
#ifndef SkMessageBus_DEFINED
#define SkMessageBus_DEFINED
-#include "SkLazyPtr.h"
#include "SkMutex.h"
+#include "SkOncePtr.h"
#include "SkTArray.h"
#include "SkTDArray.h"
#include "SkTypes.h"
@@ -40,20 +40,17 @@ private:
SkMessageBus();
static SkMessageBus* Get();
- // Allow SkLazyPtr to call SkMessageBus::SkMessageBus().
- template <typename T> friend T* Private::sk_new();
-
SkTDArray<Inbox*> fInboxes;
SkMutex fInboxesMutex;
};
// This must go in a single .cpp file, not some .h, or we risk creating more than one global
// SkMessageBus per type when using shared libraries. NOTE: at most one per file will compile.
-#define DECLARE_SKMESSAGEBUS_MESSAGE(Message) \
- SK_DECLARE_STATIC_LAZY_PTR(SkMessageBus<Message>, bus); \
- template <> \
- SkMessageBus<Message>* SkMessageBus<Message>::Get() { \
- return bus.get(); \
+#define DECLARE_SKMESSAGEBUS_MESSAGE(Message) \
+ SK_DECLARE_STATIC_ONCE_PTR(SkMessageBus<Message>, bus); \
+ template <> \
+ SkMessageBus<Message>* SkMessageBus<Message>::Get() { \
+ return bus.get([]{ return new SkMessageBus<Message>(); }); \
}
// ----------------------- Implementation of SkMessageBus::Inbox -----------------------