Chromium Code Reviews| Index: cc/thread_proxy.cc |
| diff --git a/cc/thread_proxy.cc b/cc/thread_proxy.cc |
| index ee08f77cb3be14c3c6a6506e27944f14a1ccc0c1..d8aead773136d75475221ee6d3a8125bc8a4d78d 100644 |
| --- a/cc/thread_proxy.cc |
| +++ b/cc/thread_proxy.cc |
| @@ -289,6 +289,9 @@ void ThreadProxy::setNeedsCommit() |
| TRACE_EVENT0("cc", "ThreadProxy::setNeedsCommit"); |
| m_commitRequested = true; |
| + // FIXME(backer): Necessary? |
|
jamesr
2012/10/23 17:50:44
No, this is wrong.
jonathan.backer
2012/10/23 19:26:42
Done.
|
| + if (m_deferredBeginFrameRequest.get()) |
| + return; |
| if (m_commitRequestSentToImplThread) |
| return; |
| m_commitRequestSentToImplThread = true; |
| @@ -373,6 +376,16 @@ void ThreadProxy::setNeedsRedraw() |
| Proxy::implThread()->postTask(createThreadTask(this, &ThreadProxy::setNeedsRedrawOnImplThread)); |
| } |
| +void ThreadProxy::setDeferCommits(bool deferCommits) |
| +{ |
| + DCHECK(isMainThread()); |
| + if (!deferCommits && m_deferredBeginFrameRequest.get()) { |
| + DCHECK(!m_pendingBeginFrameRequest.get()); |
| + m_deferredBeginFrameRequest.swap(m_pendingBeginFrameRequest); |
| + m_mainThreadProxy->postTask(createThreadTask(this, &ThreadProxy::beginFrame)); |
| + } |
| +} |
| + |
| bool ThreadProxy::commitRequested() const |
| { |
| DCHECK(isMainThread()); |
| @@ -487,6 +500,13 @@ void ThreadProxy::beginFrame() |
| if (!m_layerTreeHost) |
| return; |
| + if (m_layerTreeHost->deferCommits()) { |
| + TRACE_EVENT0("cc", "EarlyOut_DeferCommits"); |
| + DCHECK(!m_deferredBeginFrameRequest.get()); |
|
jamesr
2012/10/23 17:50:44
!m_deferredBeginFrameRequest works fine. no need f
jonathan.backer
2012/10/23 19:26:42
Done.
|
| + m_deferredBeginFrameRequest.swap(m_pendingBeginFrameRequest); |
|
jamesr
2012/10/23 17:50:44
This swap is unnecessary
jonathan.backer
2012/10/23 19:26:42
Done.
|
| + return; |
| + } |
| + |
| if (!m_pendingBeginFrameRequest) { |
| TRACE_EVENT0("cc", "EarlyOut_StaleBeginFrameMessage"); |
| return; |