diff --git a/samplecode/SampleMipMap.cpp b/samplecode/SampleMipMap.cpp
index de5aac5..a7e3166 100644
--- a/samplecode/SampleMipMap.cpp
+++ b/samplecode/SampleMipMap.cpp
@@ -40,8 +40,18 @@
     enum {
         N = 64
     };
+    bool fOnce;
 public:
     MipMapView() {
+        fOnce = false;
+    }
+    
+    void init() {
+        if (fOnce) {
+            return;
+        }
+        fOnce = true;
+
         fBitmap = createBitmap(N);
         
         fWidth = N;
@@ -87,6 +97,7 @@
     }
     
     virtual void onDrawContent(SkCanvas* canvas) {
+        this->init();
         canvas->translate(SkIntToScalar(10), SkIntToScalar(10));
         
         canvas->scale(1.00000001f, 0.9999999f);
diff --git a/samplecode/SamplePageFlip.cpp b/samplecode/SamplePageFlip.cpp
index b2d96f0..99670bd 100644
--- a/samplecode/SamplePageFlip.cpp
+++ b/samplecode/SamplePageFlip.cpp
@@ -90,6 +90,7 @@
 };
 
 class PageFlipView : public SampleView {
+    bool fOnce;
 public:
     
     enum { N = SK_ARRAY_COUNT(gConfigs) };
@@ -99,25 +100,37 @@
 
 	PageFlipView() {
         gDone = false;
+        fOnce = false;
+        this->setBGColor(0xFFDDDDDD);
+    }
+    
+    void init() {
+        if (fOnce) {
+            return;
+        }
+        fOnce = true;
+
         for (int i = 0; i < N; i++) {
             int             status;
             pthread_attr_t  attr;
             
             status = pthread_attr_init(&attr);
             SkASSERT(0 == status);
-
+            
             fBitmaps[i].setConfig(gConfigs[i], WIDTH, HEIGHT);
             SkFlipPixelRef* pr = new SkFlipPixelRef(gConfigs[i], WIDTH, HEIGHT);
             fBitmaps[i].setPixelRef(pr)->unref();
             fBitmaps[i].eraseColor(0);
-
+            
             status = pthread_create(&fThreads[i], &attr,  draw_proc, &fBitmaps[i]);
             SkASSERT(0 == status);
         }
-        this->setBGColor(0xFFDDDDDD);
     }
     
     virtual ~PageFlipView() {
+        if (!fOnce) {
+            return;
+        }
         gDone = true;
         for (int i = 0; i < N; i++) {
             void* ret;
@@ -137,6 +150,7 @@
     }
 
     virtual void onDrawContent(SkCanvas* canvas) {
+        this->init();
         SkScalar x = SkIntToScalar(10);
         SkScalar y = SkIntToScalar(10);
         for (int i = 0; i < N; i++) {
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index d39cee0..9b72afb 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -724,8 +724,18 @@
 
 class SlideView : public SampleView {
     int fIndex;
+    bool fOnce;
 public:
     SlideView() {
+        fOnce = false;
+    }
+    
+    void init() {
+        if (fOnce) {
+            return;
+        }
+        fOnce = true;
+
         fIndex = 0;
         
         SkBitmap bm;
@@ -757,10 +767,12 @@
     }
     
     virtual void onDrawContent(SkCanvas* canvas) {
+        this->init();
         gProc[fIndex](canvas);
     }
 
     virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
+        this->init();
         fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc);
         this->inval(NULL);
         return NULL;
diff --git a/samplecode/SampleXfermodes.cpp b/samplecode/SampleXfermodes.cpp
index ffea954..4ad967e 100644
--- a/samplecode/SampleXfermodes.cpp
+++ b/samplecode/SampleXfermodes.cpp
@@ -134,7 +134,18 @@
 public:
     const static int W = 64;
     const static int H = 64;
+    bool fOnce;
+
 	XfermodesView() {
+        fOnce = false;
+    }
+    
+    void init() {
+        if (fOnce) {
+            return;
+        }
+        fOnce = true;
+
         const int W = 64;
         const int H = 64;
 
@@ -156,6 +167,8 @@
     }
 
     virtual void onDrawContent(SkCanvas* canvas) {
+        this->init();
+
         canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
 
         const struct {
