Index: cc/scheduler/scheduler_state_machine.h |
diff --git a/cc/scheduler/scheduler_state_machine.h b/cc/scheduler/scheduler_state_machine.h |
index 7ee039aee056e7fac0346232fee8843d897ed21e..3cc49cbece3fe60bc3afbe60da4bca309c916021 100644 |
--- a/cc/scheduler/scheduler_state_machine.h |
+++ b/cc/scheduler/scheduler_state_machine.h |
@@ -63,7 +63,8 @@ class CC_EXPORT SchedulerStateMachine { |
static const char* BeginImplFrameStateToString(BeginImplFrameState state); |
enum BeginImplFrameDeadlineMode { |
- BEGIN_IMPL_FRAME_DEADLINE_MODE_IMMEDIATE, |
+ BEGIN_IMPL_FRAME_DEADLINE_MODE_IMMEDIATE_SYNCHRONOUS, |
+ BEGIN_IMPL_FRAME_DEADLINE_MODE_IMMEDIATE_ASYNCHRONOUS, |
BEGIN_IMPL_FRAME_DEADLINE_MODE_REGULAR, |
BEGIN_IMPL_FRAME_DEADLINE_MODE_LATE, |
}; |
@@ -110,6 +111,7 @@ class CC_EXPORT SchedulerStateMachine { |
ACTION_DRAW_AND_SWAP_ABORT, |
ACTION_BEGIN_OUTPUT_SURFACE_CREATION, |
ACTION_PREPARE_TILES, |
+ ACTION_INVALIDATE_OUTPUT_SURFACE, |
}; |
static const char* ActionToString(Action action); |
@@ -123,12 +125,6 @@ class CC_EXPORT SchedulerStateMachine { |
// to make progress. |
bool BeginFrameNeeded() const; |
- // Indicates that we need to independently poll for new state and actions |
- // because we can't expect a BeginImplFrame. This is mostly used to avoid |
- // drawing repeat frames with the synchronous compositor without dropping |
- // necessary actions on the floor. |
- bool ShouldPollForAnticipatedDrawTriggers() const; |
- |
// Indicates that the system has entered and left a BeginImplFrame callback. |
// The scheduler will not draw more than once in a given BeginImplFrame |
// callback nor send more than one BeginMainFrame message. |
@@ -145,15 +141,6 @@ class CC_EXPORT SchedulerStateMachine { |
// impl thread to draw, it is in a high latency mode. |
bool MainThreadIsInHighLatencyMode() const; |
- // PollForAnticipatedDrawTriggers is used by the synchronous compositor to |
- // avoid requesting BeginImplFrames when we won't actually draw but still |
- // need to advance our state at vsync intervals. |
- void DidEnterPollForAnticipatedDrawTriggers(); |
- void DidLeavePollForAnticipatedDrawTriggers(); |
- bool inside_poll_for_anticipated_draw_triggers() const { |
- return inside_poll_for_anticipated_draw_triggers_; |
- } |
- |
// Indicates whether the LayerTreeHostImpl is visible. |
void SetVisible(bool visible); |
@@ -162,6 +149,8 @@ class CC_EXPORT SchedulerStateMachine { |
void SetNeedsRedraw(); |
bool needs_redraw() const { return needs_redraw_; } |
+ void OutputSurfaceDidRequestDraw(); |
+ |
void SetNeedsAnimate(); |
bool needs_animate() const { return needs_animate_; } |
@@ -238,8 +227,6 @@ class CC_EXPORT SchedulerStateMachine { |
// True if we need to abort draws to make forward progress. |
bool PendingDrawsShouldBeAborted() const; |
- bool SupportsProactiveBeginFrame() const; |
- |
void SetContinuousPainting(bool continuous_painting) { |
continuous_painting_ = continuous_painting; |
} |
@@ -279,12 +266,14 @@ class CC_EXPORT SchedulerStateMachine { |
bool ShouldSendBeginMainFrame() const; |
bool ShouldCommit() const; |
bool ShouldPrepareTiles() const; |
+ bool ShouldInvalidateOutputSurface() const; |
void AdvanceCurrentFrameNumber(); |
bool HasAnimatedThisFrame() const; |
bool HasSentBeginMainFrameThisFrame() const; |
bool HasRequestedSwapThisFrame() const; |
bool HasSwappedThisFrame() const; |
+ bool HasInvalidatedOutputSurfaceThisFrame() const; |
void UpdateStateOnCommit(bool commit_was_aborted); |
void UpdateStateOnActivation(); |
@@ -306,6 +295,7 @@ class CC_EXPORT SchedulerStateMachine { |
int last_frame_number_swap_performed_; |
int last_frame_number_swap_requested_; |
int last_frame_number_begin_main_frame_sent_; |
+ int last_frame_number_invalidate_output_surface_performed_; |
// prepare_tiles_funnel_ is "filled" each time PrepareTiles is called |
// and "drained" on each BeginImplFrame. If the funnel gets too full, |
@@ -319,7 +309,6 @@ class CC_EXPORT SchedulerStateMachine { |
bool needs_animate_; |
bool needs_prepare_tiles_; |
bool needs_commit_; |
- bool inside_poll_for_anticipated_draw_triggers_; |
bool visible_; |
bool can_start_; |
bool can_draw_; |
@@ -334,6 +323,7 @@ class CC_EXPORT SchedulerStateMachine { |
bool continuous_painting_; |
bool impl_latency_takes_priority_on_battery_; |
bool children_need_begin_frames_; |
+ bool output_surface_did_request_draw_; |
private: |
DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); |