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

Unified Diff: cc/scheduler/begin_frame_source.cc

Issue 2967553002: Revert "Fix Omnibox.CharTypedToRepaintLatency regression with D3DVsync experiment" (Closed)
Patch Set: Created 3 years, 6 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/begin_frame_source_unittest.cc » ('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 c5ec59595c2015ee90777c806a436440cf0b8a79..4b7fe01e710ca9edfd6c2711f5a8a8872b4b13e1 100644
--- a/cc/scheduler/begin_frame_source.cc
+++ b/cc/scheduler/begin_frame_source.cc
@@ -283,10 +283,19 @@ void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
client_->OnNeedsBeginFrames(true);
// Send a MISSED begin frame if necessary.
- BeginFrameArgs missed_args = GetMissedBeginFrameArgs(obs);
- if (missed_args.IsValid()) {
- DCHECK_EQ(BeginFrameArgs::MISSED, missed_args.type);
- obs->OnBeginFrame(missed_args);
+ if (last_begin_frame_args_.IsValid()) {
+ const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs();
+ if (!last_args.IsValid() ||
+ (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();
+ BeginFrameArgs missed_args = last_begin_frame_args_;
+ missed_args.type = BeginFrameArgs::MISSED;
+ obs->OnBeginFrame(missed_args);
+ }
}
}
@@ -295,8 +304,10 @@ void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
DCHECK(observers_.find(obs) != observers_.end());
observers_.erase(obs);
- if (observers_.empty())
+ if (observers_.empty()) {
+ last_begin_frame_args_ = BeginFrameArgs();
client_->OnNeedsBeginFrames(false);
+ }
}
bool ExternalBeginFrameSource::IsThrottled() const {
@@ -330,24 +341,4 @@ void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) {
}
}
-BeginFrameArgs ExternalBeginFrameSource::GetMissedBeginFrameArgs(
- BeginFrameObserver* obs) {
- if (!last_begin_frame_args_.IsValid())
- return BeginFrameArgs();
-
- const BeginFrameArgs& last_args = obs->LastUsedBeginFrameArgs();
- if (last_args.IsValid() &&
- last_begin_frame_args_.frame_time <= last_args.frame_time) {
- return BeginFrameArgs();
- }
-
- 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();
- BeginFrameArgs missed_args = last_begin_frame_args_;
- missed_args.type = BeginFrameArgs::MISSED;
- return missed_args;
-}
-
} // namespace cc
« no previous file with comments | « cc/scheduler/begin_frame_source.h ('k') | cc/scheduler/begin_frame_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698