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;
 }