| Index: cc/CCScheduler.cpp
|
| diff --git a/cc/CCScheduler.cpp b/cc/CCScheduler.cpp
|
| index 367c1f1f931b2437f708babb4d5c2423d034e566..ce7f62d8817cef393b0e6907725d2a773673906f 100644
|
| --- a/cc/CCScheduler.cpp
|
| +++ b/cc/CCScheduler.cpp
|
| @@ -13,8 +13,7 @@ namespace WebCore {
|
| CCScheduler::CCScheduler(CCSchedulerClient* client, PassOwnPtr<CCFrameRateController> frameRateController)
|
| : m_client(client)
|
| , m_frameRateController(frameRateController)
|
| - , m_hasMoreResourceUpdates(false)
|
| - , m_updateMoreResourcesPending(false)
|
| + , m_updateResourcesCompletePending(false)
|
| {
|
| ASSERT(m_client);
|
| m_frameRateController->setClient(this);
|
| @@ -81,8 +80,7 @@ void CCScheduler::setMainThreadNeedsLayerTextures()
|
| void CCScheduler::beginFrameComplete(bool hasResourceUpdates)
|
| {
|
| TRACE_EVENT0("cc", "CCScheduler::beginFrameComplete");
|
| - m_hasMoreResourceUpdates = hasResourceUpdates;
|
| - m_stateMachine.beginFrameComplete();
|
| + m_stateMachine.beginFrameComplete(hasResourceUpdates);
|
| processScheduledActions();
|
| }
|
|
|
| @@ -131,26 +129,21 @@ void CCScheduler::setTimebaseAndInterval(double timebase, double intervalSeconds
|
|
|
| void CCScheduler::vsyncTick()
|
| {
|
| - if (m_updateMoreResourcesPending) {
|
| - m_updateMoreResourcesPending = false;
|
| - ASSERT(m_hasMoreResourceUpdates);
|
| - m_stateMachine.beginUpdateMoreResourcesComplete(true);
|
| - }
|
| TRACE_EVENT0("cc", "CCScheduler::vsyncTick");
|
| -
|
| m_stateMachine.didEnterVSync();
|
| processScheduledActions();
|
| m_stateMachine.didLeaveVSync();
|
| +
|
| + // Allow resource updates until next vsync tick.
|
| + if (m_updateResourcesCompletePending)
|
| + m_client->scheduledActionUpdateMoreResources(m_frameRateController->nextTickTimeIfActivated());
|
| }
|
|
|
| void CCScheduler::updateResourcesComplete()
|
| {
|
| TRACE_EVENT0("cc", "CCScheduler::updateResourcesComplete");
|
| - if (m_updateMoreResourcesPending) {
|
| - m_updateMoreResourcesPending = false;
|
| - m_stateMachine.beginUpdateMoreResourcesComplete(false);
|
| - }
|
| - m_hasMoreResourceUpdates = false;
|
| + m_stateMachine.updateResourcesComplete();
|
| + m_updateResourcesCompletePending = false;
|
| processScheduledActions();
|
| }
|
|
|
| @@ -176,12 +169,10 @@ void CCScheduler::processScheduledActions()
|
| case CCSchedulerStateMachine::ACTION_BEGIN_FRAME:
|
| m_client->scheduledActionBeginFrame();
|
| break;
|
| - case CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES:
|
| - if (m_hasMoreResourceUpdates) {
|
| - m_client->scheduledActionUpdateMoreResources(m_frameRateController->nextTickTimeIfActivated());
|
| - m_updateMoreResourcesPending = true;
|
| - } else
|
| - m_stateMachine.beginUpdateMoreResourcesComplete(false);
|
| + case CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_RESOURCES:
|
| + ASSERT(!m_updateResourcesCompletePending);
|
| + m_client->scheduledActionUpdateMoreResources(m_frameRateController->nextTickTimeIfActivated());
|
| + m_updateResourcesCompletePending = true;
|
| break;
|
| case CCSchedulerStateMachine::ACTION_COMMIT:
|
| m_client->scheduledActionCommit();
|
|
|