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

Side by Side Diff: content/renderer/android/synchronous_compositor_output_surface.cc

Issue 2299003002: Remove uses of external begin frame sources (Closed)
Patch Set: Remove Blimp conditional Created 4 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderer/android/synchronous_compositor_output_surface.h" 5 #include "content/renderer/android/synchronous_compositor_output_surface.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 void SetSurfaceSize(const gfx::Size surface_size) { 89 void SetSurfaceSize(const gfx::Size surface_size) {
90 surface_size_ = surface_size; 90 surface_size_ = surface_size;
91 } 91 }
92 }; 92 };
93 93
94 SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( 94 SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface(
95 scoped_refptr<cc::ContextProvider> context_provider, 95 scoped_refptr<cc::ContextProvider> context_provider,
96 scoped_refptr<cc::ContextProvider> worker_context_provider, 96 scoped_refptr<cc::ContextProvider> worker_context_provider,
97 int routing_id, 97 int routing_id,
98 uint32_t output_surface_id, 98 uint32_t output_surface_id,
99 std::unique_ptr<cc::BeginFrameSource> begin_frame_source,
99 SynchronousCompositorRegistry* registry, 100 SynchronousCompositorRegistry* registry,
100 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue) 101 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue)
101 : cc::OutputSurface(std::move(context_provider), 102 : cc::OutputSurface(std::move(context_provider),
102 std::move(worker_context_provider), 103 std::move(worker_context_provider),
103 nullptr), 104 nullptr),
104 routing_id_(routing_id), 105 routing_id_(routing_id),
105 output_surface_id_(output_surface_id), 106 output_surface_id_(output_surface_id),
106 registry_(registry), 107 registry_(registry),
107 sender_(RenderThreadImpl::current()->sync_compositor_message_filter()), 108 sender_(RenderThreadImpl::current()->sync_compositor_message_filter()),
108 memory_policy_(0u), 109 memory_policy_(0u),
109 frame_swap_message_queue_(frame_swap_message_queue), 110 frame_swap_message_queue_(frame_swap_message_queue),
110 surface_manager_(new cc::SurfaceManager), 111 surface_manager_(new cc::SurfaceManager),
111 surface_id_allocator_(new cc::SurfaceIdAllocator(kCompositorClientId)), 112 surface_id_allocator_(new cc::SurfaceIdAllocator(kCompositorClientId)),
112 surface_factory_(new cc::SurfaceFactory(surface_manager_.get(), this)) { 113 surface_factory_(new cc::SurfaceFactory(surface_manager_.get(), this)),
114 begin_frame_source_(std::move(begin_frame_source)) {
113 DCHECK(registry_); 115 DCHECK(registry_);
114 DCHECK(sender_); 116 DCHECK(sender_);
117 DCHECK(begin_frame_source_);
115 thread_checker_.DetachFromThread(); 118 thread_checker_.DetachFromThread();
116 capabilities_.adjust_deadline_for_parent = false; 119 capabilities_.adjust_deadline_for_parent = false;
117 capabilities_.delegated_rendering = true; 120 capabilities_.delegated_rendering = true;
118 memory_policy_.priority_cutoff_when_visible = 121 memory_policy_.priority_cutoff_when_visible =
119 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE; 122 gpu::MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE;
120 } 123 }
121 124
122 SynchronousCompositorOutputSurface::~SynchronousCompositorOutputSurface() = 125 SynchronousCompositorOutputSurface::~SynchronousCompositorOutputSurface() =
123 default; 126 default;
124 127
(...skipping 15 matching lines...) Expand all
140 IPC_END_MESSAGE_MAP() 143 IPC_END_MESSAGE_MAP()
141 return handled; 144 return handled;
142 } 145 }
143 146
144 bool SynchronousCompositorOutputSurface::BindToClient( 147 bool SynchronousCompositorOutputSurface::BindToClient(
145 cc::OutputSurfaceClient* surface_client) { 148 cc::OutputSurfaceClient* surface_client) {
146 DCHECK(CalledOnValidThread()); 149 DCHECK(CalledOnValidThread());
147 if (!cc::OutputSurface::BindToClient(surface_client)) 150 if (!cc::OutputSurface::BindToClient(surface_client))
148 return false; 151 return false;
149 152
153 DCHECK(begin_frame_source_);
154 client_->SetBeginFrameSource(begin_frame_source_.get());
150 client_->SetMemoryPolicy(memory_policy_); 155 client_->SetMemoryPolicy(memory_policy_);
151 client_->SetTreeActivationCallback( 156 client_->SetTreeActivationCallback(
152 base::Bind(&SynchronousCompositorOutputSurface::DidActivatePendingTree, 157 base::Bind(&SynchronousCompositorOutputSurface::DidActivatePendingTree,
153 base::Unretained(this))); 158 base::Unretained(this)));
154 registry_->RegisterOutputSurface(routing_id_, this); 159 registry_->RegisterOutputSurface(routing_id_, this);
155 registered_ = true; 160 registered_ = true;
156 161
157 surface_manager_->RegisterSurfaceClientId(surface_id_allocator_->client_id()); 162 surface_manager_->RegisterSurfaceClientId(surface_id_allocator_->client_id());
158 surface_manager_->RegisterSurfaceFactoryClient( 163 surface_manager_->RegisterSurfaceFactoryClient(
159 surface_id_allocator_->client_id(), this); 164 surface_id_allocator_->client_id(), this);
(...skipping 15 matching lines...) Expand all
175 nullptr /* begin_frame_source */, std::move(output_surface), 180 nullptr /* begin_frame_source */, std::move(output_surface),
176 nullptr /* scheduler */, nullptr /* texture_mailbox_deleter */)); 181 nullptr /* scheduler */, nullptr /* texture_mailbox_deleter */));
177 display_->Initialize(&display_client_, surface_manager_.get(), 182 display_->Initialize(&display_client_, surface_manager_.get(),
178 surface_id_allocator_->client_id()); 183 surface_id_allocator_->client_id());
179 display_->SetVisible(true); 184 display_->SetVisible(true);
180 return true; 185 return true;
181 } 186 }
182 187
183 void SynchronousCompositorOutputSurface::DetachFromClient() { 188 void SynchronousCompositorOutputSurface::DetachFromClient() {
184 DCHECK(CalledOnValidThread()); 189 DCHECK(CalledOnValidThread());
185 if (registered_) { 190 client_->SetBeginFrameSource(nullptr);
191 // Destroy the begin frame source on the same thread it was bound on.
192 begin_frame_source_ = nullptr;
193 if (registered_)
186 registry_->UnregisterOutputSurface(routing_id_, this); 194 registry_->UnregisterOutputSurface(routing_id_, this);
187 }
188 client_->SetTreeActivationCallback(base::Closure()); 195 client_->SetTreeActivationCallback(base::Closure());
189 if (!delegated_surface_id_.is_null()) 196 if (!delegated_surface_id_.is_null())
190 surface_factory_->Destroy(delegated_surface_id_); 197 surface_factory_->Destroy(delegated_surface_id_);
191 surface_manager_->UnregisterSurfaceFactoryClient( 198 surface_manager_->UnregisterSurfaceFactoryClient(
192 surface_id_allocator_->client_id()); 199 surface_id_allocator_->client_id());
193 surface_manager_->InvalidateSurfaceClientId( 200 surface_manager_->InvalidateSurfaceClientId(
194 surface_id_allocator_->client_id()); 201 surface_id_allocator_->client_id());
195 software_output_surface_ = nullptr; 202 software_output_surface_ = nullptr;
196 display_ = nullptr; 203 display_ = nullptr;
197 surface_factory_ = nullptr; 204 surface_factory_ = nullptr;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 client_->ReclaimResources(resources); 426 client_->ReclaimResources(resources);
420 } 427 }
421 428
422 void SynchronousCompositorOutputSurface::SetBeginFrameSource( 429 void SynchronousCompositorOutputSurface::SetBeginFrameSource(
423 cc::BeginFrameSource* begin_frame_source) { 430 cc::BeginFrameSource* begin_frame_source) {
424 // Software output is synchronous and doesn't use a BeginFrameSource. 431 // Software output is synchronous and doesn't use a BeginFrameSource.
425 NOTREACHED(); 432 NOTREACHED();
426 } 433 }
427 434
428 } // namespace content 435 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/android/synchronous_compositor_output_surface.h ('k') | content/renderer/gpu/compositor_dependencies.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698