Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4771)

Unified Diff: cc/scheduler/scheduler_state_machine.cc

Issue 131683005: cc: Make PrepareToDraw return an enum for why it aborts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/scheduler/scheduler_state_machine.cc
diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc
index 334c8480c19b8c26978a02ff6bb913f95a7d543f..02e4a1ed508071bcfd930fbdcb361e4eadffd396 100644
--- a/cc/scheduler/scheduler_state_machine.cc
+++ b/cc/scheduler/scheduler_state_machine.cc
@@ -27,7 +27,7 @@ SchedulerStateMachine::SchedulerStateMachine(const SchedulerSettings& settings)
last_frame_number_begin_main_frame_sent_(-1),
last_frame_number_update_visible_tiles_was_called_(-1),
manage_tiles_funnel_(0),
- consecutive_failed_draws_(0),
+ consecutive_checkerboard_animations_(0),
needs_redraw_(false),
needs_manage_tiles_(false),
swap_used_incomplete_tile_(false),
@@ -240,8 +240,8 @@ scoped_ptr<base::Value> SchedulerStateMachine::AsValue() const {
last_frame_number_update_visible_tiles_was_called_);
minor_state->SetInteger("manage_tiles_funnel", manage_tiles_funnel_);
- minor_state->SetInteger("consecutive_failed_draws",
- consecutive_failed_draws_);
+ minor_state->SetInteger("consecutive_checkerboard_animations",
+ consecutive_checkerboard_animations_);
minor_state->SetBoolean("needs_redraw", needs_redraw_);
minor_state->SetBoolean("needs_manage_tiles", needs_manage_tiles_);
minor_state->SetBoolean("swap_used_incomplete_tile",
@@ -1022,29 +1022,41 @@ void SchedulerStateMachine::SetSmoothnessTakesPriority(
smoothness_takes_priority_ = smoothness_takes_priority;
}
-void SchedulerStateMachine::DidDrawIfPossibleCompleted(bool success) {
- draw_if_possible_failed_ = !success;
- if (draw_if_possible_failed_) {
- needs_redraw_ = true;
-
- // If we're already in the middle of a redraw, we don't need to
- // restart it.
- if (forced_redraw_state_ != FORCED_REDRAW_STATE_IDLE)
- return;
-
- needs_commit_ = true;
- consecutive_failed_draws_++;
- if (settings_.timeout_and_draw_when_animation_checkerboards &&
- consecutive_failed_draws_ >=
- settings_.maximum_number_of_failed_draws_before_draw_is_forced_) {
- consecutive_failed_draws_ = 0;
- // We need to force a draw, but it doesn't make sense to do this until
- // we've committed and have new textures.
- forced_redraw_state_ = FORCED_REDRAW_STATE_WAITING_FOR_COMMIT;
- }
- } else {
- consecutive_failed_draws_ = 0;
- forced_redraw_state_ = FORCED_REDRAW_STATE_IDLE;
+void SchedulerStateMachine::DidDrawIfPossibleCompleted(
+ DrawSwapReadbackResult::DrawResult result) {
+ switch (result) {
+ case DrawSwapReadbackResult::INVALID_RESULT:
+ // Uninitialized DrawSwapReadbackResult.
+ NOTREACHED();
+ break;
+ case DrawSwapReadbackResult::DID_DRAW:
+ consecutive_checkerboard_animations_ = 0;
+ forced_redraw_state_ = FORCED_REDRAW_STATE_IDLE;
+ break;
+ case DrawSwapReadbackResult::DRAW_ABORTED_CANT_DRAW:
+ case DrawSwapReadbackResult::DRAW_ABORTED_NO_TREE:
+ case DrawSwapReadbackResult::DRAW_ABORTED_NO_RENDERER:
+ // Nothing to do in these cases. External state needs to change first.
brianderson 2014/01/29 01:31:22 I suppose this is one of the few logic changes, bu
+ break;
+ case DrawSwapReadbackResult::DRAW_ABORTED_CHECKERBOARD_ANIMATIONS:
+ needs_redraw_ = true;
+
+ // If we're already in the middle of a redraw, we don't need to
+ // restart it.
+ if (forced_redraw_state_ != FORCED_REDRAW_STATE_IDLE)
+ return;
+
+ needs_commit_ = true;
+ consecutive_checkerboard_animations_++;
+ if (settings_.timeout_and_draw_when_animation_checkerboards &&
+ consecutive_checkerboard_animations_ >=
+ settings_.maximum_number_of_failed_draws_before_draw_is_forced_) {
brianderson 2014/01/29 01:31:22 Should we change the name of this setting? Doesn't
+ consecutive_checkerboard_animations_ = 0;
+ // We need to force a draw, but it doesn't make sense to do this until
+ // we've committed and have new textures.
+ forced_redraw_state_ = FORCED_REDRAW_STATE_WAITING_FOR_COMMIT;
+ }
+ break;
}
}

Powered by Google App Engine
This is Rietveld 408576698