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

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

Issue 1143433005: Remove gfx::FrameTime for a single clock source (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Handling patch for mac files Created 5 years, 7 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"
11 #include "cc/output/output_surface.h" 11 #include "cc/output/output_surface.h"
12 #include "ui/gfx/frame_time.h"
13 12
14 namespace cc { 13 namespace cc {
15 14
16 DisplayScheduler::DisplayScheduler( 15 DisplayScheduler::DisplayScheduler(
17 DisplaySchedulerClient* client, 16 DisplaySchedulerClient* client,
18 BeginFrameSource* begin_frame_source, 17 BeginFrameSource* begin_frame_source,
19 scoped_refptr<base::SingleThreadTaskRunner> task_runner, 18 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
20 int max_pending_swaps) 19 int max_pending_swaps)
21 : client_(client), 20 : client_(client),
22 begin_frame_source_(begin_frame_source), 21 begin_frame_source_(begin_frame_source),
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 107
109 child_surface_ids_to_expect_damage_from_ = 108 child_surface_ids_to_expect_damage_from_ =
110 base::STLSetIntersection<std::vector<SurfaceId>>( 109 base::STLSetIntersection<std::vector<SurfaceId>>(
111 child_surface_ids_damaged_, child_surface_ids_damaged_prev_); 110 child_surface_ids_damaged_, child_surface_ids_damaged_prev_);
112 111
113 child_surface_ids_damaged_prev_.swap(child_surface_ids_damaged_); 112 child_surface_ids_damaged_prev_.swap(child_surface_ids_damaged_);
114 child_surface_ids_damaged_.clear(); 113 child_surface_ids_damaged_.clear();
115 } 114 }
116 115
117 bool DisplayScheduler::OnBeginFrameMixInDelegate(const BeginFrameArgs& args) { 116 bool DisplayScheduler::OnBeginFrameMixInDelegate(const BeginFrameArgs& args) {
118 base::TimeTicks now = gfx::FrameTime::Now(); 117 base::TimeTicks now = base::TimeTicks::Now();
119 TRACE_EVENT2("cc", "DisplayScheduler::BeginFrame", "args", args.AsValue(), 118 TRACE_EVENT2("cc", "DisplayScheduler::BeginFrame", "args", args.AsValue(),
120 "now", now); 119 "now", now);
121 120
122 // Only service missed BeginFrames if they haven't already expired. 121 // Only service missed BeginFrames if they haven't already expired.
123 base::TimeTicks adjusted_deadline = 122 base::TimeTicks adjusted_deadline =
124 args.deadline - BeginFrameArgs::DefaultEstimatedParentDrawTime(); 123 args.deadline - BeginFrameArgs::DefaultEstimatedParentDrawTime();
125 if (args.type == BeginFrameArgs::MISSED && now > adjusted_deadline) 124 if (args.type == BeginFrameArgs::MISSED && now > adjusted_deadline)
126 return false; 125 return false;
127 126
128 // If we get another BeginFrame before the previous deadline, 127 // If we get another BeginFrame before the previous deadline,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 TRACE_EVENT_SCOPE_THREAD); 226 TRACE_EVENT_SCOPE_THREAD);
228 return; 227 return;
229 } 228 }
230 229
231 // Schedule the deadline. 230 // Schedule the deadline.
232 begin_frame_deadline_task_time_ = desired_deadline; 231 begin_frame_deadline_task_time_ = desired_deadline;
233 begin_frame_deadline_task_.Cancel(); 232 begin_frame_deadline_task_.Cancel();
234 begin_frame_deadline_task_.Reset(begin_frame_deadline_closure_); 233 begin_frame_deadline_task_.Reset(begin_frame_deadline_closure_);
235 234
236 base::TimeDelta delta = 235 base::TimeDelta delta =
237 std::max(base::TimeDelta(), desired_deadline - gfx::FrameTime::Now()); 236 std::max(base::TimeDelta(), desired_deadline - base::TimeTicks::Now());
238 task_runner_->PostDelayedTask(FROM_HERE, 237 task_runner_->PostDelayedTask(FROM_HERE,
239 begin_frame_deadline_task_.callback(), delta); 238 begin_frame_deadline_task_.callback(), delta);
240 TRACE_EVENT2("cc", "Using new deadline", "delta", delta.ToInternalValue(), 239 TRACE_EVENT2("cc", "Using new deadline", "delta", delta.ToInternalValue(),
241 "desired_deadline", desired_deadline); 240 "desired_deadline", desired_deadline);
242 } 241 }
243 242
244 void DisplayScheduler::OnBeginFrameDeadline() { 243 void DisplayScheduler::OnBeginFrameDeadline() {
245 TRACE_EVENT0("cc", "DisplayScheduler::OnBeginFrameDeadline"); 244 TRACE_EVENT0("cc", "DisplayScheduler::OnBeginFrameDeadline");
246 inside_begin_frame_deadline_interval_ = false; 245 inside_begin_frame_deadline_interval_ = false;
247 begin_frame_deadline_task_.Cancel(); 246 begin_frame_deadline_task_.Cancel();
(...skipping 16 matching lines...) Expand all
264 } 263 }
265 264
266 void DisplayScheduler::DidSwapBuffersComplete() { 265 void DisplayScheduler::DidSwapBuffersComplete() {
267 pending_swaps_--; 266 pending_swaps_--;
268 TRACE_EVENT1("cc", "DisplayScheduler::DidSwapBuffersComplete", 267 TRACE_EVENT1("cc", "DisplayScheduler::DidSwapBuffersComplete",
269 "pending_frames", pending_swaps_); 268 "pending_frames", pending_swaps_);
270 ScheduleBeginFrameDeadline(); 269 ScheduleBeginFrameDeadline();
271 } 270 }
272 271
273 } // namespace cc 272 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698