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

Unified Diff: cc/scheduler/begin_frame_source.cc

Issue 2819723002: cc: Add more info to the BeginMainFrame dump. (Closed)
Patch Set: more tracing Created 3 years, 8 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
« no previous file with comments | « cc/scheduler/begin_frame_source.h ('k') | cc/scheduler/scheduler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scheduler/begin_frame_source.cc
diff --git a/cc/scheduler/begin_frame_source.cc b/cc/scheduler/begin_frame_source.cc
index 4db7202a02cc7f1134a08d31e302ec71d2d38882..36e3a62aa055b57b6ba52d9ef6576e4d6824d3ba 100644
--- a/cc/scheduler/begin_frame_source.cc
+++ b/cc/scheduler/begin_frame_source.cc
@@ -27,9 +27,9 @@ static const double kDoubleTickDivisor = 2.0;
}
// BeginFrameObserverBase -------------------------------------------------
-BeginFrameObserverBase::BeginFrameObserverBase()
- : last_begin_frame_args_(), dropped_begin_frame_args_(0) {
-}
+BeginFrameObserverBase::BeginFrameObserverBase() = default;
+
+BeginFrameObserverBase::~BeginFrameObserverBase() = default;
const BeginFrameArgs& BeginFrameObserverBase::LastUsedBeginFrameArgs() const {
return last_begin_frame_args_;
@@ -50,6 +50,15 @@ void BeginFrameObserverBase::OnBeginFrame(const BeginFrameArgs& args) {
}
}
+void BeginFrameObserverBase::AsValueInto(
+ base::trace_event::TracedValue* state) const {
+ state->SetInteger("dropped_begin_frame_args", dropped_begin_frame_args_);
+
+ state->BeginDictionary("last_begin_frame_args");
+ last_begin_frame_args_.AsValueInto(state);
+ state->EndDictionary();
+}
+
// BeginFrameSource -------------------------------------------------------
namespace {
static base::StaticAtomicSequenceNumber g_next_source_id;
@@ -57,8 +66,11 @@ static base::StaticAtomicSequenceNumber g_next_source_id;
BeginFrameSource::BeginFrameSource() : source_id_(g_next_source_id.GetNext()) {}
-uint32_t BeginFrameSource::source_id() const {
- return source_id_;
+BeginFrameSource::~BeginFrameSource() = default;
+
+void BeginFrameSource::AsValueInto(
+ base::trace_event::TracedValue* state) const {
+ state->SetInteger("source_id", source_id_);
}
// StubBeginFrameSource ---------------------------------------------------
@@ -241,12 +253,9 @@ void DelayBasedBeginFrameSource::OnTimerTick() {
}
// BeginFrameObserverAckTracker -------------------------------------------
-BeginFrameObserverAckTracker::BeginFrameObserverAckTracker()
- : current_source_id_(0),
- current_sequence_number_(BeginFrameArgs::kStartingFrameNumber),
- observers_had_damage_(false) {}
+BeginFrameObserverAckTracker::BeginFrameObserverAckTracker() = default;
-BeginFrameObserverAckTracker::~BeginFrameObserverAckTracker() {}
+BeginFrameObserverAckTracker::~BeginFrameObserverAckTracker() = default;
void BeginFrameObserverAckTracker::OnBeginFrame(const BeginFrameArgs& args) {
if (current_source_id_ != args.source_id)
@@ -334,6 +343,23 @@ uint64_t BeginFrameObserverAckTracker::LatestConfirmedSequenceNumber() const {
return latest_confirmed_sequence_number;
}
+void BeginFrameObserverAckTracker::AsValueInto(
+ base::trace_event::TracedValue* state) const {
+ base::SmallMap<std::map<BeginFrameObserver*, uint64_t>, 4>
+ latest_confirmed_sequence_numbers_;
+ state->SetInteger("current_source_id", current_source_id_);
+ state->SetInteger("current_sequence_number", current_sequence_number_);
+ state->SetInteger("num_observers", observers_.size());
+ state->SetInteger("num_finished_observers", finished_observers_.size());
+ state->SetBoolean("observers_had_damage", observers_had_damage_);
+
+ state->BeginArray("latest_confirmed_sequence_numbers");
+ for (const auto& kv : latest_confirmed_sequence_numbers_) {
+ state->AppendInteger(kv.second);
+ }
+ state->EndArray();
+}
+
// ExternalBeginFrameSource -----------------------------------------------
ExternalBeginFrameSource::ExternalBeginFrameSource(
ExternalBeginFrameSourceClient* client)
@@ -343,6 +369,23 @@ ExternalBeginFrameSource::ExternalBeginFrameSource(
ExternalBeginFrameSource::~ExternalBeginFrameSource() = default;
+void ExternalBeginFrameSource::AsValueInto(
+ base::trace_event::TracedValue* state) const {
+ BeginFrameSource::AsValueInto(state);
+
+ state->SetBoolean("paused", paused_);
+ state->SetBoolean("frame_active", frame_active_);
+ state->SetInteger("num_observers", observers_.size());
+
+ state->BeginDictionary("last_begin_frame_args");
+ last_begin_frame_args_.AsValueInto(state);
+ state->EndDictionary();
+
+ state->BeginDictionary("ack_tracker_state");
+ ack_tracker_.AsValueInto(state);
+ state->EndDictionary();
+}
+
void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
DCHECK(obs);
DCHECK(observers_.find(obs) == observers_.end());
@@ -355,16 +398,18 @@ void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
client_->OnNeedsBeginFrames(true);
// Send a MISSED begin frame if necessary.
- if (missed_begin_frame_args_.IsValid()) {
+ if (last_begin_frame_args_.IsValid()) {
const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs();
if (!last_args.IsValid() ||
- (missed_begin_frame_args_.frame_time > last_args.frame_time)) {
- DCHECK((missed_begin_frame_args_.source_id != last_args.source_id) ||
- (missed_begin_frame_args_.sequence_number >
- last_args.sequence_number))
- << "current " << missed_begin_frame_args_.AsValue()->ToString()
+ (last_begin_frame_args_.frame_time > last_args.frame_time)) {
+ DCHECK(
+ (last_begin_frame_args_.source_id != last_args.source_id) ||
+ (last_begin_frame_args_.sequence_number > last_args.sequence_number))
+ << "current " << last_begin_frame_args_.AsValue()->ToString()
<< ", last " << last_args.AsValue()->ToString();
- obs->OnBeginFrame(missed_begin_frame_args_);
+ BeginFrameArgs missed_args = last_begin_frame_args_;
+ missed_args.type = BeginFrameArgs::MISSED;
+ obs->OnBeginFrame(missed_args);
}
}
}
@@ -377,7 +422,7 @@ void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
ack_tracker_.OnObserverRemoved(obs);
MaybeFinishFrame();
if (observers_.empty()) {
- missed_begin_frame_args_ = BeginFrameArgs();
+ last_begin_frame_args_ = BeginFrameArgs();
client_->OnNeedsBeginFrames(false);
}
}
@@ -406,8 +451,7 @@ void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) {
FinishFrame();
frame_active_ = true;
- missed_begin_frame_args_ = args;
- missed_begin_frame_args_.type = BeginFrameArgs::MISSED;
+ last_begin_frame_args_ = args;
sunnyps 2017/04/14 23:24:11 NOTE: I don't set type to MISSED here because I wa
ack_tracker_.OnBeginFrame(args);
std::unordered_set<BeginFrameObserver*> observers(observers_);
for (auto* obs : observers) {
@@ -435,8 +479,8 @@ void ExternalBeginFrameSource::MaybeFinishFrame() {
void ExternalBeginFrameSource::FinishFrame() {
frame_active_ = false;
- BeginFrameAck ack(missed_begin_frame_args_.source_id,
- missed_begin_frame_args_.sequence_number,
+ BeginFrameAck ack(last_begin_frame_args_.source_id,
+ last_begin_frame_args_.sequence_number,
ack_tracker_.LatestConfirmedSequenceNumber(),
ack_tracker_.AnyObserversHadDamage());
client_->OnDidFinishFrame(ack);
« no previous file with comments | « cc/scheduler/begin_frame_source.h ('k') | cc/scheduler/scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698