OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/scheduler/scheduler_state_machine.h" | 5 #include "cc/scheduler/scheduler_state_machine.h" |
6 | 6 |
7 #include "base/format_macros.h" | 7 #include "base/format_macros.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 maximum_number_of_failed_draws_before_draw_is_forced_(3), | 22 maximum_number_of_failed_draws_before_draw_is_forced_(3), |
23 needs_redraw_(false), | 23 needs_redraw_(false), |
24 swap_used_incomplete_tile_(false), | 24 swap_used_incomplete_tile_(false), |
25 needs_forced_redraw_(false), | 25 needs_forced_redraw_(false), |
26 needs_forced_redraw_after_next_commit_(false), | 26 needs_forced_redraw_after_next_commit_(false), |
27 needs_commit_(false), | 27 needs_commit_(false), |
28 needs_forced_commit_(false), | 28 needs_forced_commit_(false), |
29 expect_immediate_begin_frame_for_main_thread_(false), | 29 expect_immediate_begin_frame_for_main_thread_(false), |
30 main_thread_needs_layer_textures_(false), | 30 main_thread_needs_layer_textures_(false), |
31 inside_begin_frame_(false), | 31 inside_begin_frame_(false), |
| 32 last_begin_frame_args_(BeginFrameArgs::CreateInvalid()), |
32 visible_(false), | 33 visible_(false), |
33 can_start_(false), | 34 can_start_(false), |
34 can_draw_(false), | 35 can_draw_(false), |
35 has_pending_tree_(false), | 36 has_pending_tree_(false), |
36 draw_if_possible_failed_(false), | 37 draw_if_possible_failed_(false), |
37 texture_state_(LAYER_TEXTURE_STATE_UNLOCKED), | 38 texture_state_(LAYER_TEXTURE_STATE_UNLOCKED), |
38 output_surface_state_(OUTPUT_SURFACE_LOST), | 39 output_surface_state_(OUTPUT_SURFACE_LOST), |
39 did_create_and_initialize_first_output_surface_(false) {} | 40 did_create_and_initialize_first_output_surface_(false) {} |
40 | 41 |
41 std::string SchedulerStateMachine::ToString() { | 42 std::string SchedulerStateMachine::ToString() { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 &str, "needs_forced_commit_ = %d; ", needs_forced_commit_); | 78 &str, "needs_forced_commit_ = %d; ", needs_forced_commit_); |
78 base::StringAppendF(&str, | 79 base::StringAppendF(&str, |
79 "expect_immediate_begin_frame_for_main_thread_ = %d; ", | 80 "expect_immediate_begin_frame_for_main_thread_ = %d; ", |
80 expect_immediate_begin_frame_for_main_thread_); | 81 expect_immediate_begin_frame_for_main_thread_); |
81 base::StringAppendF(&str, | 82 base::StringAppendF(&str, |
82 "main_thread_needs_layer_textures_ = %d; ", | 83 "main_thread_needs_layer_textures_ = %d; ", |
83 main_thread_needs_layer_textures_); | 84 main_thread_needs_layer_textures_); |
84 base::StringAppendF(&str, "inside_begin_frame_ = %d; ", | 85 base::StringAppendF(&str, "inside_begin_frame_ = %d; ", |
85 inside_begin_frame_); | 86 inside_begin_frame_); |
86 base::StringAppendF(&str, "last_frame_time_ = %"PRId64"; ", | 87 base::StringAppendF(&str, "last_frame_time_ = %"PRId64"; ", |
87 (last_frame_time_ - base::TimeTicks()).InMilliseconds()); | 88 (last_begin_frame_args_.frame_time() - base::TimeTicks()) |
| 89 .InMilliseconds()); |
| 90 base::StringAppendF(&str, "last_deadline_ = %"PRId64"; ", |
| 91 (last_begin_frame_args_.deadline() - base::TimeTicks()).InMilliseconds()); |
| 92 base::StringAppendF(&str, "last_interval_ = %"PRId64"; ", |
| 93 last_begin_frame_args_.interval().InMilliseconds()); |
88 base::StringAppendF(&str, "visible_ = %d; ", visible_); | 94 base::StringAppendF(&str, "visible_ = %d; ", visible_); |
89 base::StringAppendF(&str, "can_start_ = %d; ", can_start_); | 95 base::StringAppendF(&str, "can_start_ = %d; ", can_start_); |
90 base::StringAppendF(&str, "can_draw_ = %d; ", can_draw_); | 96 base::StringAppendF(&str, "can_draw_ = %d; ", can_draw_); |
91 base::StringAppendF( | 97 base::StringAppendF( |
92 &str, "draw_if_possible_failed_ = %d; ", draw_if_possible_failed_); | 98 &str, "draw_if_possible_failed_ = %d; ", draw_if_possible_failed_); |
93 base::StringAppendF(&str, "has_pending_tree_ = %d; ", has_pending_tree_); | 99 base::StringAppendF(&str, "has_pending_tree_ = %d; ", has_pending_tree_); |
94 base::StringAppendF(&str, "texture_state_ = %d; ", texture_state_); | 100 base::StringAppendF(&str, "texture_state_ = %d; ", texture_state_); |
95 base::StringAppendF( | 101 base::StringAppendF( |
96 &str, "output_surface_state_ = %d; ", output_surface_state_); | 102 &str, "output_surface_state_ = %d; ", output_surface_state_); |
97 return str; | 103 return str; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 if (needs_forced_redraw_) | 361 if (needs_forced_redraw_) |
356 return true; | 362 return true; |
357 | 363 |
358 if (visible_ && swap_used_incomplete_tile_) | 364 if (visible_ && swap_used_incomplete_tile_) |
359 return true; | 365 return true; |
360 | 366 |
361 return needs_redraw_ && visible_ && | 367 return needs_redraw_ && visible_ && |
362 output_surface_state_ == OUTPUT_SURFACE_ACTIVE; | 368 output_surface_state_ == OUTPUT_SURFACE_ACTIVE; |
363 } | 369 } |
364 | 370 |
365 void SchedulerStateMachine::DidEnterBeginFrame() { | 371 void SchedulerStateMachine::DidEnterBeginFrame(BeginFrameArgs args) { |
366 inside_begin_frame_ = true; | 372 inside_begin_frame_ = true; |
367 } | 373 last_begin_frame_args_ = args; |
368 | |
369 void SchedulerStateMachine::SetFrameTime(base::TimeTicks frame_time) { | |
370 last_frame_time_ = frame_time; | |
371 } | 374 } |
372 | 375 |
373 void SchedulerStateMachine::DidLeaveBeginFrame() { | 376 void SchedulerStateMachine::DidLeaveBeginFrame() { |
374 current_frame_number_++; | 377 current_frame_number_++; |
375 inside_begin_frame_ = false; | 378 inside_begin_frame_ = false; |
376 } | 379 } |
377 | 380 |
378 void SchedulerStateMachine::SetVisible(bool visible) { visible_ = visible; } | 381 void SchedulerStateMachine::SetVisible(bool visible) { visible_ = visible; } |
379 | 382 |
380 void SchedulerStateMachine::SetNeedsRedraw() { needs_redraw_ = true; } | 383 void SchedulerStateMachine::SetNeedsRedraw() { needs_redraw_ = true; } |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 bool SchedulerStateMachine::HasInitializedOutputSurface() const { | 466 bool SchedulerStateMachine::HasInitializedOutputSurface() const { |
464 return output_surface_state_ == OUTPUT_SURFACE_ACTIVE; | 467 return output_surface_state_ == OUTPUT_SURFACE_ACTIVE; |
465 } | 468 } |
466 | 469 |
467 void SchedulerStateMachine::SetMaximumNumberOfFailedDrawsBeforeDrawIsForced( | 470 void SchedulerStateMachine::SetMaximumNumberOfFailedDrawsBeforeDrawIsForced( |
468 int num_draws) { | 471 int num_draws) { |
469 maximum_number_of_failed_draws_before_draw_is_forced_ = num_draws; | 472 maximum_number_of_failed_draws_before_draw_is_forced_ = num_draws; |
470 } | 473 } |
471 | 474 |
472 } // namespace cc | 475 } // namespace cc |
OLD | NEW |