Index: cc/thread_proxy.cc |
diff --git a/cc/thread_proxy.cc b/cc/thread_proxy.cc |
index ea763c5615158d93b351b7fe2839e470cd2c809d..ccb85a72d8704b1f414e88bbb5e92b4c39a15c96 100644 |
--- a/cc/thread_proxy.cc |
+++ b/cc/thread_proxy.cc |
@@ -4,6 +4,7 @@ |
#include "cc/thread_proxy.h" |
+#include "base/auto_reset.h" |
#include "base/bind.h" |
#include "base/debug/trace_event.h" |
#include "cc/delay_based_time_source.h" |
@@ -53,6 +54,7 @@ ThreadProxy::ThreadProxy(LayerTreeHost* layerTreeHost, scoped_ptr<Thread> implTh |
, m_textureAcquisitionCompletionEventOnImplThread(0) |
, m_nextFrameIsNewlyCommittedFrameOnImplThread(false) |
, m_renderVSyncEnabled(layerTreeHost->settings().renderVSyncEnabled) |
+ , m_insideDraw(false) |
, m_totalCommitCount(0) |
, m_deferCommits(false) |
{ |
@@ -405,6 +407,11 @@ void ThreadProxy::sendManagedMemoryStats() |
m_layerTreeHost->contentsTextureManager()->memoryUseBytes()); |
} |
+bool ThreadProxy::isInsideDraw() |
+{ |
+ return m_insideDraw; |
+} |
+ |
void ThreadProxy::setNeedsRedraw() |
{ |
DCHECK(isMainThread()); |
@@ -441,6 +448,20 @@ void ThreadProxy::setNeedsRedrawOnImplThread() |
m_schedulerOnImplThread->setNeedsRedraw(); |
} |
+void ThreadProxy::didSwapUseIncompleteTextureOnImplThread() |
+{ |
+ DCHECK(isImplThread()); |
+ TRACE_EVENT0("cc", "ThreadProxy::didSwapUseIncompleteTextureOnImplThread"); |
+ m_schedulerOnImplThread->didSwapUseIncompleteTexture(); |
+} |
+ |
+void ThreadProxy::didUploadVisibleHighResolutionTileOnImplTread() |
+{ |
+ DCHECK(isImplThread()); |
+ TRACE_EVENT0("cc", "ThreadProxy::didUploadVisibleHighResolutionTileOnImplTread"); |
+ m_schedulerOnImplThread->setNeedsRedraw(); |
+} |
+ |
void ThreadProxy::mainThreadHasStoppedFlinging() |
{ |
if (m_inputHandlerOnImplThread) |
@@ -739,8 +760,17 @@ void ThreadProxy::scheduledActionCommit() |
m_schedulerOnImplThread->setVisible(m_layerTreeHostImpl->visible()); |
} |
+void ThreadProxy::scheduledActionCheckForCompletedTextures() |
+{ |
+ DCHECK(isImplThread()); |
+ TRACE_EVENT0("cc", "ThreadProxy::scheduledActionCheckForCompletedTextures"); |
+ m_layerTreeHostImpl->checkForCompletedTextures(); |
+} |
+ |
void ThreadProxy::scheduledActionActivatePendingTreeIfNeeded() |
{ |
+ DCHECK(isImplThread()); |
+ TRACE_EVENT0("cc", "ThreadProxy::scheduledActionActivatePendingTreeIfNeeded"); |
m_layerTreeHostImpl->activatePendingTreeIfNeeded(); |
} |
@@ -753,6 +783,9 @@ void ThreadProxy::scheduledActionBeginContextRecreation() |
ScheduledActionDrawAndSwapResult ThreadProxy::scheduledActionDrawAndSwapInternal(bool forcedDraw) |
{ |
TRACE_EVENT0("cc", "ThreadProxy::scheduledActionDrawAndSwap"); |
+ |
+ base::AutoReset<bool> markInside(&m_insideDraw, true); |
+ |
ScheduledActionDrawAndSwapResult result; |
result.didDraw = false; |
result.didSwap = false; |