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

Side by Side Diff: blimp/client/core/compositor/blimp_compositor.cc

Issue 2383373002: Reduce SurfaceIdAllocator usage and tie SurfaceFactory to a single FrameSinkId (Closed)
Patch Set: Fix TestRenderViewHost + Mac Created 4 years, 2 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "blimp/client/core/compositor/blimp_compositor.h" 5 #include "blimp/client/core/compositor/blimp_compositor.h"
6 6
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 57
58 } // namespace 58 } // namespace
59 59
60 BlimpCompositor::BlimpCompositor( 60 BlimpCompositor::BlimpCompositor(
61 int render_widget_id, 61 int render_widget_id,
62 BlimpCompositorDependencies* compositor_dependencies, 62 BlimpCompositorDependencies* compositor_dependencies,
63 BlimpCompositorClient* client) 63 BlimpCompositorClient* client)
64 : render_widget_id_(render_widget_id), 64 : render_widget_id_(render_widget_id),
65 client_(client), 65 client_(client),
66 compositor_dependencies_(compositor_dependencies), 66 compositor_dependencies_(compositor_dependencies),
67 frame_sink_id_(compositor_dependencies_->GetEmbedderDependencies()
68 ->AllocateFrameSinkId()),
67 proxy_client_(nullptr), 69 proxy_client_(nullptr),
68 compositor_frame_sink_request_pending_(false), 70 compositor_frame_sink_request_pending_(false),
69 layer_(cc::Layer::Create()), 71 layer_(cc::Layer::Create()),
70 remote_proto_channel_receiver_(nullptr), 72 remote_proto_channel_receiver_(nullptr),
71 outstanding_commits_(0U), 73 outstanding_commits_(0U),
72 weak_ptr_factory_(this) { 74 weak_ptr_factory_(this) {
73 DCHECK(thread_checker_.CalledOnValidThread()); 75 DCHECK(thread_checker_.CalledOnValidThread());
74 76
75 surface_id_allocator_ = base::MakeUnique<cc::SurfaceIdAllocator>( 77 surface_id_allocator_ =
76 GetEmbedderDeps()->AllocateFrameSinkId()); 78 base::MakeUnique<cc::SurfaceIdAllocator>(frame_sink_id_);
77 GetEmbedderDeps()->GetSurfaceManager()->RegisterFrameSinkId( 79 GetEmbedderDeps()->GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_);
78 surface_id_allocator_->frame_sink_id());
79 CreateLayerTreeHost(); 80 CreateLayerTreeHost();
80 } 81 }
81 82
82 BlimpCompositor::~BlimpCompositor() { 83 BlimpCompositor::~BlimpCompositor() {
83 DCHECK(thread_checker_.CalledOnValidThread()); 84 DCHECK(thread_checker_.CalledOnValidThread());
84 85
85 DestroyLayerTreeHost(); 86 DestroyLayerTreeHost();
86 GetEmbedderDeps()->GetSurfaceManager()->InvalidateFrameSinkId( 87 GetEmbedderDeps()->GetSurfaceManager()->InvalidateFrameSinkId(frame_sink_id_);
87 surface_id_allocator_->frame_sink_id());
88 88
89 CheckPendingCommitCounts(true /* flush */); 89 CheckPendingCommitCounts(true /* flush */);
90 } 90 }
91 91
92 void BlimpCompositor::SetVisible(bool visible) { 92 void BlimpCompositor::SetVisible(bool visible) {
93 host_->SetVisible(visible); 93 host_->SetVisible(visible);
94 94
95 if (!visible) 95 if (!visible)
96 CheckPendingCommitCounts(true /* flush */); 96 CheckPendingCommitCounts(true /* flush */);
97 } 97 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 client_->SendWebGestureEvent(render_widget_id_, gesture_event); 204 client_->SendWebGestureEvent(render_widget_id_, gesture_event);
205 } 205 }
206 206
207 void BlimpCompositor::BindToProxyClient( 207 void BlimpCompositor::BindToProxyClient(
208 base::WeakPtr<BlimpCompositorFrameSinkProxyClient> proxy_client) { 208 base::WeakPtr<BlimpCompositorFrameSinkProxyClient> proxy_client) {
209 DCHECK(thread_checker_.CalledOnValidThread()); 209 DCHECK(thread_checker_.CalledOnValidThread());
210 DCHECK(!surface_factory_); 210 DCHECK(!surface_factory_);
211 211
212 proxy_client_ = proxy_client; 212 proxy_client_ = proxy_client;
213 surface_factory_ = base::MakeUnique<cc::SurfaceFactory>( 213 surface_factory_ = base::MakeUnique<cc::SurfaceFactory>(
214 GetEmbedderDeps()->GetSurfaceManager(), this); 214 frame_sink_id_, GetEmbedderDeps()->GetSurfaceManager(), this);
215 } 215 }
216 216
217 void BlimpCompositor::SwapCompositorFrame(cc::CompositorFrame frame) { 217 void BlimpCompositor::SwapCompositorFrame(cc::CompositorFrame frame) {
218 DCHECK(thread_checker_.CalledOnValidThread()); 218 DCHECK(thread_checker_.CalledOnValidThread());
219 DCHECK(surface_factory_); 219 DCHECK(surface_factory_);
220 220
221 cc::RenderPass* root_pass = 221 cc::RenderPass* root_pass =
222 frame.delegated_frame_data->render_pass_list.back().get(); 222 frame.delegated_frame_data->render_pass_list.back().get();
223 gfx::Size surface_size = root_pass->output_rect.size(); 223 gfx::Size surface_size = root_pass->output_rect.size();
224 224
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 it->second.Run(); 349 it->second.Run();
350 it = pending_commit_trackers_.erase(it); 350 it = pending_commit_trackers_.erase(it);
351 } else { 351 } else {
352 ++it; 352 ++it;
353 } 353 }
354 } 354 }
355 } 355 }
356 356
357 } // namespace client 357 } // namespace client
358 } // namespace blimp 358 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698