+2012-03-13 Nat Duca <nduca@chromium.org>
+
+ [chromium] vsync ticks are needed in invisible tabs when we are still updating resources
+ https://bugs.webkit.org/show_bug.cgi?id=80910
+
+ Reviewed by James Robinson.
+
+ * platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:
+ (WebCore::CCSchedulerStateMachine::vsyncCallbackNeeded):
+
2012-03-13 Dave Tharp <dtharp@codeaurora.org>
Alternate stylesheets (without title attribute) are loaded on refresh
bool CCSchedulerStateMachine::vsyncCallbackNeeded() const
{
if (!m_visible || m_contextState != CONTEXT_ACTIVE) {
- if (m_needsForcedRedraw)
+ if (m_needsForcedRedraw || m_commitState == COMMIT_STATE_UPDATING_RESOURCES)
return true;
return false;
}
- return m_needsRedraw || m_needsForcedRedraw || m_updateMoreResourcesPending;
+ return m_needsRedraw || m_needsForcedRedraw || m_commitState == COMMIT_STATE_UPDATING_RESOURCES;
}
void CCSchedulerStateMachine::didEnterVSync()
+2012-03-13 Nat Duca <nduca@chromium.org>
+
+ [chromium] vsync ticks are needed in invisible tabs when we are still updating resources
+ https://bugs.webkit.org/show_bug.cgi?id=80910
+
+ Reviewed by James Robinson.
+
+ * tests/CCSchedulerStateMachineTest.cpp:
+ (WebCore::TEST):
+ (WebCore):
+
2012-03-13 Dana Jansens <danakj@chromium.org>
Region::contains(IntPoint) is slow
} else
state.setVisible(true);
- // Case 1: needsCommit=false updateMoreResourcesPending=false.
+ // Case 1: needsCommit=false
state.setNeedsCommit(false);
- state.setUpdateMoreResourcesPending(false);
- EXPECT_FALSE(state.vsyncCallbackNeeded());
- EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW, state.nextAction());
-
- // Case 2: needsCommit=false updateMoreResourcesPending=true.
- state.setNeedsCommit(false);
- state.setUpdateMoreResourcesPending(true);
- if (visible)
- EXPECT_TRUE(state.vsyncCallbackNeeded());
EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW, state.nextAction());
- // Case 3: needsCommit=true updateMoreResourcesPending=false.
- state.setNeedsCommit(true);
- state.setUpdateMoreResourcesPending(false);
- EXPECT_FALSE(state.vsyncCallbackNeeded());
- EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW, state.nextAction());
-
- // Case 4: needsCommit=true updateMoreResourcesPending=true.
+ // Case 2: needsCommit=true
state.setNeedsCommit(true);
- state.setUpdateMoreResourcesPending(true);
- if (visible)
- EXPECT_TRUE(state.vsyncCallbackNeeded());
EXPECT_NE(CCSchedulerStateMachine::ACTION_DRAW, state.nextAction());
}
}
EXPECT_EQ(CCSchedulerStateMachine::ACTION_COMMIT, state.nextAction());
}
+
+TEST(CCSchedulerStateMachineTest, TestVSyncNeededWhenUpdatesPendingButInvisible)
+{
+ StateMachine state;
+ state.setCommitState(CCSchedulerStateMachine::COMMIT_STATE_UPDATING_RESOURCES);
+ state.setNeedsRedraw(false);
+ state.setVisible(false);
+ state.setUpdateMoreResourcesPending(true);
+ EXPECT_TRUE(state.vsyncCallbackNeeded());
+
+ state.setUpdateMoreResourcesPending(false);
+ EXPECT_TRUE(state.vsyncCallbackNeeded());
+}
+
TEST(CCSchedulerStateMachineTest, TestUpdates_WithRedraw_OneRoundOfUpdates)
{
StateMachine state;