diff options
author | 2014-06-02 08:44:27 -0700 | |
---|---|---|
committer | 2014-06-02 08:44:27 -0700 | |
commit | 78358bf624c7e7c09ffccf638c50870808d884d6 (patch) | |
tree | 71a7dfbae1429f457cd5c31eb4469925991cf245 /src/core/SkMessageBus.h | |
parent | 309e86912445879651d52ebbedb67b4ff3f1516c (diff) |
Port most uses of SkOnce to SkLazyPtr.
BUG=skia:
Committed: http://code.google.com/p/skia/source/detail?r=15006
Committed: http://code.google.com/p/skia/source/detail?r=15014
R=reed@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/304383005
Diffstat (limited to 'src/core/SkMessageBus.h')
-rw-r--r-- | src/core/SkMessageBus.h | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/core/SkMessageBus.h b/src/core/SkMessageBus.h index ddeac57ac1..f36c42b4c7 100644 --- a/src/core/SkMessageBus.h +++ b/src/core/SkMessageBus.h @@ -8,7 +8,7 @@ #ifndef SkMessageBus_DEFINED #define SkMessageBus_DEFINED -#include "SkOnce.h" +#include "SkLazyPtr.h" #include "SkTDArray.h" #include "SkThread.h" #include "SkTypes.h" @@ -38,7 +38,7 @@ public: private: SkMessageBus(); static SkMessageBus* Get(); - static void New(SkMessageBus**); + static SkMessageBus* New(); SkTDArray<Inbox*> fInboxes; SkMutex fInboxesMutex; @@ -46,14 +46,11 @@ private: // 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. -#define DECLARE_SKMESSAGEBUS_MESSAGE(Message) \ - template <> \ - SkMessageBus<Message>* SkMessageBus<Message>::Get() { \ - static SkMessageBus<Message>* bus = NULL; \ - SK_DECLARE_STATIC_ONCE(once); \ - SkOnce(&once, &New, &bus); \ - SkASSERT(bus != NULL); \ - return bus; \ +#define DECLARE_SKMESSAGEBUS_MESSAGE(Message) \ + template <> \ + SkMessageBus<Message>* SkMessageBus<Message>::Get() { \ + SK_DECLARE_STATIC_LAZY_PTR(SkMessageBus<Message>, bus, New); \ + return bus.get(); \ } // ----------------------- Implementation of SkMessageBus::Inbox ----------------------- @@ -100,8 +97,8 @@ template <typename Message> SkMessageBus<Message>::SkMessageBus() {} template <typename Message> -/*static*/ void SkMessageBus<Message>::New(SkMessageBus<Message>** bus) { - *bus = new SkMessageBus<Message>(); +/*static*/ SkMessageBus<Message>* SkMessageBus<Message>::New() { + return SkNEW(SkMessageBus<Message>); } template <typename Message> |