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

Side by Side Diff: content/browser/compositor/browser_compositor_output_surface.cc

Issue 1016033006: Enable BeginFrame scheduling on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mac build Created 5 years, 9 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 "content/browser/compositor/browser_compositor_output_surface.h" 5 #include "content/browser/compositor/browser_compositor_output_surface.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "content/browser/compositor/reflector_impl.h" 10 #include "content/browser/compositor/reflector_impl.h"
11 #include "content/common/gpu/client/context_provider_command_buffer.h" 11 #include "content/common/gpu/client/context_provider_command_buffer.h"
12 12
13 namespace content { 13 namespace content {
14 14
15 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( 15 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
16 const scoped_refptr<cc::ContextProvider>& context_provider, 16 const scoped_refptr<cc::ContextProvider>& context_provider)
17 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager)
18 : OutputSurface(context_provider), 17 : OutputSurface(context_provider),
19 vsync_manager_(vsync_manager),
20 reflector_(nullptr) { 18 reflector_(nullptr) {
21 Initialize(); 19 Initialize();
22 } 20 }
23 21
24 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( 22 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
25 scoped_ptr<cc::SoftwareOutputDevice> software_device, 23 scoped_ptr<cc::SoftwareOutputDevice> software_device)
26 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager)
27 : OutputSurface(software_device.Pass()), 24 : OutputSurface(software_device.Pass()),
28 vsync_manager_(vsync_manager),
29 reflector_(nullptr) { 25 reflector_(nullptr) {
30 Initialize(); 26 Initialize();
31 } 27 }
32 28
33 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() { 29 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() {
34 if (reflector_) 30 if (reflector_)
35 reflector_->DetachFromOutputSurface(); 31 reflector_->DetachFromOutputSurface();
36 DCHECK(!reflector_); 32 DCHECK(!reflector_);
37 if (!HasClient())
38 return;
39 vsync_manager_->RemoveObserver(this);
40 } 33 }
41 34
42 void BrowserCompositorOutputSurface::Initialize() { 35 void BrowserCompositorOutputSurface::Initialize() {
43 capabilities_.max_frames_pending = 1; 36 capabilities_.max_frames_pending = 1;
44 capabilities_.adjust_deadline_for_parent = false; 37 capabilities_.adjust_deadline_for_parent = false;
45 } 38 }
46 39
47 bool BrowserCompositorOutputSurface::BindToClient( 40 bool BrowserCompositorOutputSurface::BindToClient(
danakj 2015/03/25 17:40:38 You can remove this function override then
simonhong 2015/03/25 18:05:22 Done.
48 cc::OutputSurfaceClient* client) { 41 cc::OutputSurfaceClient* client) {
49 if (!OutputSurface::BindToClient(client)) 42 if (!OutputSurface::BindToClient(client))
50 return false; 43 return false;
51 // Don't want vsync notifications until there is a client.
52 vsync_manager_->AddObserver(this);
53 return true; 44 return true;
54 } 45 }
55 46
56 void BrowserCompositorOutputSurface::OnUpdateVSyncParameters( 47 void BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu(
57 base::TimeTicks timebase, 48 base::TimeTicks timebase,
58 base::TimeDelta interval) { 49 base::TimeDelta interval) {
59 DCHECK(HasClient()); 50 DCHECK(HasClient());
60 CommitVSyncParameters(timebase, interval); 51 CommitVSyncParameters(timebase, interval);
61 } 52 }
62 53
63 void BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu(
64 base::TimeTicks timebase,
65 base::TimeDelta interval) {
66 DCHECK(HasClient());
67 vsync_manager_->UpdateVSyncParameters(timebase, interval);
68 }
69
70 void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) { 54 void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) {
71 reflector_ = reflector; 55 reflector_ = reflector;
72 } 56 }
73 57
74 } // namespace content 58 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698