cc: Do not request redraw on commit when impl-side painting

When impl-side painting, we draw when the pending tree
becomes active and should no longer draw on commit.

BUG=168724

Review URL: https://chromiumcodereview.appspot.com/11830040

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177274 0039d316-1c4b-4281-b951-d872f2087c98
parent ec7540f6
...@@ -206,6 +206,8 @@ ...@@ -206,6 +206,8 @@
'ring_buffer.h', 'ring_buffer.h',
'scheduler.cc', 'scheduler.cc',
'scheduler.h', 'scheduler.h',
'scheduler_settings.cc',
'scheduler_settings.h',
'scheduler_state_machine.cc', 'scheduler_state_machine.cc',
'scheduler_state_machine.h', 'scheduler_state_machine.h',
'scoped_ptr_algorithm.h', 'scoped_ptr_algorithm.h',
......
...@@ -537,6 +537,13 @@ class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest { ...@@ -537,6 +537,13 @@ class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest {
return can_activate_; return can_activate_;
} }
virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
// We force a second draw here of the first commit before activating
// the second commit.
if (impl->activeTree()->source_frame_number() == 0)
impl->setNeedsRedraw();
}
virtual void drawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { virtual void drawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE {
ImplSidePaintingScrollTest::drawLayersOnThread(impl); ImplSidePaintingScrollTest::drawLayersOnThread(impl);
...@@ -558,6 +565,9 @@ class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest { ...@@ -558,6 +565,9 @@ class ImplSidePaintingScrollTestSimple : public ImplSidePaintingScrollTest {
EXPECT_VECTOR_EQ(root->scrollDelta(), impl_thread_scroll1_); EXPECT_VECTOR_EQ(root->scrollDelta(), impl_thread_scroll1_);
EXPECT_VECTOR_EQ(root->sentScrollDelta(), gfx::Vector2d()); EXPECT_VECTOR_EQ(root->sentScrollDelta(), gfx::Vector2d());
postSetNeedsCommitToMainThread(); postSetNeedsCommitToMainThread();
// commitCompleteOnThread will trigger this function again
// and cause us to take the else clause.
} else { } else {
can_activate_ = true; can_activate_ = true;
ASSERT_TRUE(pending_root); ASSERT_TRUE(pending_root);
......
...@@ -10,9 +10,13 @@ ...@@ -10,9 +10,13 @@
namespace cc { namespace cc {
Scheduler::Scheduler(SchedulerClient* client, scoped_ptr<FrameRateController> frameRateController) Scheduler::Scheduler(SchedulerClient* client,
: m_client(client) scoped_ptr<FrameRateController> frameRateController,
const SchedulerSettings& schedulerSettings)
: m_settings(schedulerSettings)
, m_client(client)
, m_frameRateController(frameRateController.Pass()) , m_frameRateController(frameRateController.Pass())
, m_stateMachine(schedulerSettings)
, m_insideProcessScheduledActions(false) , m_insideProcessScheduledActions(false)
{ {
DCHECK(m_client); DCHECK(m_client);
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "cc/cc_export.h" #include "cc/cc_export.h"
#include "cc/frame_rate_controller.h" #include "cc/frame_rate_controller.h"
#include "cc/layer_tree_host.h" #include "cc/layer_tree_host.h"
#include "cc/scheduler_settings.h"
#include "cc/scheduler_state_machine.h" #include "cc/scheduler_state_machine.h"
namespace cc { namespace cc {
...@@ -49,9 +50,11 @@ protected: ...@@ -49,9 +50,11 @@ protected:
class CC_EXPORT Scheduler : FrameRateControllerClient { class CC_EXPORT Scheduler : FrameRateControllerClient {
public: public:
static scoped_ptr<Scheduler> create(SchedulerClient* client, scoped_ptr<FrameRateController> frameRateController) static scoped_ptr<Scheduler> create(SchedulerClient* client,
scoped_ptr<FrameRateController> frameRateController,
const SchedulerSettings& schedulerSettings)
{ {
return make_scoped_ptr(new Scheduler(client, frameRateController.Pass())); return make_scoped_ptr(new Scheduler(client, frameRateController.Pass(), schedulerSettings));
} }
virtual ~Scheduler(); virtual ~Scheduler();
...@@ -97,10 +100,12 @@ public: ...@@ -97,10 +100,12 @@ public:
virtual void vsyncTick(bool throttled) OVERRIDE; virtual void vsyncTick(bool throttled) OVERRIDE;
private: private:
Scheduler(SchedulerClient*, scoped_ptr<FrameRateController>); Scheduler(SchedulerClient*, scoped_ptr<FrameRateController>,
const SchedulerSettings& schedulerSettings);
void processScheduledActions(); void processScheduledActions();
const SchedulerSettings m_settings;
SchedulerClient* m_client; SchedulerClient* m_client;
scoped_ptr<FrameRateController> m_frameRateController; scoped_ptr<FrameRateController> m_frameRateController;
SchedulerStateMachine m_stateMachine; SchedulerStateMachine m_stateMachine;
......
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "cc/scheduler_settings.h"
namespace cc {
SchedulerSettings::SchedulerSettings()
: implSidePainting(false)
{
}
SchedulerSettings::~SchedulerSettings()
{
}
} // namespace cc
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_SCHEDULER_SETTINGS_H_
#define CC_SCHEDULER_SETTINGS_H_
#include "cc/cc_export.h"
namespace cc {
class CC_EXPORT SchedulerSettings
{
public:
SchedulerSettings();
~SchedulerSettings();
bool implSidePainting;
};
} // namespace cc
#endif // CC_SCHEDULER_SETTINGS_H_
...@@ -9,8 +9,9 @@ ...@@ -9,8 +9,9 @@
namespace cc { namespace cc {
SchedulerStateMachine::SchedulerStateMachine() SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings)
: m_commitState(COMMIT_STATE_IDLE) : m_settings(settings)
, m_commitState(COMMIT_STATE_IDLE)
, m_currentFrameNumber(0) , m_currentFrameNumber(0)
, m_lastFrameNumberWhereDrawWasCalled(-1) , m_lastFrameNumberWhereDrawWasCalled(-1)
, m_lastFrameNumberWhereTreeActivationAttempted(-1) , m_lastFrameNumberWhereTreeActivationAttempted(-1)
...@@ -209,7 +210,9 @@ void SchedulerStateMachine::updateState(Action action) ...@@ -209,7 +210,9 @@ void SchedulerStateMachine::updateState(Action action)
m_commitState = COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW; m_commitState = COMMIT_STATE_WAITING_FOR_FIRST_FORCED_DRAW;
else else
m_commitState = COMMIT_STATE_WAITING_FOR_FIRST_DRAW; m_commitState = COMMIT_STATE_WAITING_FOR_FIRST_DRAW;
m_needsRedraw = true; // When impl-side painting, we draw on activation instead of on commit.
if (!m_settings.implSidePainting)
m_needsRedraw = true;
if (m_drawIfPossibleFailed) if (m_drawIfPossibleFailed)
m_lastFrameNumberWhereDrawWasCalled = -1; m_lastFrameNumberWhereDrawWasCalled = -1;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/basictypes.h" #include "base/basictypes.h"
#include "cc/cc_export.h" #include "cc/cc_export.h"
#include "cc/scheduler_settings.h"
namespace cc { namespace cc {
...@@ -24,7 +25,8 @@ namespace cc { ...@@ -24,7 +25,8 @@ namespace cc {
// make testing cleaner. // make testing cleaner.
class CC_EXPORT SchedulerStateMachine { class CC_EXPORT SchedulerStateMachine {
public: public:
SchedulerStateMachine(); // settings must be valid for the lifetime of this class.
SchedulerStateMachine(const SchedulerSettings& settings);
enum CommitState { enum CommitState {
COMMIT_STATE_IDLE, COMMIT_STATE_IDLE,
...@@ -149,6 +151,8 @@ protected: ...@@ -149,6 +151,8 @@ protected:
bool hasDrawnThisFrame() const; bool hasDrawnThisFrame() const;
bool hasAttemptedTreeActivationThisFrame() const; bool hasAttemptedTreeActivationThisFrame() const;
const SchedulerSettings m_settings;
CommitState m_commitState; CommitState m_commitState;
int m_currentFrameNumber; int m_currentFrameNumber;
......
...@@ -4,9 +4,11 @@ ...@@ -4,9 +4,11 @@
#include "cc/scheduler_state_machine.h" #include "cc/scheduler_state_machine.h"
#include "cc/scheduler.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace cc { namespace cc {
namespace { namespace {
const SchedulerStateMachine::CommitState allCommitStates[] = { const SchedulerStateMachine::CommitState allCommitStates[] = {
...@@ -19,6 +21,8 @@ const SchedulerStateMachine::CommitState allCommitStates[] = { ...@@ -19,6 +21,8 @@ const SchedulerStateMachine::CommitState allCommitStates[] = {
// Exposes the protected state fields of the SchedulerStateMachine for testing // Exposes the protected state fields of the SchedulerStateMachine for testing
class StateMachine : public SchedulerStateMachine { class StateMachine : public SchedulerStateMachine {
public: public:
StateMachine(const SchedulerSettings& schedulerSettings)
: SchedulerStateMachine(schedulerSettings) { }
void setCommitState(CommitState cs) { m_commitState = cs; } void setCommitState(CommitState cs) { m_commitState = cs; }
CommitState commitState() const { return m_commitState; } CommitState commitState() const { return m_commitState; }
...@@ -37,9 +41,11 @@ public: ...@@ -37,9 +41,11 @@ public:
TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
{ {
SchedulerSettings defaultSchedulerSettings;
// If no commit needed, do nothing // If no commit needed, do nothing
{ {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setNeedsRedraw(false); state.setNeedsRedraw(false);
...@@ -56,7 +62,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) ...@@ -56,7 +62,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
// If commit requested but canBeginFrame is still false, do nothing. // If commit requested but canBeginFrame is still false, do nothing.
{ {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE);
state.setNeedsRedraw(false); state.setNeedsRedraw(false);
state.setVisible(true); state.setVisible(true);
...@@ -73,7 +79,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) ...@@ -73,7 +79,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
// If commit requested, begin a frame // If commit requested, begin a frame
{ {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_IDLE);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setNeedsRedraw(false); state.setNeedsRedraw(false);
...@@ -83,7 +89,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) ...@@ -83,7 +89,7 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
// Begin the frame, make sure needsCommit and commitState update correctly. // Begin the frame, make sure needsCommit and commitState update correctly.
{ {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.updateState(SchedulerStateMachine::ACTION_BEGIN_FRAME); state.updateState(SchedulerStateMachine::ACTION_BEGIN_FRAME);
...@@ -95,7 +101,8 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded) ...@@ -95,7 +101,8 @@ TEST(SchedulerStateMachineTest, TestNextActionBeginsFrameIfNeeded)
TEST(SchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw) TEST(SchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanDraw(true); state.setCanDraw(true);
state.setNeedsForcedRedraw(); state.setNeedsForcedRedraw();
EXPECT_FALSE(state.redrawPending()); EXPECT_FALSE(state.redrawPending());
...@@ -104,7 +111,8 @@ TEST(SchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw) ...@@ -104,7 +111,8 @@ TEST(SchedulerStateMachineTest, TestSetForcedRedrawDoesNotSetsNormalRedraw)
TEST(SchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAgain) TEST(SchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAgain)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -130,7 +138,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAgain ...@@ -130,7 +138,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawSetsNeedsCommitAndDoesNotDrawAgain
TEST(SchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw) TEST(SchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemoveNeedsRedraw)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -159,7 +168,8 @@ TEST(SchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemoveN ...@@ -159,7 +168,8 @@ TEST(SchedulerStateMachineTest, TestSetNeedsRedrawDuringFailedDrawDoesNotRemoveN
TEST(SchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame) TEST(SchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -197,7 +207,8 @@ TEST(SchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame) ...@@ -197,7 +207,8 @@ TEST(SchedulerStateMachineTest, TestCommitAfterFailedDrawAllowsDrawInSameFrame)
TEST(SchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotAllowDrawInSameFrame) TEST(SchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotAllowDrawInSameFrame)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -246,7 +257,8 @@ TEST(SchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotAll ...@@ -246,7 +257,8 @@ TEST(SchedulerStateMachineTest, TestCommitAfterFailedAndSuccessfulDrawDoesNotAll
TEST(SchedulerStateMachineTest, TestFailedDrawsWillEventuallyForceADrawAfterTheNextCommit) TEST(SchedulerStateMachineTest, TestFailedDrawsWillEventuallyForceADrawAfterTheNextCommit)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -286,7 +298,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawsWillEventuallyForceADrawAfterTheN ...@@ -286,7 +298,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawsWillEventuallyForceADrawAfterTheN
TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync) TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -317,7 +330,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync) ...@@ -317,7 +330,8 @@ TEST(SchedulerStateMachineTest, TestFailedDrawIsRetriedNextVSync)
TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame)
{ {
SchedulerStateMachine state; SchedulerSettings defaultSchedulerSettings;
SchedulerStateMachine state(defaultSchedulerSettings);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
state.setNeedsRedraw(); state.setNeedsRedraw();
...@@ -345,11 +359,13 @@ TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame) ...@@ -345,11 +359,13 @@ TEST(SchedulerStateMachineTest, TestDoestDrawTwiceInSameFrame)
TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync) TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync)
{ {
SchedulerSettings defaultSchedulerSettings;
// When not on vsync, or on vsync but not visible, don't draw. // When not on vsync, or on vsync but not visible, don't draw.
size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState); size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState);
for (size_t i = 0; i < numCommitStates; ++i) { for (size_t i = 0; i < numCommitStates; ++i) {
for (unsigned j = 0; j < 2; ++j) { for (unsigned j = 0; j < 2; ++j) {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(allCommitStates[i]); state.setCommitState(allCommitStates[i]);
bool visible = j; bool visible = j;
if (!visible) { if (!visible) {
...@@ -370,7 +386,7 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync) ...@@ -370,7 +386,7 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync)
// When on vsync, or not on vsync but needsForcedRedraw set, should always draw except if you're ready to commit, in which case commit. // When on vsync, or not on vsync but needsForcedRedraw set, should always draw except if you're ready to commit, in which case commit.
for (size_t i = 0; i < numCommitStates; ++i) { for (size_t i = 0; i < numCommitStates; ++i) {
for (unsigned j = 0; j < 2; ++j) { for (unsigned j = 0; j < 2; ++j) {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCanDraw(true); state.setCanDraw(true);
state.setCommitState(allCommitStates[i]); state.setCommitState(allCommitStates[i]);
bool forcedDraw = j; bool forcedDraw = j;
...@@ -401,11 +417,13 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync) ...@@ -401,11 +417,13 @@ TEST(SchedulerStateMachineTest, TestNextActionDrawsOnVSync)
TEST(SchedulerStateMachineTest, TestNoCommitStatesRedrawWhenInvisible) TEST(SchedulerStateMachineTest, TestNoCommitStatesRedrawWhenInvisible)
{ {
SchedulerSettings defaultSchedulerSettings;
size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState); size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState);
for (size_t i = 0; i < numCommitStates; ++i) { for (size_t i = 0; i < numCommitStates; ++i) {
// There shouldn't be any drawing regardless of vsync. // There shouldn't be any drawing regardless of vsync.
for (unsigned j = 0; j < 2; ++j) { for (unsigned j = 0; j < 2; ++j) {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(allCommitStates[i]); state.setCommitState(allCommitStates[i]);
state.setVisible(false); state.setVisible(false);
state.setNeedsRedraw(true); state.setNeedsRedraw(true);
...@@ -425,11 +443,13 @@ TEST(SchedulerStateMachineTest, TestNoCommitStatesRedrawWhenInvisible) ...@@ -425,11 +443,13 @@ TEST(SchedulerStateMachineTest, TestNoCommitStatesRedrawWhenInvisible)
TEST(SchedulerStateMachineTest, TestCanRedraw_StopsDraw) TEST(SchedulerStateMachineTest, TestCanRedraw_StopsDraw)
{ {
SchedulerSettings defaultSchedulerSettings;
size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState); size_t numCommitStates = sizeof(allCommitStates) / sizeof(SchedulerStateMachine::CommitState);
for (size_t i = 0; i < numCommitStates; ++i) { for (size_t i = 0; i < numCommitStates; ++i) {
// There shouldn't be any drawing regardless of vsync. // There shouldn't be any drawing regardless of vsync.
for (unsigned j = 0; j < 2; ++j) { for (unsigned j = 0; j < 2; ++j) {
StateMachine state; StateMachine state(defaultSchedulerSettings);
state.setCommitState(allCommitStates[i]); state.setCommitState(allCommitStates[i]);
state.setVisible(false); state.setVisible(false);
state.setNeedsRedraw(true); state.setNeedsRedraw(true);
...@@ -445,7 +465,8 @@ TEST(SchedulerStateMachineTest, TestCanRedraw_StopsDraw) ...@@ -445,7 +465,8 @@ TEST(SchedulerStateMachineTest, TestCanRedraw_StopsDraw)
TEST(SchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgress) TEST(SchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgress)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_WAITING_FOR_FIRST_DRAW);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setNeedsCommit(); state.setNeedsCommit();
...@@ -457,7 +478,8 @@ TEST(SchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgres ...@@ -457,7 +478,8 @@ TEST(SchedulerStateMachineTest, TestCanRedrawWithWaitingForFirstDrawMakesProgres
TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setNeedsCommit(); state.setNeedsCommit();
state.setVisible(true); state.setVisible(true);
...@@ -496,7 +518,8 @@ TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost) ...@@ -496,7 +518,8 @@ TEST(SchedulerStateMachineTest, TestSetNeedsCommitIsNotLost)
TEST(SchedulerStateMachineTest, TestFullCycle) TEST(SchedulerStateMachineTest, TestFullCycle)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -539,7 +562,8 @@ TEST(SchedulerStateMachineTest, TestFullCycle) ...@@ -539,7 +562,8 @@ TEST(SchedulerStateMachineTest, TestFullCycle)
TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -586,14 +610,16 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween) ...@@ -586,14 +610,16 @@ TEST(SchedulerStateMachineTest, TestFullCycleWithCommitRequestInbetween)
TEST(SchedulerStateMachineTest, TestRequestCommitInvisible) TEST(SchedulerStateMachineTest, TestRequestCommitInvisible)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setNeedsCommit(); state.setNeedsCommit();
EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.nextAction()); EXPECT_EQ(SchedulerStateMachine::ACTION_NONE, state.nextAction());
} }
TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes) TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -632,7 +658,8 @@ TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes) ...@@ -632,7 +658,8 @@ TEST(SchedulerStateMachineTest, TestGoesInvisibleBeforeBeginFrameCompletes)
TEST(SchedulerStateMachineTest, TestContextLostWhenCompletelyIdle) TEST(SchedulerStateMachineTest, TestContextLostWhenCompletelyIdle)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -655,7 +682,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhenCompletelyIdle) ...@@ -655,7 +682,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhenCompletelyIdle)
TEST(SchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhileRecreating) TEST(SchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhileRecreating)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -692,7 +720,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhileRe ...@@ -692,7 +720,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhenIdleAndCommitRequestedWhileRe
TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgress) TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgress)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -735,7 +764,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgress) ...@@ -735,7 +764,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgress)
TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnotherCommitRequested) TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnotherCommitRequested)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -780,7 +810,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnotherCo ...@@ -780,7 +810,8 @@ TEST(SchedulerStateMachineTest, TestContextLostWhileCommitInProgressAndAnotherCo
TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -809,7 +840,8 @@ TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost) ...@@ -809,7 +840,8 @@ TEST(SchedulerStateMachineTest, TestFinishAllRenderingWhileContextLost)
TEST(SchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit) TEST(SchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(false); state.setVisible(false);
state.setNeedsCommit(); state.setNeedsCommit();
...@@ -819,7 +851,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit) ...@@ -819,7 +851,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenInvisibleAndForceCommit)
TEST(SchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceCommit) TEST(SchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceCommit)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
state.setNeedsCommit(); state.setNeedsCommit();
...@@ -829,7 +862,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceComm ...@@ -829,7 +862,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenCanBeginFrameFalseAndForceComm
TEST(SchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress) TEST(SchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(false); state.setVisible(false);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS);
...@@ -846,7 +880,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress) ...@@ -846,7 +880,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenCommitInProgress)
TEST(SchedulerStateMachineTest, TestBeginFrameWhenForcedCommitInProgress) TEST(SchedulerStateMachineTest, TestBeginFrameWhenForcedCommitInProgress)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(false); state.setVisible(false);
state.setCommitState(SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS); state.setCommitState(SchedulerStateMachine::COMMIT_STATE_FRAME_IN_PROGRESS);
...@@ -865,7 +900,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenForcedCommitInProgress) ...@@ -865,7 +900,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenForcedCommitInProgress)
TEST(SchedulerStateMachineTest, TestBeginFrameWhenContextLost) TEST(SchedulerStateMachineTest, TestBeginFrameWhenContextLost)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -877,7 +913,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenContextLost) ...@@ -877,7 +913,8 @@ TEST(SchedulerStateMachineTest, TestBeginFrameWhenContextLost)
TEST(SchedulerStateMachineTest, TestImmediateBeginFrame) TEST(SchedulerStateMachineTest, TestImmediateBeginFrame)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -907,7 +944,8 @@ TEST(SchedulerStateMachineTest, TestImmediateBeginFrame) ...@@ -907,7 +944,8 @@ TEST(SchedulerStateMachineTest, TestImmediateBeginFrame)
TEST(SchedulerStateMachineTest, TestImmediateBeginFrameDuringCommit) TEST(SchedulerStateMachineTest, TestImmediateBeginFrameDuringCommit)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -941,7 +979,8 @@ TEST(SchedulerStateMachineTest, TestImmediateBeginFrameDuringCommit) ...@@ -941,7 +979,8 @@ TEST(SchedulerStateMachineTest, TestImmediateBeginFrameDuringCommit)
TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileInvisible) TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileInvisible)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(true); state.setCanDraw(true);
...@@ -983,7 +1022,8 @@ TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileInvisible) ...@@ -983,7 +1022,8 @@ TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileInvisible)
TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileCantDraw) TEST(SchedulerStateMachineTest, ImmediateBeginFrameWhileCantDraw)
{ {
StateMachine state; SchedulerSettings defaultSchedulerSettings;
StateMachine state(defaultSchedulerSettings);
state.setCanBeginFrame(true); state.setCanBeginFrame(true);
state.setVisible(true); state.setVisible(true);
state.setCanDraw(false); state.setCanDraw(false);
......
...@@ -69,7 +69,8 @@ TEST(SchedulerTest, RequestCommit) ...@@ -69,7 +69,8 @@ TEST(SchedulerTest, RequestCommit)
{ {
FakeSchedulerClient client; FakeSchedulerClient client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
scheduler->setCanDraw(true); scheduler->setCanDraw(true);
...@@ -103,7 +104,8 @@ TEST(SchedulerTest, RequestCommitAfterBeginFrame) ...@@ -103,7 +104,8 @@ TEST(SchedulerTest, RequestCommitAfterBeginFrame)
{ {
FakeSchedulerClient client; FakeSchedulerClient client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
scheduler->setCanDraw(true); scheduler->setCanDraw(true);
...@@ -137,7 +139,8 @@ TEST(SchedulerTest, TextureAcquisitionCollision) ...@@ -137,7 +139,8 @@ TEST(SchedulerTest, TextureAcquisitionCollision)
{ {
FakeSchedulerClient client; FakeSchedulerClient client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
scheduler->setCanDraw(true); scheduler->setCanDraw(true);
...@@ -176,7 +179,8 @@ TEST(SchedulerTest, VisibilitySwitchWithTextureAcquisition) ...@@ -176,7 +179,8 @@ TEST(SchedulerTest, VisibilitySwitchWithTextureAcquisition)
{ {
FakeSchedulerClient client; FakeSchedulerClient client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
scheduler->setCanDraw(true); scheduler->setCanDraw(true);
...@@ -239,7 +243,8 @@ TEST(SchedulerTest, RequestRedrawInsideDraw) ...@@ -239,7 +243,8 @@ TEST(SchedulerTest, RequestRedrawInsideDraw)
{ {
SchedulerClientThatSetNeedsDrawInsideDraw client; SchedulerClientThatSetNeedsDrawInsideDraw client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
client.setScheduler(scheduler.get()); client.setScheduler(scheduler.get());
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
...@@ -266,7 +271,8 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw) ...@@ -266,7 +271,8 @@ TEST(SchedulerTest, RequestRedrawInsideFailedDraw)
{ {
SchedulerClientThatSetNeedsDrawInsideDraw client; SchedulerClientThatSetNeedsDrawInsideDraw client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
client.setScheduler(scheduler.get()); client.setScheduler(scheduler.get());
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
...@@ -339,7 +345,8 @@ TEST(SchedulerTest, RequestCommitInsideDraw) ...@@ -339,7 +345,8 @@ TEST(SchedulerTest, RequestCommitInsideDraw)
{ {
SchedulerClientThatSetNeedsCommitInsideDraw client; SchedulerClientThatSetNeedsCommitInsideDraw client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
client.setScheduler(scheduler.get()); client.setScheduler(scheduler.get());
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
...@@ -367,7 +374,8 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw) ...@@ -367,7 +374,8 @@ TEST(SchedulerTest, RequestCommitInsideFailedDraw)
{ {
SchedulerClientThatSetNeedsDrawInsideDraw client; SchedulerClientThatSetNeedsDrawInsideDraw client;
scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource()); scoped_refptr<FakeTimeSource> timeSource(new FakeTimeSource());
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource))); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, make_scoped_ptr(new FrameRateController(timeSource)), defaultSchedulerSettings);
client.setScheduler(scheduler.get()); client.setScheduler(scheduler.get());
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
...@@ -410,7 +418,8 @@ TEST(SchedulerTest, NoBeginFrameWhenDrawFails) ...@@ -410,7 +418,8 @@ TEST(SchedulerTest, NoBeginFrameWhenDrawFails)
SchedulerClientThatSetNeedsCommitInsideDraw client; SchedulerClientThatSetNeedsCommitInsideDraw client;
scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(timeSource)); scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(timeSource));
FakeFrameRateController* controllerPtr = controller.get(); FakeFrameRateController* controllerPtr = controller.get();
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.PassAs<FrameRateController>()); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.PassAs<FrameRateController>(), defaultSchedulerSettings);
client.setScheduler(scheduler.get()); client.setScheduler(scheduler.get());
scheduler->setCanBeginFrame(true); scheduler->setCanBeginFrame(true);
scheduler->setVisible(true); scheduler->setVisible(true);
...@@ -447,7 +456,8 @@ TEST(SchedulerTest, NoBeginFrameWhenSwapFailsDuringForcedCommit) ...@@ -447,7 +456,8 @@ TEST(SchedulerTest, NoBeginFrameWhenSwapFailsDuringForcedCommit)
FakeSchedulerClient client; FakeSchedulerClient client;
scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(timeSource)); scoped_ptr<FakeFrameRateController> controller(new FakeFrameRateController(timeSource));
FakeFrameRateController* controllerPtr = controller.get(); FakeFrameRateController* controllerPtr = controller.get();
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.PassAs<FrameRateController>()); SchedulerSettings defaultSchedulerSettings;
scoped_ptr<Scheduler> scheduler = Scheduler::create(&client, controller.PassAs<FrameRateController>(), defaultSchedulerSettings);
EXPECT_EQ(0, controllerPtr->numFramesPending()); EXPECT_EQ(0, controllerPtr->numFramesPending());
......
...@@ -936,7 +936,10 @@ void ThreadProxy::initializeImplOnImplThread(CompletionEvent* completion, InputH ...@@ -936,7 +936,10 @@ void ThreadProxy::initializeImplOnImplThread(CompletionEvent* completion, InputH
frameRateController.reset(new FrameRateController(DelayBasedTimeSource::create(displayRefreshInterval, Proxy::implThread()))); frameRateController.reset(new FrameRateController(DelayBasedTimeSource::create(displayRefreshInterval, Proxy::implThread())));
else else
frameRateController.reset(new FrameRateController(Proxy::implThread())); frameRateController.reset(new FrameRateController(Proxy::implThread()));
m_schedulerOnImplThread = Scheduler::create(this, frameRateController.Pass()); SchedulerSettings schedulerSettings;
schedulerSettings.implSidePainting = m_layerTreeHost->settings().implSidePainting;
m_schedulerOnImplThread = Scheduler::create(this, frameRateController.Pass(),
schedulerSettings);
m_schedulerOnImplThread->setVisible(m_layerTreeHostImpl->visible()); m_schedulerOnImplThread->setVisible(m_layerTreeHostImpl->visible());
m_inputHandlerOnImplThread = scoped_ptr<InputHandler>(handler); m_inputHandlerOnImplThread = scoped_ptr<InputHandler>(handler);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment