| Index: cc/CCSchedulerStateMachine.h
|
| diff --git a/cc/CCSchedulerStateMachine.h b/cc/CCSchedulerStateMachine.h
|
| index 092231f59c345d1fa0486a4202907abc812db69e..a5852843db926129369774fbf66ee0a3df7802a4 100644
|
| --- a/cc/CCSchedulerStateMachine.h
|
| +++ b/cc/CCSchedulerStateMachine.h
|
| @@ -1,161 +1,6 @@
|
| -// Copyright 2011 The Chromium Authors. All rights reserved.
|
| +// Copyright 2012 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 CCSchedulerStateMachine_h
|
| -#define CCSchedulerStateMachine_h
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -
|
| -namespace cc {
|
| -
|
| -// The CCSchedulerStateMachine decides how to coordinate main thread activites
|
| -// like painting/running javascript with rendering and input activities on the
|
| -// impl thread.
|
| -//
|
| -// The state machine tracks internal state but is also influenced by external state.
|
| -// Internal state includes things like whether a frame has been requested, while
|
| -// external state includes things like the current time being near to the vblank time.
|
| -//
|
| -// The scheduler seperates "what to do next" from the updating of its internal state to
|
| -// make testing cleaner.
|
| -class CCSchedulerStateMachine {
|
| -public:
|
| - CCSchedulerStateMachine();
|
| -
|
| - enum CommitState {
|
| - COMMIT_STATE_IDLE,
|
| - COMMIT_STATE_FRAME_IN_PROGRESS,
|
| - COMMIT_STATE_READY_TO_COMMIT,
|
| - COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
|
| - };
|
| -
|
| - enum TextureState {
|
| - LAYER_TEXTURE_STATE_UNLOCKED,
|
| - LAYER_TEXTURE_STATE_ACQUIRED_BY_MAIN_THREAD,
|
| - LAYER_TEXTURE_STATE_ACQUIRED_BY_IMPL_THREAD,
|
| - };
|
| -
|
| - enum ContextState {
|
| - CONTEXT_ACTIVE,
|
| - CONTEXT_LOST,
|
| - CONTEXT_RECREATING,
|
| - };
|
| -
|
| - bool commitPending() const
|
| - {
|
| - return m_commitState != COMMIT_STATE_IDLE;
|
| - }
|
| -
|
| - bool redrawPending() const { return m_needsRedraw; }
|
| -
|
| - enum Action {
|
| - ACTION_NONE,
|
| - ACTION_BEGIN_FRAME,
|
| - ACTION_COMMIT,
|
| - ACTION_DRAW_IF_POSSIBLE,
|
| - ACTION_DRAW_FORCED,
|
| - ACTION_BEGIN_CONTEXT_RECREATION,
|
| - ACTION_ACQUIRE_LAYER_TEXTURES_FOR_MAIN_THREAD,
|
| - };
|
| - Action nextAction() const;
|
| - void updateState(Action);
|
| -
|
| - // Indicates whether the scheduler needs a vsync callback in order to make
|
| - // progress.
|
| - bool vsyncCallbackNeeded() const;
|
| -
|
| - // Indicates that the system has entered and left a vsync callback.
|
| - // The scheduler will not draw more than once in a given vsync callback.
|
| - void didEnterVSync();
|
| - void didLeaveVSync();
|
| -
|
| - // Indicates whether the LayerTreeHostImpl is visible.
|
| - void setVisible(bool);
|
| -
|
| - // Indicates that a redraw is required, either due to the impl tree changing
|
| - // or the screen being damaged and simply needing redisplay.
|
| - void setNeedsRedraw();
|
| -
|
| - // As setNeedsRedraw(), but ensures the draw will definitely happen even if
|
| - // we are not visible.
|
| - void setNeedsForcedRedraw();
|
| -
|
| - // Indicates whether ACTION_DRAW_IF_POSSIBLE drew to the screen or not.
|
| - void didDrawIfPossibleCompleted(bool success);
|
| -
|
| - // Indicates that a new commit flow needs to be performed, either to pull
|
| - // updates from the main thread to the impl, or to push deltas from the impl
|
| - // thread to main.
|
| - void setNeedsCommit();
|
| -
|
| - // As setNeedsCommit(), but ensures the beginFrame will definitely happen even if
|
| - // we are not visible.
|
| - void setNeedsForcedCommit();
|
| -
|
| - // Call this only in response to receiving an ACTION_BEGIN_FRAME
|
| - // from nextState. Indicates that all painting is complete.
|
| - void beginFrameComplete();
|
| -
|
| - // Call this only in response to receiving an ACTION_BEGIN_FRAME
|
| - // from nextState if the client rejects the beginFrame message.
|
| - void beginFrameAborted();
|
| -
|
| - // Request exclusive access to the textures that back single buffered
|
| - // layers on behalf of the main thread. Upon acqusition,
|
| - // ACTION_DRAW_IF_POSSIBLE will not draw until the main thread releases the
|
| - // textures to the impl thread by committing the layers.
|
| - void setMainThreadNeedsLayerTextures();
|
| -
|
| - // Indicates whether we can successfully begin a frame at this time.
|
| - void setCanBeginFrame(bool can) { m_canBeginFrame = can; }
|
| -
|
| - // Indicates whether drawing would, at this time, make sense.
|
| - // canDraw can be used to supress flashes or checkerboarding
|
| - // when such behavior would be undesirable.
|
| - void setCanDraw(bool can) { m_canDraw = can; }
|
| -
|
| - void didLoseContext();
|
| - void didRecreateContext();
|
| -
|
| - // Exposed for testing purposes.
|
| - void setMaximumNumberOfFailedDrawsBeforeDrawIsForced(int);
|
| -
|
| - std::string toString();
|
| -
|
| -protected:
|
| - bool shouldDrawForced() const;
|
| - bool drawSuspendedUntilCommit() const;
|
| - bool scheduledToDraw() const;
|
| - bool shouldDraw() const;
|
| - bool shouldAcquireLayerTexturesForMainThread() const;
|
| - bool hasDrawnThisFrame() const;
|
| -
|
| - CommitState m_commitState;
|
| -
|
| - int m_currentFrameNumber;
|
| - int m_lastFrameNumberWhereDrawWasCalled;
|
| - int m_consecutiveFailedDraws;
|
| - int m_maximumNumberOfFailedDrawsBeforeDrawIsForced;
|
| - bool m_needsRedraw;
|
| - bool m_needsForcedRedraw;
|
| - bool m_needsForcedRedrawAfterNextCommit;
|
| - bool m_needsCommit;
|
| - bool m_needsForcedCommit;
|
| - bool m_mainThreadNeedsLayerTextures;
|
| - bool m_insideVSync;
|
| - bool m_visible;
|
| - bool m_canBeginFrame;
|
| - bool m_canDraw;
|
| - bool m_drawIfPossibleFailed;
|
| - TextureState m_textureState;
|
| - ContextState m_contextState;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CCSchedulerStateMachine);
|
| -};
|
| -
|
| -}
|
| -
|
| -#endif // CCSchedulerStateMachine_h
|
| +// Temporary forwarding header
|
| +#include "cc/scheduler_state_machine.h"
|
|
|