Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2829)

Unified Diff: cc/thread_proxy.cc

Issue 10690168: Aura: Resize locks with --ui-enable-threaded-compositing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Defer commits and rebase. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698