diff options
author | 2015-09-09 06:48:29 -0700 | |
---|---|---|
committer | 2015-09-09 06:48:29 -0700 | |
commit | a1254acdb344174e761f5061c820559dab64a74c (patch) | |
tree | e7337fb34009c082ae4887e0eb91e5027e100ba4 /src/core/SkMessageBus.h | |
parent | a5783aeff042ccaf517e50dee3660a4925f5f694 (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.h | 15 |
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 ----------------------- |