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

Side by Side Diff: cc/test/fake_external_begin_frame_source.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/test/fake_external_begin_frame_source.h" 5 #include "cc/test/fake_external_begin_frame_source.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "cc/test/begin_frame_args_test.h" 11 #include "cc/test/begin_frame_args_test.h"
12 12
13 namespace cc { 13 namespace cc {
14 14
15 FakeExternalBeginFrameSource::FakeExternalBeginFrameSource(double refresh_rate) 15 FakeExternalBeginFrameSource::FakeExternalBeginFrameSource(double refresh_rate)
16 : milliseconds_per_frame_(1000.0 / refresh_rate), 16 : milliseconds_per_frame_(1000.0 / refresh_rate),
17 weak_ptr_factory_(this) { 17 weak_ptr_factory_(this) {
18 DetachFromThread(); 18 DetachFromThread();
19 } 19 }
20 20
21 FakeExternalBeginFrameSource::~FakeExternalBeginFrameSource() { 21 FakeExternalBeginFrameSource::~FakeExternalBeginFrameSource() {
22 DCHECK(CalledOnValidThread()); 22 DCHECK(CalledOnValidThread());
23 } 23 }
24 24
25 void FakeExternalBeginFrameSource::DidFinishFrame(BeginFrameObserver* obs) {
26 DCHECK(CalledOnValidThread());
27 // Send a MISSED begin frame if necessary.
28 if (missed_begin_frame_args_.IsValid()) {
29 BeginFrameArgs last_args = obs->LastUsedBeginFrameArgs();
30 if (!last_args.IsValid() ||
31 (missed_begin_frame_args_.frame_time > last_args.frame_time)) {
32 obs->OnBeginFrame(missed_begin_frame_args_);
33 }
34 }
35 }
36
25 void FakeExternalBeginFrameSource::OnNeedsBeginFramesChanged( 37 void FakeExternalBeginFrameSource::OnNeedsBeginFramesChanged(
26 bool needs_begin_frames) { 38 bool needs_begin_frames) {
27 DCHECK(CalledOnValidThread()); 39 DCHECK(CalledOnValidThread());
28 if (needs_begin_frames) { 40 if (needs_begin_frames) {
29 PostTestOnBeginFrame(); 41 PostTestOnBeginFrame();
30 } else { 42 } else {
31 begin_frame_task_.Cancel(); 43 begin_frame_task_.Cancel();
32 } 44 }
33 } 45 }
34 46
35 void FakeExternalBeginFrameSource::TestOnBeginFrame() { 47 void FakeExternalBeginFrameSource::TestOnBeginFrame() {
36 DCHECK(CalledOnValidThread()); 48 DCHECK(CalledOnValidThread());
37 CallOnBeginFrame(CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE)); 49 BeginFrameArgs args = CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE);
50 missed_begin_frame_args_ = args;
51 missed_begin_frame_args_.type = BeginFrameArgs::MISSED;
52 CallOnBeginFrame(args);
38 PostTestOnBeginFrame(); 53 PostTestOnBeginFrame();
39 } 54 }
40 55
41 void FakeExternalBeginFrameSource::PostTestOnBeginFrame() { 56 void FakeExternalBeginFrameSource::PostTestOnBeginFrame() {
42 begin_frame_task_.Reset( 57 begin_frame_task_.Reset(
43 base::Bind(&FakeExternalBeginFrameSource::TestOnBeginFrame, 58 base::Bind(&FakeExternalBeginFrameSource::TestOnBeginFrame,
44 weak_ptr_factory_.GetWeakPtr())); 59 weak_ptr_factory_.GetWeakPtr()));
45 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 60 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
46 FROM_HERE, begin_frame_task_.callback(), 61 FROM_HERE, begin_frame_task_.callback(),
47 base::TimeDelta::FromMilliseconds(milliseconds_per_frame_)); 62 base::TimeDelta::FromMilliseconds(milliseconds_per_frame_));
48 } 63 }
49 64
50 } // namespace cc 65 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698