Index: cc/trees/thread_proxy.cc |
diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc |
index 9624a2dc293bfefdc4c2f50e386a4336addd8c92..c55b8995b50a321e44fd8b91a71c60405d55eb8e 100644 |
--- a/cc/trees/thread_proxy.cc |
+++ b/cc/trees/thread_proxy.cc |
@@ -80,7 +80,7 @@ ThreadProxy::ThreadProxy( |
LayerTreeHost* layer_tree_host, |
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) |
: Proxy(impl_task_runner), |
- animate_requested_(false), |
+ update_requested_(false), |
commit_requested_(false), |
commit_request_sent_to_impl_thread_(false), |
created_offscreen_context_provider_(false), |
@@ -350,24 +350,14 @@ const RendererCapabilities& ThreadProxy::GetRendererCapabilities() const { |
return renderer_capabilities_main_thread_copy_; |
} |
-void ThreadProxy::SetNeedsAnimate() { |
- DCHECK(IsMainThread()); |
- if (animate_requested_) |
- return; |
- |
- TRACE_EVENT0("cc", "ThreadProxy::SetNeedsAnimate"); |
- animate_requested_ = true; |
- can_cancel_commit_ = false; |
- SendCommitRequestToImplThreadIfNeeded(); |
-} |
- |
void ThreadProxy::SetNeedsUpdateLayers() { |
DCHECK(IsMainThread()); |
- if (commit_request_sent_to_impl_thread_) |
+ if (update_requested_) |
return; |
TRACE_EVENT0("cc", "ThreadProxy::SetNeedsUpdateLayers"); |
+ update_requested_ = true; |
SendCommitRequestToImplThreadIfNeeded(); |
} |
@@ -786,10 +776,10 @@ void ThreadProxy::BeginMainFrame( |
commit_requested_ = true; |
commit_request_sent_to_impl_thread_ = true; |
- // On the other hand, the AnimationRequested flag needs to be cleared |
- // here so that any animation requests generated by the apply or animate |
+ // On the other hand, the update_requested_ flag needs to be cleared |
+ // here so that any update requests generated by the apply or animate |
// callbacks will trigger another frame. |
- animate_requested_ = false; |
+ update_requested_ = false; |
if (!in_composite_and_readback_ && !layer_tree_host()->visible()) { |
commit_requested_ = false; |
@@ -865,6 +855,16 @@ void ThreadProxy::BeginMainFrame( |
layer_tree_host()->WillCommit(); |
+ // Before calling animate, we set update_requested_ to false. If it is true |
+ // now, it means SetNeedsUpdateLayers was called again, but during a state |
+ // when commit_request_sent_to_impl_thread_ = true. We need to force that call |
danakj
2013/12/05 18:28:16
Can you explain this? The SetNeedsUpdateLayers() f
ajuma
2013/12/05 19:01:06
SetNeedsUpdateLayers calls SendCommitRequestToImpl
danakj
2013/12/05 19:18:51
Ah, thanks. I see. SendCommitRequestToImplThreadIf
trchen
2013/12/06 03:42:39
It is doing the right thing. The comment is a bit
danakj
2013/12/06 17:21:33
Ah, that will do something different though, as SN
|
+ // to happen again now so that the commit request is sent to the impl thread. |
+ if (update_requested_) { |
+ // Forces SetNeedsUpdateLayers to consider posting a commit task. |
+ update_requested_ = false; |
+ SetNeedsUpdateLayers(); |
+ } |
+ |
if (!updated && can_cancel_this_commit) { |
TRACE_EVENT0("cc", "EarlyOut_NoUpdates"); |
bool did_handle = true; |
@@ -882,16 +882,6 @@ void ThreadProxy::BeginMainFrame( |
return; |
} |
- // Before calling animate, we set animate_requested_ to false. If it is true |
- // now, it means SetNeedAnimate was called again, but during a state when |
- // commit_request_sent_to_impl_thread_ = true. We need to force that call to |
- // happen again now so that the commit request is sent to the impl thread. |
- if (animate_requested_) { |
- // Forces SetNeedsAnimate to consider posting a commit task. |
- animate_requested_ = false; |
- SetNeedsAnimate(); |
- } |
- |
scoped_refptr<cc::ContextProvider> offscreen_context_provider; |
if (renderer_capabilities_main_thread_copy_.using_offscreen_context3d && |
layer_tree_host()->needs_offscreen_context()) { |