| Index: cc/scheduler/scheduler_state_machine.cc
|
| diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc
|
| index a37a74a1b657fb953b39e46a157e41131be2e5dc..7070c7a1e30d92ca2bf8fd4577e7653c1a46153e 100644
|
| --- a/cc/scheduler/scheduler_state_machine.cc
|
| +++ b/cc/scheduler/scheduler_state_machine.cc
|
| @@ -5,7 +5,6 @@
|
| #include "cc/scheduler/scheduler_state_machine.h"
|
|
|
| #include "base/debug/trace_event.h"
|
| -#include "base/debug/trace_event_argument.h"
|
| #include "base/format_macros.h"
|
| #include "base/logging.h"
|
| #include "base/strings/stringprintf.h"
|
| @@ -148,96 +147,98 @@
|
| return "???";
|
| }
|
|
|
| -scoped_refptr<base::debug::ConvertableToTraceFormat>
|
| -SchedulerStateMachine::AsValue() const {
|
| - scoped_refptr<base::debug::TracedValue> state =
|
| - new base::debug::TracedValue();
|
| - AsValueInto(state);
|
| - return state;
|
| -}
|
| -
|
| -void SchedulerStateMachine::AsValueInto(base::debug::TracedValue* state) const {
|
| - state->BeginDictionary("major_state");
|
| - state->SetString("next_action", ActionToString(NextAction()));
|
| - state->SetString("begin_impl_frame_state",
|
| - BeginImplFrameStateToString(begin_impl_frame_state_));
|
| - state->SetString("commit_state", CommitStateToString(commit_state_));
|
| - state->SetString("output_surface_state_",
|
| - OutputSurfaceStateToString(output_surface_state_));
|
| - state->SetString("forced_redraw_state",
|
| - ForcedRedrawOnTimeoutStateToString(forced_redraw_state_));
|
| - state->EndDictionary();
|
| -
|
| - state->BeginDictionary("major_timestamps_in_ms");
|
| +scoped_ptr<base::Value> SchedulerStateMachine::AsValue() const {
|
| + scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue);
|
| +
|
| + scoped_ptr<base::DictionaryValue> major_state(new base::DictionaryValue);
|
| + major_state->SetString("next_action", ActionToString(NextAction()));
|
| + major_state->SetString("begin_impl_frame_state",
|
| + BeginImplFrameStateToString(begin_impl_frame_state_));
|
| + major_state->SetString("commit_state", CommitStateToString(commit_state_));
|
| + major_state->SetString("output_surface_state_",
|
| + OutputSurfaceStateToString(output_surface_state_));
|
| + major_state->SetString(
|
| + "forced_redraw_state",
|
| + ForcedRedrawOnTimeoutStateToString(forced_redraw_state_));
|
| + state->Set("major_state", major_state.release());
|
| +
|
| + scoped_ptr<base::DictionaryValue> timestamps_state(new base::DictionaryValue);
|
| base::TimeTicks now = gfx::FrameTime::Now();
|
| - state->SetDouble("0_interval",
|
| - begin_impl_frame_args_.interval.InMicroseconds() / 1000.0L);
|
| - state->SetDouble(
|
| + timestamps_state->SetDouble(
|
| + "0_interval", begin_impl_frame_args_.interval.InMicroseconds() / 1000.0L);
|
| + timestamps_state->SetDouble(
|
| "1_now_to_deadline",
|
| (begin_impl_frame_args_.deadline - now).InMicroseconds() / 1000.0L);
|
| - state->SetDouble(
|
| + timestamps_state->SetDouble(
|
| "2_frame_time_to_now",
|
| (now - begin_impl_frame_args_.frame_time).InMicroseconds() / 1000.0L);
|
| - state->SetDouble("3_frame_time_to_deadline",
|
| - (begin_impl_frame_args_.deadline -
|
| - begin_impl_frame_args_.frame_time).InMicroseconds() /
|
| - 1000.0L);
|
| - state->SetDouble("4_now",
|
| - (now - base::TimeTicks()).InMicroseconds() / 1000.0L);
|
| - state->SetDouble(
|
| + timestamps_state->SetDouble(
|
| + "3_frame_time_to_deadline",
|
| + (begin_impl_frame_args_.deadline - begin_impl_frame_args_.frame_time)
|
| + .InMicroseconds() /
|
| + 1000.0L);
|
| + timestamps_state->SetDouble(
|
| + "4_now", (now - base::TimeTicks()).InMicroseconds() / 1000.0L);
|
| + timestamps_state->SetDouble(
|
| "5_frame_time",
|
| (begin_impl_frame_args_.frame_time - base::TimeTicks()).InMicroseconds() /
|
| 1000.0L);
|
| - state->SetDouble(
|
| + timestamps_state->SetDouble(
|
| "6_deadline",
|
| (begin_impl_frame_args_.deadline - base::TimeTicks()).InMicroseconds() /
|
| 1000.0L);
|
| - state->EndDictionary();
|
| -
|
| - state->BeginDictionary("minor_state");
|
| - state->SetInteger("commit_count", commit_count_);
|
| - state->SetInteger("current_frame_number", current_frame_number_);
|
| -
|
| - state->SetInteger("last_frame_number_animate_performed",
|
| - last_frame_number_animate_performed_);
|
| - state->SetInteger("last_frame_number_swap_performed",
|
| - last_frame_number_swap_performed_);
|
| - state->SetInteger("last_frame_number_swap_requested",
|
| - last_frame_number_swap_requested_);
|
| - state->SetInteger("last_frame_number_begin_main_frame_sent",
|
| - last_frame_number_begin_main_frame_sent_);
|
| - state->SetInteger("last_frame_number_update_visible_tiles_was_called",
|
| - last_frame_number_update_visible_tiles_was_called_);
|
| -
|
| - state->SetInteger("manage_tiles_funnel", manage_tiles_funnel_);
|
| - state->SetInteger("consecutive_checkerboard_animations",
|
| - consecutive_checkerboard_animations_);
|
| - state->SetInteger("max_pending_swaps_", max_pending_swaps_);
|
| - state->SetInteger("pending_swaps_", pending_swaps_);
|
| - state->SetBoolean("needs_redraw", needs_redraw_);
|
| - state->SetBoolean("needs_animate_", needs_animate_);
|
| - state->SetBoolean("needs_manage_tiles", needs_manage_tiles_);
|
| - state->SetBoolean("swap_used_incomplete_tile", swap_used_incomplete_tile_);
|
| - state->SetBoolean("needs_commit", needs_commit_);
|
| - state->SetBoolean("visible", visible_);
|
| - state->SetBoolean("can_start", can_start_);
|
| - state->SetBoolean("can_draw", can_draw_);
|
| - state->SetBoolean("has_pending_tree", has_pending_tree_);
|
| - state->SetBoolean("pending_tree_is_ready_for_activation",
|
| - pending_tree_is_ready_for_activation_);
|
| - state->SetBoolean("active_tree_needs_first_draw",
|
| - active_tree_needs_first_draw_);
|
| - state->SetBoolean("did_create_and_initialize_first_output_surface",
|
| - did_create_and_initialize_first_output_surface_);
|
| - state->SetBoolean("smoothness_takes_priority", smoothness_takes_priority_);
|
| - state->SetBoolean("main_thread_is_in_high_latency_mode",
|
| - MainThreadIsInHighLatencyMode());
|
| - state->SetBoolean("skip_begin_main_frame_to_reduce_latency",
|
| - skip_begin_main_frame_to_reduce_latency_);
|
| - state->SetBoolean("skip_next_begin_main_frame_to_reduce_latency",
|
| - skip_next_begin_main_frame_to_reduce_latency_);
|
| - state->SetBoolean("continuous_painting", continuous_painting_);
|
| - state->EndDictionary();
|
| + state->Set("major_timestamps_in_ms", timestamps_state.release());
|
| +
|
| + scoped_ptr<base::DictionaryValue> minor_state(new base::DictionaryValue);
|
| + minor_state->SetInteger("commit_count", commit_count_);
|
| + minor_state->SetInteger("current_frame_number", current_frame_number_);
|
| +
|
| + minor_state->SetInteger("last_frame_number_animate_performed",
|
| + last_frame_number_animate_performed_);
|
| + minor_state->SetInteger("last_frame_number_swap_performed",
|
| + last_frame_number_swap_performed_);
|
| + minor_state->SetInteger("last_frame_number_swap_requested",
|
| + last_frame_number_swap_requested_);
|
| + minor_state->SetInteger(
|
| + "last_frame_number_begin_main_frame_sent",
|
| + last_frame_number_begin_main_frame_sent_);
|
| + minor_state->SetInteger(
|
| + "last_frame_number_update_visible_tiles_was_called",
|
| + last_frame_number_update_visible_tiles_was_called_);
|
| +
|
| + minor_state->SetInteger("manage_tiles_funnel", manage_tiles_funnel_);
|
| + minor_state->SetInteger("consecutive_checkerboard_animations",
|
| + consecutive_checkerboard_animations_);
|
| + minor_state->SetInteger("max_pending_swaps_", max_pending_swaps_);
|
| + minor_state->SetInteger("pending_swaps_", pending_swaps_);
|
| + minor_state->SetBoolean("needs_redraw", needs_redraw_);
|
| + minor_state->SetBoolean("needs_animate_", needs_animate_);
|
| + minor_state->SetBoolean("needs_manage_tiles", needs_manage_tiles_);
|
| + minor_state->SetBoolean("swap_used_incomplete_tile",
|
| + swap_used_incomplete_tile_);
|
| + minor_state->SetBoolean("needs_commit", needs_commit_);
|
| + minor_state->SetBoolean("visible", visible_);
|
| + minor_state->SetBoolean("can_start", can_start_);
|
| + minor_state->SetBoolean("can_draw", can_draw_);
|
| + minor_state->SetBoolean("has_pending_tree", has_pending_tree_);
|
| + minor_state->SetBoolean("pending_tree_is_ready_for_activation",
|
| + pending_tree_is_ready_for_activation_);
|
| + minor_state->SetBoolean("active_tree_needs_first_draw",
|
| + active_tree_needs_first_draw_);
|
| + minor_state->SetBoolean("did_create_and_initialize_first_output_surface",
|
| + did_create_and_initialize_first_output_surface_);
|
| + minor_state->SetBoolean("smoothness_takes_priority",
|
| + smoothness_takes_priority_);
|
| + minor_state->SetBoolean("main_thread_is_in_high_latency_mode",
|
| + MainThreadIsInHighLatencyMode());
|
| + minor_state->SetBoolean("skip_begin_main_frame_to_reduce_latency",
|
| + skip_begin_main_frame_to_reduce_latency_);
|
| + minor_state->SetBoolean("skip_next_begin_main_frame_to_reduce_latency",
|
| + skip_next_begin_main_frame_to_reduce_latency_);
|
| + minor_state->SetBoolean("continuous_painting", continuous_painting_);
|
| + state->Set("minor_state", minor_state.release());
|
| +
|
| + return state.PassAs<base::Value>();
|
| }
|
|
|
| void SchedulerStateMachine::AdvanceCurrentFrameNumber() {
|
| @@ -809,27 +810,26 @@
|
| void SchedulerStateMachine::OnBeginImplFrame(const BeginFrameArgs& args) {
|
| AdvanceCurrentFrameNumber();
|
| begin_impl_frame_args_ = args;
|
| - DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_IDLE)
|
| - << AsValue()->ToString();
|
| + DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_IDLE) << *AsValue();
|
| begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING;
|
| }
|
|
|
| void SchedulerStateMachine::OnBeginImplFrameDeadlinePending() {
|
| DCHECK_EQ(begin_impl_frame_state_,
|
| BEGIN_IMPL_FRAME_STATE_BEGIN_FRAME_STARTING)
|
| - << AsValue()->ToString();
|
| + << *AsValue();
|
| begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME;
|
| }
|
|
|
| void SchedulerStateMachine::OnBeginImplFrameDeadline() {
|
| DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME)
|
| - << AsValue()->ToString();
|
| + << *AsValue();
|
| begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE;
|
| }
|
|
|
| void SchedulerStateMachine::OnBeginImplFrameIdle() {
|
| DCHECK_EQ(begin_impl_frame_state_, BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE)
|
| - << AsValue()->ToString();
|
| + << *AsValue();
|
| begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_IDLE;
|
| }
|
|
|
| @@ -1009,8 +1009,7 @@
|
| void SchedulerStateMachine::SetNeedsCommit() { needs_commit_ = true; }
|
|
|
| void SchedulerStateMachine::NotifyReadyToCommit() {
|
| - DCHECK(commit_state_ == COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED)
|
| - << AsValue()->ToString();
|
| + DCHECK(commit_state_ == COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED) << *AsValue();
|
| commit_state_ = COMMIT_STATE_READY_TO_COMMIT;
|
| }
|
|
|
|
|