Chromium Code Reviews| Index: cc/trees/single_thread_proxy.cc |
| diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc |
| index b9f6a4849131dfa14431b6f7a0b48dd4fe81fab9..0ae9440a2ab9c5adad40ce203c9e739009c62b9d 100644 |
| --- a/cc/trees/single_thread_proxy.cc |
| +++ b/cc/trees/single_thread_proxy.cc |
| @@ -47,6 +47,7 @@ SingleThreadProxy::SingleThreadProxy( |
| next_frame_is_newly_committed_frame_(false), |
| inside_draw_(false), |
| defer_commits_(false), |
| + animate_requested_(false), |
| commit_requested_(false), |
| inside_synchronous_composite_(false), |
| output_surface_creation_requested_(false), |
| @@ -178,7 +179,13 @@ void SingleThreadProxy::SetNeedsAnimate() { |
| TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsAnimate"); |
| DCHECK(Proxy::IsMainThread()); |
| client_->ScheduleAnimation(); |
| - SetNeedsCommit(); |
| + if (animate_requested_) { |
|
danakj
2015/04/28 21:47:49
nit: no {}
|
| + return; |
| + } |
| + animate_requested_ = true; |
| + DebugScopedSetImplThread impl(this); |
| + if (scheduler_on_impl_thread_) |
| + scheduler_on_impl_thread_->SetNeedsCommit(); |
| } |
| void SingleThreadProxy::SetNeedsUpdateLayers() { |
| @@ -335,10 +342,10 @@ void SingleThreadProxy::SetNeedsCommit() { |
| client_->ScheduleComposite(); |
| if (commit_requested_) |
| return; |
| + commit_requested_ = true; |
| DebugScopedSetImplThread impl(this); |
| if (scheduler_on_impl_thread_) |
| scheduler_on_impl_thread_->SetNeedsCommit(); |
| - commit_requested_ = true; |
| } |
| void SingleThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) { |
| @@ -809,6 +816,7 @@ void SingleThreadProxy::SendBeginMainFrameNotExpectedSoon() { |
| void SingleThreadProxy::BeginMainFrame() { |
| commit_requested_ = false; |
| + animate_requested_ = false; |
| if (defer_commits_) { |
| TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit", |
| @@ -838,6 +846,8 @@ void SingleThreadProxy::BeginMainFrame() { |
| } |
| // Prevent new commits from being requested inside DoBeginMainFrame. |
| + // Note: We do not want to prevent SetNeedsAnimate from requesting |
| + // a commit here. |
| commit_requested_ = true; |
| const BeginFrameArgs& begin_frame_args = |