Cleanup timing state machine

BUG=skia:

Review URL: https://codereview.chromium.org/1386933002
diff --git a/tools/VisualBench/VisualInteractiveModule.cpp b/tools/VisualBench/VisualInteractiveModule.cpp
index f41bcae..d2e5b20 100755
--- a/tools/VisualBench/VisualInteractiveModule.cpp
+++ b/tools/VisualBench/VisualInteractiveModule.cpp
@@ -27,6 +27,7 @@
     : fCurrentMeasurement(0)
     , fBenchmark(nullptr)
     , fAdvance(false)
+    , fHasBeenReset(false)
     , fOwner(SkRef(owner)) {
     fBenchmarkStream.reset(new VisualBenchmarkStream);
 
@@ -93,7 +94,7 @@
     fOwner->clear(canvas, SK_ColorWHITE, 2);
 
     fBenchmark->delayedSetup();
-
+    fBenchmark->preTimingHooks(canvas);
     return true;
 }
 #include "GrGpu.h"
@@ -104,10 +105,18 @@
         fOwner->closeWindow();
         return;
     }
+
+    if (fHasBeenReset) {
+        fHasBeenReset = false;
+        fBenchmark->preTimingHooks(canvas);
+    }
+
     this->renderFrame(canvas);
-    TimingStateMachine::ParentEvents event = fTSM.nextFrame(canvas, fBenchmark);
+    TimingStateMachine::ParentEvents event = fTSM.nextFrame(false);
     switch (event) {
         case TimingStateMachine::kReset_ParentEvents:
+            fBenchmark->postTimingHooks(canvas);
+            fHasBeenReset = true;
             fOwner->reset();
             break;
         case TimingStateMachine::kTiming_ParentEvents:
@@ -121,10 +130,10 @@
             if (fAdvance) {
                 fAdvance = false;
                 fTSM.nextBenchmark(canvas, fBenchmark);
+                fBenchmark->postTimingHooks(canvas);
                 fBenchmark.reset(nullptr);
                 fOwner->reset();
-            } else {
-                fTSM.nextSample();
+                fHasBeenReset = true;
             }
             break;
     }