Index: cc/CCScheduler.cpp |
diff --git a/cc/CCScheduler.cpp b/cc/CCScheduler.cpp |
index 457cf05607a8f495cdea451a60664d3239e5795d..367c1f1f931b2437f708babb4d5c2423d034e566 100644 |
--- a/cc/CCScheduler.cpp |
+++ b/cc/CCScheduler.cpp |
@@ -13,6 +13,7 @@ namespace WebCore { |
CCScheduler::CCScheduler(CCSchedulerClient* client, PassOwnPtr<CCFrameRateController> frameRateController) |
: m_client(client) |
, m_frameRateController(frameRateController) |
+ , m_hasMoreResourceUpdates(false) |
, m_updateMoreResourcesPending(false) |
{ |
ASSERT(m_client); |
@@ -77,9 +78,10 @@ void CCScheduler::setMainThreadNeedsLayerTextures() |
processScheduledActions(); |
} |
-void CCScheduler::beginFrameComplete() |
+void CCScheduler::beginFrameComplete(bool hasResourceUpdates) |
{ |
TRACE_EVENT0("cc", "CCScheduler::beginFrameComplete"); |
+ m_hasMoreResourceUpdates = hasResourceUpdates; |
m_stateMachine.beginFrameComplete(); |
processScheduledActions(); |
} |
@@ -131,7 +133,8 @@ void CCScheduler::vsyncTick() |
{ |
if (m_updateMoreResourcesPending) { |
m_updateMoreResourcesPending = false; |
- m_stateMachine.beginUpdateMoreResourcesComplete(m_client->hasMoreResourceUpdates()); |
+ ASSERT(m_hasMoreResourceUpdates); |
+ m_stateMachine.beginUpdateMoreResourcesComplete(true); |
} |
TRACE_EVENT0("cc", "CCScheduler::vsyncTick"); |
@@ -140,6 +143,17 @@ void CCScheduler::vsyncTick() |
m_stateMachine.didLeaveVSync(); |
} |
+void CCScheduler::updateResourcesComplete() |
+{ |
+ TRACE_EVENT0("cc", "CCScheduler::updateResourcesComplete"); |
+ if (m_updateMoreResourcesPending) { |
+ m_updateMoreResourcesPending = false; |
+ m_stateMachine.beginUpdateMoreResourcesComplete(false); |
+ } |
+ m_hasMoreResourceUpdates = false; |
+ processScheduledActions(); |
+} |
+ |
void CCScheduler::processScheduledActions() |
{ |
// Early out so we don't spam TRACE_EVENTS with useless processScheduledActions. |
@@ -163,7 +177,7 @@ void CCScheduler::processScheduledActions() |
m_client->scheduledActionBeginFrame(); |
break; |
case CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES: |
- if (m_client->hasMoreResourceUpdates()) { |
+ if (m_hasMoreResourceUpdates) { |
m_client->scheduledActionUpdateMoreResources(m_frameRateController->nextTickTimeIfActivated()); |
m_updateMoreResourcesPending = true; |
} else |