From 97de357270e54be53acb17e1cb4b4d5e25bacc01 Mon Sep 17 00:00:00 2001 From: "commit-bot@chromium.org" Date: Thu, 29 May 2014 20:13:22 +0000 Subject: SkLazyPtr, mk. 2 SK_DECLARE_STATIC_LAZY_PTR and SK_DECLARE_STATIC_LAZY_PTR_ARRAY let you declare a single or array of static pointers that are lazily initialized. You can think of this as a restricted, lighter-weight version of SkOnce. There's no guarantee that Create will be called exactly once, but we do guarantee all threads will agree on the resulting pointer. We'll clean up any other extra pointers we Create()ed by calling Destroy(), which defaults to SkDELETE. In debug mode, we also clean up the winning pointer at process exit, so we can make sure we didn't leak it or free it early. I've ported SkData (singleton) and SkXfermode (array) as examples. Once this lands I'll port most other users of SkOnce. BUG=skia: R=bungeman@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/306943003 git-svn-id: http://skia.googlecode.com/svn/trunk@14976 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/core/SkData.h | 3 ++- include/core/SkXfermode.h | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/core/SkData.h b/include/core/SkData.h index bee0fcdfa2..fba2846c70 100644 --- a/include/core/SkData.h +++ b/include/core/SkData.h @@ -137,7 +137,8 @@ private: virtual ~SkData(); // Called the first time someone calls NewEmpty to initialize the singleton. - static void NewEmptyImpl(int/*unused*/); + static SkData* NewEmptyImpl(); + static void DeleteEmpty(SkData*); typedef SkRefCnt INHERITED; }; diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h index 13749fd51b..c0a6572ec7 100644 --- a/include/core/SkXfermode.h +++ b/include/core/SkXfermode.h @@ -234,9 +234,6 @@ private: kModeCount = kLastMode + 1 }; - friend class SkGraphics; - static void Term(); - typedef SkFlattenable INHERITED; }; -- cgit v1.2.3