Index: cc/scheduler/scheduler_state_machine.h |
diff --git a/cc/scheduler/scheduler_state_machine.h b/cc/scheduler/scheduler_state_machine.h |
index cc48257e62fd3692c85f0d5dcf6411590198b281..48dd8288d74e89ccb0efaeb202bcc1812b735380 100644 |
--- a/cc/scheduler/scheduler_state_machine.h |
+++ b/cc/scheduler/scheduler_state_machine.h |
@@ -87,6 +87,7 @@ class CC_EXPORT SchedulerStateMachine { |
} |
bool RedrawPending() const { return needs_redraw_; } |
+ bool ManageTilesPending() const { return needs_manage_tiles_; } |
enum Action { |
ACTION_NONE, |
@@ -100,6 +101,7 @@ class CC_EXPORT SchedulerStateMachine { |
ACTION_DRAW_AND_READBACK, |
ACTION_BEGIN_OUTPUT_SURFACE_CREATION, |
ACTION_ACQUIRE_LAYER_TEXTURES_FOR_MAIN_THREAD, |
+ ACTION_MANAGE_TILES, |
}; |
static const char* ActionToString(Action action); |
@@ -124,7 +126,11 @@ class CC_EXPORT SchedulerStateMachine { |
// 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 PollForAnticipatedDrawTriggers(); |
+ 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); |
@@ -133,6 +139,10 @@ class CC_EXPORT SchedulerStateMachine { |
// or the screen being damaged and simply needing redisplay. |
void SetNeedsRedraw(); |
+ // Indicates that manage-tiles is required. This guarantees another |
+ // ManageTiles will occur shortly (even if no redraw is required). |
+ void SetNeedsManageTiles(); |
+ |
// Indicates whether a redraw is required because we are currently rendering |
// with a low resolution or checkerboarded tile. |
void SetSwapUsedIncompleteTile(bool used_incomplete_tile); |
@@ -202,15 +212,18 @@ class CC_EXPORT SchedulerStateMachine { |
bool ShouldUpdateVisibleTiles() const; |
bool ShouldSendBeginFrameToMainThread() const; |
bool ShouldCommit() const; |
+ bool ShouldManageTiles() const; |
bool HasDrawnAndSwappedThisFrame() const; |
bool HasActivatedPendingTreeThisFrame() const; |
bool HasUpdatedVisibleTilesThisFrame() const; |
bool HasSentBeginFrameToMainThreadThisFrame() const; |
+ bool HasScheduledManageTilesThisFrame() const; |
void UpdateStateOnCommit(bool commit_was_aborted); |
void UpdateStateOnActivation(); |
void UpdateStateOnDraw(bool did_swap); |
+ void UpdateStateOnManageTiles(); |
const SchedulerSettings settings_; |
@@ -227,10 +240,13 @@ class CC_EXPORT SchedulerStateMachine { |
int last_frame_number_where_update_visible_tiles_was_called_; |
int consecutive_failed_draws_; |
bool needs_redraw_; |
+ bool needs_manage_tiles_; |
bool swap_used_incomplete_tile_; |
bool needs_commit_; |
bool main_thread_needs_layer_textures_; |
bool inside_begin_frame_; |
+ bool inside_poll_for_anticipated_draw_triggers_; |
+ |
BeginFrameArgs last_begin_frame_args_; |
bool visible_; |
bool can_start_; |