Index: sky/shell/ui/animator.cc |
diff --git a/sky/shell/ui/animator.cc b/sky/shell/ui/animator.cc |
index 7b7fe3caca0fd510bb2ebcac9ef958d782ce4f72..ceca49942c3e904de70f3f9bc19088bbc9a59693 100644 |
--- a/sky/shell/ui/animator.cc |
+++ b/sky/shell/ui/animator.cc |
@@ -16,6 +16,7 @@ Animator::Animator(const Engine::Config& config, Engine* engine) |
engine_(engine), |
engine_requested_frame_(false), |
frame_in_progress_(false), |
+ paused_(false), |
weak_factory_(this) { |
} |
@@ -37,10 +38,16 @@ void Animator::RequestFrame() { |
} |
} |
-void Animator::CancelFrameRequest() { |
+void Animator::Stop() { |
+ paused_ = true; |
engine_requested_frame_ = false; |
} |
+void Animator::Start() { |
+ paused_ = false; |
+ RequestFrame(); |
+} |
+ |
void Animator::BeginFrame() { |
DCHECK(frame_in_progress_); |
// There could be a request in the message loop at time of cancel. |
@@ -62,6 +69,9 @@ void Animator::BeginFrame() { |
void Animator::OnFrameComplete() { |
DCHECK(frame_in_progress_); |
frame_in_progress_ = false; |
+ if (paused_) |
+ return; |
+ |
if (engine_requested_frame_) { |
frame_in_progress_ = true; |
BeginFrame(); |