| 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 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" | 
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 144       return "ACTION_PREPARE_TILES"; | 144       return "ACTION_PREPARE_TILES"; | 
| 145   } | 145   } | 
| 146   NOTREACHED(); | 146   NOTREACHED(); | 
| 147   return "???"; | 147   return "???"; | 
| 148 } | 148 } | 
| 149 | 149 | 
| 150 scoped_refptr<base::trace_event::ConvertableToTraceFormat> | 150 scoped_refptr<base::trace_event::ConvertableToTraceFormat> | 
| 151 SchedulerStateMachine::AsValue() const { | 151 SchedulerStateMachine::AsValue() const { | 
| 152   scoped_refptr<base::trace_event::TracedValue> state = | 152   scoped_refptr<base::trace_event::TracedValue> state = | 
| 153       new base::trace_event::TracedValue(); | 153       new base::trace_event::TracedValue(); | 
| 154   AsValueInto(state.get(), gfx::FrameTime::Now()); | 154   AsValueInto(state.get()); | 
| 155   return state; | 155   return state; | 
| 156 } | 156 } | 
| 157 | 157 | 
| 158 void SchedulerStateMachine::AsValueInto(base::trace_event::TracedValue* state, | 158 void SchedulerStateMachine::AsValueInto( | 
| 159                                         base::TimeTicks now) const { | 159     base::trace_event::TracedValue* state) const { | 
| 160   state->BeginDictionary("major_state"); | 160   state->BeginDictionary("major_state"); | 
| 161   state->SetString("next_action", ActionToString(NextAction())); | 161   state->SetString("next_action", ActionToString(NextAction())); | 
| 162   state->SetString("begin_impl_frame_state", | 162   state->SetString("begin_impl_frame_state", | 
| 163                    BeginImplFrameStateToString(begin_impl_frame_state_)); | 163                    BeginImplFrameStateToString(begin_impl_frame_state_)); | 
| 164   state->SetString("commit_state", CommitStateToString(commit_state_)); | 164   state->SetString("commit_state", CommitStateToString(commit_state_)); | 
| 165   state->SetString("output_surface_state_", | 165   state->SetString("output_surface_state_", | 
| 166                    OutputSurfaceStateToString(output_surface_state_)); | 166                    OutputSurfaceStateToString(output_surface_state_)); | 
| 167   state->SetString("forced_redraw_state", | 167   state->SetString("forced_redraw_state", | 
| 168                    ForcedRedrawOnTimeoutStateToString(forced_redraw_state_)); | 168                    ForcedRedrawOnTimeoutStateToString(forced_redraw_state_)); | 
| 169   state->EndDictionary(); | 169   state->EndDictionary(); | 
| 170 | 170 | 
| 171   state->BeginDictionary("major_timestamps_in_ms"); |  | 
| 172   state->SetDouble("0_interval", |  | 
| 173                    begin_impl_frame_args_.interval.InMicroseconds() / 1000.0L); |  | 
| 174   state->SetDouble( |  | 
| 175       "1_now_to_deadline", |  | 
| 176       (begin_impl_frame_args_.deadline - now).InMicroseconds() / 1000.0L); |  | 
| 177   state->SetDouble( |  | 
| 178       "2_frame_time_to_now", |  | 
| 179       (now - begin_impl_frame_args_.frame_time).InMicroseconds() / 1000.0L); |  | 
| 180   state->SetDouble("3_frame_time_to_deadline", |  | 
| 181                    (begin_impl_frame_args_.deadline - |  | 
| 182                     begin_impl_frame_args_.frame_time).InMicroseconds() / |  | 
| 183                        1000.0L); |  | 
| 184   state->SetDouble("4_now", |  | 
| 185                    (now - base::TimeTicks()).InMicroseconds() / 1000.0L); |  | 
| 186   state->SetDouble( |  | 
| 187       "5_frame_time", |  | 
| 188       (begin_impl_frame_args_.frame_time - base::TimeTicks()).InMicroseconds() / |  | 
| 189           1000.0L); |  | 
| 190   state->SetDouble( |  | 
| 191       "6_deadline", |  | 
| 192       (begin_impl_frame_args_.deadline - base::TimeTicks()).InMicroseconds() / |  | 
| 193           1000.0L); |  | 
| 194   state->EndDictionary(); |  | 
| 195 |  | 
| 196   state->BeginDictionary("minor_state"); | 171   state->BeginDictionary("minor_state"); | 
| 197   state->SetInteger("commit_count", commit_count_); | 172   state->SetInteger("commit_count", commit_count_); | 
| 198   state->SetInteger("current_frame_number", current_frame_number_); | 173   state->SetInteger("current_frame_number", current_frame_number_); | 
| 199 | 174 | 
| 200   state->SetInteger("last_frame_number_animate_performed", | 175   state->SetInteger("last_frame_number_animate_performed", | 
| 201                     last_frame_number_animate_performed_); | 176                     last_frame_number_animate_performed_); | 
| 202   state->SetInteger("last_frame_number_swap_performed", | 177   state->SetInteger("last_frame_number_swap_performed", | 
| 203                     last_frame_number_swap_performed_); | 178                     last_frame_number_swap_performed_); | 
| 204   state->SetInteger("last_frame_number_swap_requested", | 179   state->SetInteger("last_frame_number_swap_requested", | 
| 205                     last_frame_number_swap_requested_); | 180                     last_frame_number_swap_requested_); | 
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 814   // another frame soon. This helps avoid negative glitches in our | 789   // another frame soon. This helps avoid negative glitches in our | 
| 815   // SetNeedsBeginFrame requests, which may propagate to the BeginImplFrame | 790   // SetNeedsBeginFrame requests, which may propagate to the BeginImplFrame | 
| 816   // provider and get sampled at an inopportune time, delaying the next | 791   // provider and get sampled at an inopportune time, delaying the next | 
| 817   // BeginImplFrame. | 792   // BeginImplFrame. | 
| 818   if (HasRequestedSwapThisFrame()) | 793   if (HasRequestedSwapThisFrame()) | 
| 819     return true; | 794     return true; | 
| 820 | 795 | 
| 821   return false; | 796   return false; | 
| 822 } | 797 } | 
| 823 | 798 | 
| 824 void SchedulerStateMachine::OnBeginImplFrame(const BeginFrameArgs& args) { | 799 void SchedulerStateMachine::OnBeginImplFrame() { | 
| 825   AdvanceCurrentFrameNumber(); | 800   AdvanceCurrentFrameNumber(); | 
| 826   begin_impl_frame_args_ = args; |  | 
| 827   DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_IDLE) | 801   DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_IDLE) | 
| 828       << AsValue()->ToString(); | 802       << AsValue()->ToString(); | 
| 829   begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING; | 803   begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING; | 
| 830 } | 804 } | 
| 831 | 805 | 
| 832 void SchedulerStateMachine::OnBeginImplFrameDeadlinePending() { | 806 void SchedulerStateMachine::OnBeginImplFrameDeadlinePending() { | 
| 833   DCHECK_EQ(begin_impl_frame_state_, | 807   DCHECK_EQ(begin_impl_frame_state_, | 
| 834             BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING) | 808             BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING) | 
| 835       << AsValue()->ToString(); | 809       << AsValue()->ToString(); | 
| 836   begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME; | 810   begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME; | 
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1123       static_cast<int>(begin_impl_frame_state_), | 1097       static_cast<int>(begin_impl_frame_state_), | 
| 1124       static_cast<int>(commit_state_), | 1098       static_cast<int>(commit_state_), | 
| 1125       has_pending_tree_ ? 'T' : 'F', | 1099       has_pending_tree_ ? 'T' : 'F', | 
| 1126       pending_tree_is_ready_for_activation_ ? 'T' : 'F', | 1100       pending_tree_is_ready_for_activation_ ? 'T' : 'F', | 
| 1127       active_tree_needs_first_draw_ ? 'T' : 'F', | 1101       active_tree_needs_first_draw_ ? 'T' : 'F', | 
| 1128       max_pending_swaps_, | 1102       max_pending_swaps_, | 
| 1129       pending_swaps_); | 1103       pending_swaps_); | 
| 1130 } | 1104 } | 
| 1131 | 1105 | 
| 1132 }  // namespace cc | 1106 }  // namespace cc | 
| OLD | NEW | 
|---|