| Index: cc/CCSchedulerStateMachineTest.cpp
|
| diff --git a/cc/CCSchedulerStateMachineTest.cpp b/cc/CCSchedulerStateMachineTest.cpp
|
| index cc2165a170a0ed35c109200e3c4a644638431a1b..1342b5b4b23427523eb1bae89439acd39c5414a4 100644
|
| --- a/cc/CCSchedulerStateMachineTest.cpp
|
| +++ b/cc/CCSchedulerStateMachineTest.cpp
|
| @@ -116,6 +116,7 @@ TEST(CCSchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
|
| TEST(CCSchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw)
|
| {
|
| CCSchedulerStateMachine state;
|
| + state.setCanDraw(true);
|
| state.setNeedsForcedRedraw();
|
| EXPECT_FALSE(state.redrawPending());
|
| EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| @@ -126,6 +127,7 @@ TEST(CCSchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAga
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setNeedsRedraw();
|
| EXPECT_TRUE(state.redrawPending());
|
| EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| @@ -151,6 +153,7 @@ TEST(CCSchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemov
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setNeedsRedraw();
|
| EXPECT_TRUE(state.redrawPending());
|
| EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| @@ -179,6 +182,7 @@ TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start a commit.
|
| state.setNeedsCommit();
|
| @@ -219,6 +223,7 @@ TEST(CCSchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotA
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start a commit.
|
| state.setNeedsCommit();
|
| @@ -270,6 +275,7 @@ TEST(CCSchedulerStateMachineTest, TestFailedDrawsWillEventuallyForceADrawAfterTh
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setMaximumNumberOfFailedDrawsBeforeDrawIsForced(1);
|
|
|
| // Start a commit.
|
| @@ -312,6 +318,7 @@ TEST(CCSchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync)
|
| CCSchedulerStateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start a draw.
|
| state.setNeedsRedraw();
|
| @@ -341,6 +348,7 @@ TEST(CCSchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame)
|
| {
|
| CCSchedulerStateMachine state;
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setNeedsRedraw();
|
| EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| state.didEnterVSync();
|
| @@ -393,6 +401,7 @@ TEST(CCSchedulerStateMachineTest, TestNextActionDrawsOnVSync)
|
| for (size_t i = 0; i < numCommitStates; ++i) {
|
| for (unsigned j = 0; j < 2; ++j) {
|
| StateMachine state;
|
| + state.setCanDraw(true);
|
| state.setCommitState(allCommitStates[i]);
|
| bool forcedDraw = j;
|
| if (!forcedDraw) {
|
| @@ -505,6 +514,28 @@ TEST(CCSchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgr
|
| EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
|
| }
|
|
|
| +TEST(CCSchedulerStateMachineTest, TestVsyncCallbackNeededOnCanDrawAndResourceUpdates)
|
| +{
|
| + StateMachine state;
|
| + state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW);
|
| + state.setCanBeginFrame(true);
|
| + state.setNeedsCommit(true);
|
| + state.setNeedsRedraw(true);
|
| + state.setUpdateMoreResourcesPending(false);
|
| + state.setVisible(true);
|
| + state.setCanDraw(false);
|
| + EXPECT_FALSE(state.vsyncCallbackNeeded());
|
| +
|
| + state.setUpdateMoreResourcesPending(true);
|
| + EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| +
|
| + state.setUpdateMoreResourcesPending(false);
|
| + EXPECT_FALSE(state.vsyncCallbackNeeded());
|
| +
|
| + state.setCanDraw(true);
|
| + EXPECT_TRUE(state.vsyncCallbackNeeded());
|
| +}
|
| +
|
| TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_OneRoundOfUpdates)
|
| {
|
| StateMachine state;
|
| @@ -512,6 +543,7 @@ TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_OneRoundOfUpdates)
|
| state.setNeedsRedraw(false);
|
| state.setUpdateMoreResourcesPending(false);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Verify we begin update, both for vsync and not vsync.
|
| EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES, state.nextAction());
|
| @@ -540,6 +572,7 @@ TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_TwoRoundsOfUpdates)
|
| state.setNeedsRedraw(false);
|
| state.setUpdateMoreResourcesPending(false);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Verify the update begins, both for vsync and not vsync.
|
| state.didEnterVSync();
|
| @@ -579,6 +612,7 @@ TEST(CCSchedulerStateMachineTest, TestUpdates_NoRedraw_TwoRoundsOfUpdates)
|
| TEST(CCSchedulerStateMachineTest, TestVSyncNeededWhenUpdatesPendingButInvisible)
|
| {
|
| StateMachine state;
|
| + state.setCanDraw(true);
|
| state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_UPDATING_RESOURCES);
|
| state.setNeedsRedraw(false);
|
| state.setVisible(false);
|
| @@ -596,6 +630,7 @@ TEST(CCSchedulerStateMachineTest, TestUpdates_WithRedraw_OneRoundOfUpdates)
|
| state.setNeedsRedraw(true);
|
| state.setUpdateMoreResourcesPending(false);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_UPDATE_MORE_RESOURCES, state.nextAction());
|
|
|
| // Begin an update.
|
| @@ -643,6 +678,7 @@ TEST(CCSchedulerStateMachineTest, TestSetNeedsCommitIsNotLost)
|
| state.setCanBeginFrame(true);
|
| state.setNeedsCommit(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Begin the frame.
|
| EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
|
| @@ -685,6 +721,7 @@ TEST(CCSchedulerStateMachineTest, TestFullCycle)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start clean and set commit.
|
| state.setNeedsCommit(true);
|
| @@ -733,6 +770,7 @@ TEST(CCSchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start clean and set commit.
|
| state.setNeedsCommit(true);
|
| @@ -792,6 +830,7 @@ TEST(CCSchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Start clean and set commit.
|
| state.setNeedsCommit(true);
|
| @@ -830,6 +869,7 @@ TEST(CCSchedulerStateMachineTest, TestContextLostWhenCompletelyIdle)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| state.didLoseContext();
|
|
|
| @@ -852,6 +892,7 @@ TEST(CCSchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhile
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| state.didLoseContext();
|
|
|
| @@ -888,6 +929,7 @@ TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgress)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Get a commit in flight.
|
| state.setNeedsCommit(true);
|
| @@ -929,6 +971,7 @@ TEST(CCSchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnother
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Get a commit in flight.
|
| state.setNeedsCommit(true);
|
| @@ -979,6 +1022,7 @@ TEST(CCSchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost)
|
| {
|
| StateMachine state;
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
|
|
| // Cause a lost context lost.
|
| state.didLoseContext();
|
| @@ -1017,6 +1061,7 @@ TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceCo
|
| {
|
| StateMachine state;
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setNeedsCommit(true);
|
| state.setNeedsForcedCommit(true);
|
| EXPECT_EQ(CCSchedulerStateMachine::ACTION_BEGIN_FRAME, state.nextAction());
|
| @@ -1049,6 +1094,7 @@ TEST(CCSchedulerStateMachineTest, TestBeginFrameWhenContextLost)
|
| StateMachine state;
|
| state.setCanBeginFrame(true);
|
| state.setVisible(true);
|
| + state.setCanDraw(true);
|
| state.setNeedsCommit(true);
|
| state.setNeedsForcedCommit(true);
|
| state.didLoseContext();
|
|
|