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

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

Issue 1040813002: Revert of Enable BeginFrame scheduling on aura (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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)
17 : OutputSurface(context_provider), 18 : OutputSurface(context_provider),
19 vsync_manager_(vsync_manager),
18 reflector_(nullptr) { 20 reflector_(nullptr) {
19 Initialize(); 21 Initialize();
20 } 22 }
21 23
22 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( 24 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface(
23 scoped_ptr<cc::SoftwareOutputDevice> software_device) 25 scoped_ptr<cc::SoftwareOutputDevice> software_device,
26 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager)
24 : OutputSurface(software_device.Pass()), 27 : OutputSurface(software_device.Pass()),
28 vsync_manager_(vsync_manager),
25 reflector_(nullptr) { 29 reflector_(nullptr) {
26 Initialize(); 30 Initialize();
27 } 31 }
28 32
29 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() { 33 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() {
30 if (reflector_) 34 if (reflector_)
31 reflector_->DetachFromOutputSurface(); 35 reflector_->DetachFromOutputSurface();
32 DCHECK(!reflector_); 36 DCHECK(!reflector_);
37 if (!HasClient())
38 return;
39 vsync_manager_->RemoveObserver(this);
33 } 40 }
34 41
35 void BrowserCompositorOutputSurface::Initialize() { 42 void BrowserCompositorOutputSurface::Initialize() {
36 capabilities_.max_frames_pending = 1; 43 capabilities_.max_frames_pending = 1;
37 capabilities_.adjust_deadline_for_parent = false; 44 capabilities_.adjust_deadline_for_parent = false;
38 } 45 }
39 46
47 bool BrowserCompositorOutputSurface::BindToClient(
48 cc::OutputSurfaceClient* client) {
49 if (!OutputSurface::BindToClient(client))
50 return false;
51 // Don't want vsync notifications until there is a client.
52 vsync_manager_->AddObserver(this);
53 return true;
54 }
55
56 void BrowserCompositorOutputSurface::OnUpdateVSyncParameters(
57 base::TimeTicks timebase,
58 base::TimeDelta interval) {
59 DCHECK(HasClient());
60 CommitVSyncParameters(timebase, interval);
61 }
62
40 void BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu( 63 void BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu(
41 base::TimeTicks timebase, 64 base::TimeTicks timebase,
42 base::TimeDelta interval) { 65 base::TimeDelta interval) {
43 DCHECK(HasClient()); 66 DCHECK(HasClient());
44 CommitVSyncParameters(timebase, interval); 67 vsync_manager_->UpdateVSyncParameters(timebase, interval);
45 } 68 }
46 69
47 void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) { 70 void BrowserCompositorOutputSurface::SetReflector(ReflectorImpl* reflector) {
48 reflector_ = reflector; 71 reflector_ = reflector;
49 } 72 }
50 73
51 } // namespace content 74 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/compositor/browser_compositor_output_surface.h ('k') | content/browser/compositor/delegated_frame_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698