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

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

Issue 2297933002: blimp: Set up the CompositorDependencies for blimp in Chrome. (Closed)
Patch Set: 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 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/feature/compositor/blimp_compositor.h" 5 #include "blimp/client/feature/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/numerics/safe_conversions.h" 10 #include "base/numerics/safe_conversions.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 compositor_dependencies_(compositor_dependencies), 65 compositor_dependencies_(compositor_dependencies),
66 host_should_be_visible_(false), 66 host_should_be_visible_(false),
67 output_surface_(nullptr), 67 output_surface_(nullptr),
68 output_surface_request_pending_(false), 68 output_surface_request_pending_(false),
69 layer_(cc::Layer::Create()), 69 layer_(cc::Layer::Create()),
70 remote_proto_channel_receiver_(nullptr), 70 remote_proto_channel_receiver_(nullptr),
71 weak_ptr_factory_(this) { 71 weak_ptr_factory_(this) {
72 DCHECK(thread_checker_.CalledOnValidThread()); 72 DCHECK(thread_checker_.CalledOnValidThread());
73 73
74 surface_id_allocator_ = base::MakeUnique<cc::SurfaceIdAllocator>( 74 surface_id_allocator_ = base::MakeUnique<cc::SurfaceIdAllocator>(
75 GetEmbedderDeps()->AllocateSurfaceId()); 75 GetEmbedderDeps()->AllocateSurfaceClientId());
76 GetEmbedderDeps()->GetSurfaceManager()->RegisterSurfaceClientId( 76 GetEmbedderDeps()->GetSurfaceManager()->RegisterSurfaceClientId(
77 surface_id_allocator_->client_id()); 77 surface_id_allocator_->client_id());
78 } 78 }
79 79
80 BlimpCompositor::~BlimpCompositor() { 80 BlimpCompositor::~BlimpCompositor() {
81 DCHECK(thread_checker_.CalledOnValidThread()); 81 DCHECK(thread_checker_.CalledOnValidThread());
82 82
83 if (host_) 83 if (host_)
84 DestroyLayerTreeHost(); 84 DestroyLayerTreeHost();
85 85
(...skipping 11 matching lines...) Expand all
97 if (input_manager_) 97 if (input_manager_)
98 return input_manager_->OnTouchEvent(motion_event); 98 return input_manager_->OnTouchEvent(motion_event);
99 return false; 99 return false;
100 } 100 }
101 101
102 void BlimpCompositor::RequestNewOutputSurface() { 102 void BlimpCompositor::RequestNewOutputSurface() {
103 DCHECK(!surface_factory_); 103 DCHECK(!surface_factory_);
104 DCHECK(!output_surface_request_pending_); 104 DCHECK(!output_surface_request_pending_);
105 105
106 output_surface_request_pending_ = true; 106 output_surface_request_pending_ = true;
107 GetEmbedderDeps()->GetContextProvider( 107 GetEmbedderDeps()->GetContextProviders(
108 base::Bind(&BlimpCompositor::OnContextProviderCreated, 108 base::Bind(&BlimpCompositor::OnContextProviderCreated,
109 weak_ptr_factory_.GetWeakPtr())); 109 weak_ptr_factory_.GetWeakPtr()));
110 } 110 }
111 111
112 void BlimpCompositor::DidInitializeOutputSurface() { 112 void BlimpCompositor::DidInitializeOutputSurface() {
113 output_surface_request_pending_ = false; 113 output_surface_request_pending_ = false;
114 } 114 }
115 115
116 void BlimpCompositor::DidCommitAndDrawFrame() { 116 void BlimpCompositor::DidCommitAndDrawFrame() {
117 BlimpStats::GetInstance()->Add(BlimpStats::COMMIT, 1); 117 BlimpStats::GetInstance()->Add(BlimpStats::COMMIT, 1);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 break; 152 break;
153 default: 153 default:
154 // We should have a receiver if we're getting compositor messages that 154 // We should have a receiver if we're getting compositor messages that
155 // are not INITIALIZE_IMPL or CLOSE_IMPL. 155 // are not INITIALIZE_IMPL or CLOSE_IMPL.
156 DCHECK(remote_proto_channel_receiver_); 156 DCHECK(remote_proto_channel_receiver_);
157 remote_proto_channel_receiver_->OnProtoReceived(std::move(message)); 157 remote_proto_channel_receiver_->OnProtoReceived(std::move(message));
158 } 158 }
159 } 159 }
160 160
161 void BlimpCompositor::OnContextProviderCreated( 161 void BlimpCompositor::OnContextProviderCreated(
162 const scoped_refptr<cc::ContextProvider>& provider) { 162 const blimp::client::CompositorDependencies::ContextProviders&
163 context_providers) {
163 DCHECK(!surface_factory_) 164 DCHECK(!surface_factory_)
164 << "Any connection to the old output surface should have been destroyed"; 165 << "Any connection to the old output surface should have been destroyed";
165 166
166 // Make sure we still have a host and we're still expecting an output surface. 167 // Make sure we still have a host and we're still expecting an output surface.
167 // This can happen if the host dies while the request is outstanding and we 168 // This can happen if the host dies while the request is outstanding and we
168 // build a new one that hasn't asked for a surface yet. 169 // build a new one that hasn't asked for a surface yet.
169 if (!output_surface_request_pending_) 170 if (!output_surface_request_pending_)
170 return; 171 return;
171 172
172 // TODO(khushalsagar): Make a worker context and bind it to the current 173 // Try again if the context creation failed.
173 // thread: 174 if (!context_providers.compositor_context_provider) {
174 // Worker context is bound to the main thread in RenderThreadImpl. One day 175 GetEmbedderDeps()->GetContextProviders(
175 // that will change and then this will have to be removed. 176 base::Bind(&BlimpCompositor::OnContextProviderCreated,
176 // worker_context_provider->BindToCurrentThread(); 177 weak_ptr_factory_.GetWeakPtr()));
David Trainor- moved to gerrit 2016/08/31 00:28:58 Return after this?
Khushal 2016/08/31 21:22:50 Good catch. Done.
178 }
179
177 std::unique_ptr<DelegatedOutputSurface> delegated_output_surface = 180 std::unique_ptr<DelegatedOutputSurface> delegated_output_surface =
178 base::MakeUnique<DelegatedOutputSurface>( 181 base::MakeUnique<DelegatedOutputSurface>(
179 provider, nullptr, base::ThreadTaskRunnerHandle::Get(), 182 std::move(context_providers.compositor_context_provider),
180 weak_ptr_factory_.GetWeakPtr()); 183 std::move(context_providers.worker_context_provider),
184 base::ThreadTaskRunnerHandle::Get(), weak_ptr_factory_.GetWeakPtr());
181 185
182 host_->SetOutputSurface(std::move(delegated_output_surface)); 186 host_->SetOutputSurface(std::move(delegated_output_surface));
183 } 187 }
184 188
185 void BlimpCompositor::SendWebGestureEvent( 189 void BlimpCompositor::SendWebGestureEvent(
186 const blink::WebGestureEvent& gesture_event) { 190 const blink::WebGestureEvent& gesture_event) {
187 client_->SendWebGestureEvent(render_widget_id_, gesture_event); 191 client_->SendWebGestureEvent(render_widget_id_, gesture_event);
188 } 192 }
189 193
190 void BlimpCompositor::BindToOutputSurface( 194 void BlimpCompositor::BindToOutputSurface(
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 // Cancel any outstanding OutputSurface requests. That way if we get an async 317 // Cancel any outstanding OutputSurface requests. That way if we get an async
314 // callback related to the old request we know to drop it. 318 // callback related to the old request we know to drop it.
315 output_surface_request_pending_ = false; 319 output_surface_request_pending_ = false;
316 320
317 // Make sure we don't have a receiver at this point. 321 // Make sure we don't have a receiver at this point.
318 DCHECK(!remote_proto_channel_receiver_); 322 DCHECK(!remote_proto_channel_receiver_);
319 } 323 }
320 324
321 } // namespace client 325 } // namespace client
322 } // namespace blimp 326 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698