defer any drawing until our first time, so we don't do it in our
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 8 Mar 2012 22:13:04 +0000 (22:13 +0000)
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 8 Mar 2012 22:13:04 +0000 (22:13 +0000)
constructor (which may get called multiple times)

git-svn-id: http://skia.googlecode.com/svn/trunk@3352 2bbb7eff-a529-9590-31e7-b0007b416f81

gm/bitmapfilters.cpp

index cf98dcd..92c7b43 100644 (file)
@@ -78,14 +78,21 @@ static SkScalar draw_row(SkCanvas* canvas, const SkBitmap& bm) {
 }
 
 class FilterGM : public GM {
-public:
-    SkBitmap    fBM8, fBM4444, fBM16, fBM32;
-
-       FilterGM() {
+    bool fOnce;
+    void init() {
+        if (fOnce) {
+            return;
+        }
+        fOnce = true;
         make_bm(&fBM8);
         fBM8.copyTo(&fBM4444, SkBitmap::kARGB_4444_Config);
         fBM8.copyTo(&fBM16, SkBitmap::kRGB_565_Config);
         fBM8.copyTo(&fBM32, SkBitmap::kARGB_8888_Config);
+    }
+public:
+    SkBitmap    fBM8, fBM4444, fBM16, fBM32;
+
+       FilterGM() : fOnce(false) {
         this->setBGColor(0xFFDDDDDD);
     }
 
@@ -99,6 +106,7 @@ protected:
     }
 
     virtual void onDraw(SkCanvas* canvas) {
+        this->init();
 
         SkScalar x = SkIntToScalar(10);
         SkScalar y = SkIntToScalar(10);