OLD | NEW |
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 <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/location.h" | 11 #include "base/location.h" |
| 12 #include "base/memory/ptr_util.h" |
12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
13 #include "cc/base/switches.h" | 14 #include "cc/base/switches.h" |
14 #include "cc/output/output_surface_client.h" | 15 #include "cc/output/output_surface_client.h" |
| 16 #include "cc/scheduler/delay_based_time_source.h" |
15 #include "components/display_compositor/compositor_overlay_candidate_validator.h
" | 17 #include "components/display_compositor/compositor_overlay_candidate_validator.h
" |
16 #include "content/browser/compositor/reflector_impl.h" | 18 #include "content/browser/compositor/reflector_impl.h" |
17 #include "content/common/gpu/client/context_provider_command_buffer.h" | 19 #include "content/common/gpu/client/context_provider_command_buffer.h" |
18 | 20 |
19 namespace content { | 21 namespace content { |
20 | 22 |
21 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( | 23 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( |
22 scoped_refptr<cc::ContextProvider> context_provider, | 24 scoped_refptr<cc::ContextProvider> context_provider, |
23 scoped_refptr<ui::CompositorVSyncManager> vsync_manager, | 25 scoped_refptr<ui::CompositorVSyncManager> vsync_manager, |
24 base::SingleThreadTaskRunner* task_runner, | 26 base::SingleThreadTaskRunner* task_runner, |
25 std::unique_ptr<display_compositor::CompositorOverlayCandidateValidator> | 27 std::unique_ptr<display_compositor::CompositorOverlayCandidateValidator> |
26 overlay_candidate_validator) | 28 overlay_candidate_validator) |
27 : OutputSurface(std::move(context_provider), nullptr, nullptr), | 29 : OutputSurface(std::move(context_provider), nullptr, nullptr), |
28 vsync_manager_(std::move(vsync_manager)), | 30 vsync_manager_(std::move(vsync_manager)), |
29 synthetic_begin_frame_source_(new cc::SyntheticBeginFrameSource( | 31 synthetic_begin_frame_source_(new cc::DelayBasedBeginFrameSource( |
30 task_runner, | 32 base::MakeUnique<cc::DelayBasedTimeSource>(task_runner))), |
31 cc::BeginFrameArgs::DefaultInterval())), | |
32 reflector_(nullptr), | 33 reflector_(nullptr), |
33 use_begin_frame_scheduling_( | 34 use_begin_frame_scheduling_( |
34 base::CommandLine::ForCurrentProcess()->HasSwitch( | 35 base::CommandLine::ForCurrentProcess()->HasSwitch( |
35 cc::switches::kEnableBeginFrameScheduling)) { | 36 cc::switches::kEnableBeginFrameScheduling)) { |
36 overlay_candidate_validator_ = std::move(overlay_candidate_validator); | 37 overlay_candidate_validator_ = std::move(overlay_candidate_validator); |
37 Initialize(); | 38 Initialize(); |
38 } | 39 } |
39 | 40 |
40 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( | 41 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( |
41 std::unique_ptr<cc::SoftwareOutputDevice> software_device, | 42 std::unique_ptr<cc::SoftwareOutputDevice> software_device, |
42 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, | 43 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, |
43 base::SingleThreadTaskRunner* task_runner) | 44 base::SingleThreadTaskRunner* task_runner) |
44 : OutputSurface(nullptr, nullptr, std::move(software_device)), | 45 : OutputSurface(nullptr, nullptr, std::move(software_device)), |
45 vsync_manager_(vsync_manager), | 46 vsync_manager_(vsync_manager), |
46 synthetic_begin_frame_source_(new cc::SyntheticBeginFrameSource( | 47 synthetic_begin_frame_source_(new cc::DelayBasedBeginFrameSource( |
47 task_runner, | 48 base::MakeUnique<cc::DelayBasedTimeSource>(task_runner))), |
48 cc::BeginFrameArgs::DefaultInterval())), | |
49 reflector_(nullptr), | 49 reflector_(nullptr), |
50 use_begin_frame_scheduling_( | 50 use_begin_frame_scheduling_( |
51 base::CommandLine::ForCurrentProcess()->HasSwitch( | 51 base::CommandLine::ForCurrentProcess()->HasSwitch( |
52 cc::switches::kEnableBeginFrameScheduling)) { | 52 cc::switches::kEnableBeginFrameScheduling)) { |
53 Initialize(); | 53 Initialize(); |
54 } | 54 } |
55 | 55 |
56 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( | 56 BrowserCompositorOutputSurface::BrowserCompositorOutputSurface( |
57 const scoped_refptr<cc::VulkanContextProvider>& vulkan_context_provider, | 57 const scoped_refptr<cc::VulkanContextProvider>& vulkan_context_provider, |
58 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, | 58 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, |
59 base::SingleThreadTaskRunner* task_runner) | 59 base::SingleThreadTaskRunner* task_runner) |
60 : OutputSurface(std::move(vulkan_context_provider)), | 60 : OutputSurface(std::move(vulkan_context_provider)), |
61 vsync_manager_(vsync_manager), | 61 vsync_manager_(vsync_manager), |
62 synthetic_begin_frame_source_(new cc::SyntheticBeginFrameSource( | 62 synthetic_begin_frame_source_(new cc::DelayBasedBeginFrameSource( |
63 task_runner, | 63 base::MakeUnique<cc::DelayBasedTimeSource>(task_runner))), |
64 cc::BeginFrameArgs::DefaultInterval())), | |
65 reflector_(nullptr) { | 64 reflector_(nullptr) { |
66 Initialize(); | 65 Initialize(); |
67 } | 66 } |
68 | 67 |
69 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() { | 68 BrowserCompositorOutputSurface::~BrowserCompositorOutputSurface() { |
70 if (reflector_) | 69 if (reflector_) |
71 reflector_->DetachFromOutputSurface(); | 70 reflector_->DetachFromOutputSurface(); |
72 DCHECK(!reflector_); | 71 DCHECK(!reflector_); |
73 if (!HasClient()) | 72 if (!HasClient()) |
74 return; | 73 return; |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 BrowserCompositorOutputSurface::CreateCompositionStartedCallback() { | 144 BrowserCompositorOutputSurface::CreateCompositionStartedCallback() { |
146 return base::Closure(); | 145 return base::Closure(); |
147 } | 146 } |
148 | 147 |
149 cc::OverlayCandidateValidator* | 148 cc::OverlayCandidateValidator* |
150 BrowserCompositorOutputSurface::GetOverlayCandidateValidator() const { | 149 BrowserCompositorOutputSurface::GetOverlayCandidateValidator() const { |
151 return overlay_candidate_validator_.get(); | 150 return overlay_candidate_validator_.get(); |
152 } | 151 } |
153 | 152 |
154 } // namespace content | 153 } // namespace content |
OLD | NEW |