Remove some unnecessary uses of SkOnce.
- gm/imagefiltersgraph.cpp can just use a global registrar
- SkScaledImageCache always accesses its global under a lock
BUG=skia:
R=bungeman@google.com, mtklein@google.com
Author: mtklein@chromium.org
Review URL: https://codereview.chromium.org/297273006
git-svn-id: http://skia.googlecode.com/svn/trunk@14897 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkScaledImageCache.cpp b/src/core/SkScaledImageCache.cpp
index 886b143..a6bffd8 100644
--- a/src/core/SkScaledImageCache.cpp
+++ b/src/core/SkScaledImageCache.cpp
@@ -7,7 +7,6 @@
#include "SkScaledImageCache.h"
#include "SkMipMap.h"
-#include "SkOnce.h"
#include "SkPixelRef.h"
#include "SkRect.h"
@@ -673,18 +672,17 @@
static SkScaledImageCache* gScaledImageCache = NULL;
static void cleanup_gScaledImageCache() { SkDELETE(gScaledImageCache); }
-static void create_cache(int) {
-#ifdef SK_USE_DISCARDABLE_SCALEDIMAGECACHE
- gScaledImageCache = SkNEW_ARGS(SkScaledImageCache, (SkDiscardableMemory::Create));
-#else
- gScaledImageCache = SkNEW_ARGS(SkScaledImageCache, (SK_DEFAULT_IMAGE_CACHE_LIMIT));
-#endif
-}
-
+/** Must hold gMutex when calling. */
static SkScaledImageCache* get_cache() {
- SK_DECLARE_STATIC_ONCE(once);
- SkOnce(&once, create_cache, 0, cleanup_gScaledImageCache);
- SkASSERT(NULL != gScaledImageCache);
+ // gMutex is always held when this is called, so we don't need to be fancy in here.
+ if (NULL == gScaledImageCache) {
+#ifdef SK_USE_DISCARDABLE_SCALEDIMAGECACHE
+ gScaledImageCache = SkNEW_ARGS(SkScaledImageCache, (SkDiscardableMemory::Create));
+#else
+ gScaledImageCache = SkNEW_ARGS(SkScaledImageCache, (SK_DEFAULT_IMAGE_CACHE_LIMIT));
+#endif
+ atexit(cleanup_gScaledImageCache);
+ }
return gScaledImageCache;
}