git-svn-id: http://skia.googlecode.com/svn/trunk@685 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleGM.cpp b/samplecode/SampleGM.cpp
index d85cad1..5c9ea76 100644
--- a/samplecode/SampleGM.cpp
+++ b/samplecode/SampleGM.cpp
@@ -15,6 +15,10 @@
         fReg = GMRegistry::Head();
     }
 	
+    void reset() {
+        fReg = GMRegistry::Head();
+    }
+        
     GM* next() {
         if (fReg) {
             GMRegistry::Factory fact = fReg->factory();
@@ -46,6 +50,7 @@
 public:
 	GMView() {
         fGM = fIter.next();
+        this->postNextGM();
     }
     
 protected:
@@ -58,6 +63,20 @@
         return this->INHERITED::onQuery(evt);
     }
 
+    virtual bool onEvent(const SkEvent& evt) {
+        if (evt.isType("next-gm")) {
+            delete fGM;
+            if (!(fGM = fIter.next())) {
+                fIter.reset();
+                fGM = fIter.next();
+            }
+            this->inval(NULL);
+            this->postNextGM();
+            return true;
+        }
+        return this->INHERITED::onEvent(evt);
+    }
+
     void drawBG(SkCanvas* canvas) {
         canvas->drawColor(0xFFDDDDDD);
     }
@@ -67,6 +86,10 @@
     }
     
 private:
+    void postNextGM() {
+        (new SkEvent("next-gm"))->post(this->getSinkID(), 1500);
+    }
+
     typedef SkView INHERITED;
 };