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

Side by Side Diff: cc/surfaces/display_scheduler.cc

Issue 1887243002: cc: Remove retro frames from scheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/surfaces/display_scheduler.h" 5 #include "cc/surfaces/display_scheduler.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 root_surface_resources_locked_ = locked; 52 root_surface_resources_locked_ = locked;
53 ScheduleBeginFrameDeadline(); 53 ScheduleBeginFrameDeadline();
54 } 54 }
55 55
56 // This is used to force an immediate swap before a resize. 56 // This is used to force an immediate swap before a resize.
57 void DisplayScheduler::ForceImmediateSwapIfPossible() { 57 void DisplayScheduler::ForceImmediateSwapIfPossible() {
58 TRACE_EVENT0("cc", "DisplayScheduler::ForceImmediateSwapIfPossible"); 58 TRACE_EVENT0("cc", "DisplayScheduler::ForceImmediateSwapIfPossible");
59 bool in_begin = inside_begin_frame_deadline_interval_; 59 bool in_begin = inside_begin_frame_deadline_interval_;
60 AttemptDrawAndSwap(); 60 AttemptDrawAndSwap();
61 if (in_begin) 61 if (in_begin)
62 begin_frame_source_->DidFinishFrame(0); 62 begin_frame_source_->DidFinishFrame(this);
63 } 63 }
64 64
65 void DisplayScheduler::DisplayResized() { 65 void DisplayScheduler::DisplayResized() {
66 expecting_root_surface_damage_because_of_resize_ = true; 66 expecting_root_surface_damage_because_of_resize_ = true;
67 expect_damage_from_root_surface_ = true; 67 expect_damage_from_root_surface_ = true;
68 needs_draw_ = true; 68 needs_draw_ = true;
69 ScheduleBeginFrameDeadline(); 69 ScheduleBeginFrameDeadline();
70 } 70 }
71 71
72 // Notification that there was a resize or the root surface changed and 72 // Notification that there was a resize or the root surface changed and
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 child_surface_ids_damaged_.clear(); 128 child_surface_ids_damaged_.clear();
129 129
130 needs_draw_ = false; 130 needs_draw_ = false;
131 all_active_child_surfaces_ready_to_draw_ = 131 all_active_child_surfaces_ready_to_draw_ =
132 child_surface_ids_to_expect_damage_from_.empty(); 132 child_surface_ids_to_expect_damage_from_.empty();
133 133
134 expect_damage_from_root_surface_ = root_surface_damaged_; 134 expect_damage_from_root_surface_ = root_surface_damaged_;
135 root_surface_damaged_ = false; 135 root_surface_damaged_ = false;
136 } 136 }
137 137
138 bool DisplayScheduler::OnBeginFrameDerivedImpl(const BeginFrameArgs& args) { 138 const BeginFrameArgs& DisplayScheduler::LastUsedBeginFrameArgs() const {
139 return current_begin_frame_args_;
140 }
141
142 void DisplayScheduler::OnBeginFrame(const BeginFrameArgs& args) {
139 base::TimeTicks now = base::TimeTicks::Now(); 143 base::TimeTicks now = base::TimeTicks::Now();
140 TRACE_EVENT2("cc", "DisplayScheduler::BeginFrame", "args", args.AsValue(), 144 TRACE_EVENT2("cc", "DisplayScheduler::BeginFrame", "args", args.AsValue(),
141 "now", now); 145 "now", now);
142 146
143 // If we get another BeginFrame before the previous deadline, 147 // If we get another BeginFrame before the previous deadline,
144 // synchronously trigger the previous deadline before progressing. 148 // synchronously trigger the previous deadline before progressing.
145 if (inside_begin_frame_deadline_interval_) { 149 if (inside_begin_frame_deadline_interval_) {
146 OnBeginFrameDeadline(); 150 OnBeginFrameDeadline();
147 } 151 }
148 152
149 // Schedule the deadline. 153 // Schedule the deadline.
150 current_begin_frame_args_ = args; 154 current_begin_frame_args_ = args;
151 current_begin_frame_args_.deadline -= 155 current_begin_frame_args_.deadline -=
152 BeginFrameArgs::DefaultEstimatedParentDrawTime(); 156 BeginFrameArgs::DefaultEstimatedParentDrawTime();
153 inside_begin_frame_deadline_interval_ = true; 157 inside_begin_frame_deadline_interval_ = true;
154 ScheduleBeginFrameDeadline(); 158 ScheduleBeginFrameDeadline();
155
156 return true;
157 } 159 }
158 160
159 void DisplayScheduler::OnBeginFrameSourcePausedChanged(bool paused) { 161 void DisplayScheduler::OnBeginFrameSourcePausedChanged(bool paused) {
160 // BeginFrameSources used with DisplayScheduler do not make use of this 162 // BeginFrameSources used with DisplayScheduler do not make use of this
161 // feature. 163 // feature.
162 if (paused) 164 if (paused)
163 NOTIMPLEMENTED(); 165 NOTIMPLEMENTED();
164 } 166 }
165 167
166 base::TimeTicks DisplayScheduler::DesiredBeginFrameDeadlineTime() { 168 base::TimeTicks DisplayScheduler::DesiredBeginFrameDeadlineTime() {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 observing_begin_frame_source_ = false; 288 observing_begin_frame_source_ = false;
287 begin_frame_source_->RemoveObserver(this); 289 begin_frame_source_->RemoveObserver(this);
288 } 290 }
289 } 291 }
290 } 292 }
291 293
292 void DisplayScheduler::OnBeginFrameDeadline() { 294 void DisplayScheduler::OnBeginFrameDeadline() {
293 TRACE_EVENT0("cc", "DisplayScheduler::OnBeginFrameDeadline"); 295 TRACE_EVENT0("cc", "DisplayScheduler::OnBeginFrameDeadline");
294 296
295 AttemptDrawAndSwap(); 297 AttemptDrawAndSwap();
296 begin_frame_source_->DidFinishFrame(0); 298 begin_frame_source_->DidFinishFrame(this);
297 } 299 }
298 300
299 void DisplayScheduler::DidSwapBuffers() { 301 void DisplayScheduler::DidSwapBuffers() {
300 pending_swaps_++; 302 pending_swaps_++;
301 TRACE_EVENT_ASYNC_BEGIN1("cc", "DisplayScheduler:pending_swaps", this, 303 TRACE_EVENT_ASYNC_BEGIN1("cc", "DisplayScheduler:pending_swaps", this,
302 "pending_frames", pending_swaps_); 304 "pending_frames", pending_swaps_);
303 } 305 }
304 306
305 void DisplayScheduler::DidSwapBuffersComplete() { 307 void DisplayScheduler::DidSwapBuffersComplete() {
306 pending_swaps_--; 308 pending_swaps_--;
307 TRACE_EVENT_ASYNC_END1("cc", "DisplayScheduler:pending_swaps", this, 309 TRACE_EVENT_ASYNC_END1("cc", "DisplayScheduler:pending_swaps", this,
308 "pending_frames", pending_swaps_); 310 "pending_frames", pending_swaps_);
309 ScheduleBeginFrameDeadline(); 311 ScheduleBeginFrameDeadline();
310 } 312 }
311 313
312 } // namespace cc 314 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698