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

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 1336733002: Re-land: cc: Implement shared worker contexts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix LayerTreeHostClientTakeAwayOutputSurface test. Content provider is always destroyed on the clie… Created 5 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
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 #include <string> 9 #include <string>
10 10
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 client_->DidCompletePageScaleAnimation(); 378 client_->DidCompletePageScaleAnimation();
379 did_complete_scale_animation_ = false; 379 did_complete_scale_animation_ = false;
380 } 380 }
381 } 381 }
382 382
383 void LayerTreeHost::SetOutputSurface(scoped_ptr<OutputSurface> surface) { 383 void LayerTreeHost::SetOutputSurface(scoped_ptr<OutputSurface> surface) {
384 TRACE_EVENT0("cc", "LayerTreeHost::SetOutputSurface"); 384 TRACE_EVENT0("cc", "LayerTreeHost::SetOutputSurface");
385 DCHECK(output_surface_lost_); 385 DCHECK(output_surface_lost_);
386 DCHECK(surface); 386 DCHECK(surface);
387 387
388 proxy_->SetOutputSurface(surface.Pass()); 388 DCHECK(!new_output_surface_);
389 new_output_surface_ = surface.Pass();
390 proxy_->SetOutputSurface(new_output_surface_.get());
389 } 391 }
390 392
391 scoped_ptr<OutputSurface> LayerTreeHost::ReleaseOutputSurface() { 393 scoped_ptr<OutputSurface> LayerTreeHost::ReleaseOutputSurface() {
392 DCHECK(!visible_); 394 DCHECK(!visible_);
393 DCHECK(!output_surface_lost_); 395 DCHECK(!output_surface_lost_);
394 396
395 DidLoseOutputSurface(); 397 DidLoseOutputSurface();
396 return proxy_->ReleaseOutputSurface(); 398 proxy_->ReleaseOutputSurface();
399 return current_output_surface_.Pass();
397 } 400 }
398 401
399 void LayerTreeHost::RequestNewOutputSurface() { 402 void LayerTreeHost::RequestNewOutputSurface() {
400 client_->RequestNewOutputSurface(); 403 client_->RequestNewOutputSurface();
401 } 404 }
402 405
403 void LayerTreeHost::DidInitializeOutputSurface() { 406 void LayerTreeHost::DidInitializeOutputSurface() {
407 DCHECK(new_output_surface_);
404 output_surface_lost_ = false; 408 output_surface_lost_ = false;
409 current_output_surface_ = new_output_surface_.Pass();
405 client_->DidInitializeOutputSurface(); 410 client_->DidInitializeOutputSurface();
406 } 411 }
407 412
408 void LayerTreeHost::DidFailToInitializeOutputSurface() { 413 void LayerTreeHost::DidFailToInitializeOutputSurface() {
409 DCHECK(output_surface_lost_); 414 DCHECK(output_surface_lost_);
415 DCHECK(new_output_surface_);
416 // Note: It is safe to drop all output surface references here as
417 // LayerTreeHostImpl will not keep a pointer to either the old or
418 // new output surface after failing to initialize the new one.
419 current_output_surface_ = nullptr;
420 new_output_surface_ = nullptr;
410 client_->DidFailToInitializeOutputSurface(); 421 client_->DidFailToInitializeOutputSurface();
411 } 422 }
412 423
413 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl( 424 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl(
414 LayerTreeHostImplClient* client) { 425 LayerTreeHostImplClient* client) {
415 DCHECK(proxy_->IsImplThread()); 426 DCHECK(proxy_->IsImplThread());
416 scoped_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create( 427 scoped_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create(
417 settings_, client, proxy_.get(), rendering_stats_instrumentation_.get(), 428 settings_, client, proxy_.get(), rendering_stats_instrumentation_.get(),
418 shared_bitmap_manager_, gpu_memory_buffer_manager_, task_graph_runner_, 429 shared_bitmap_manager_, gpu_memory_buffer_manager_, task_graph_runner_,
419 id_); 430 id_);
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 return animation_host_ ? animation_host_->HasAnyAnimation(layer->id()) 1228 return animation_host_ ? animation_host_->HasAnyAnimation(layer->id())
1218 : false; 1229 : false;
1219 } 1230 }
1220 1231
1221 bool LayerTreeHost::HasActiveAnimation(const Layer* layer) const { 1232 bool LayerTreeHost::HasActiveAnimation(const Layer* layer) const {
1222 return animation_host_ ? animation_host_->HasActiveAnimation(layer->id()) 1233 return animation_host_ ? animation_host_->HasActiveAnimation(layer->id())
1223 : false; 1234 : false;
1224 } 1235 }
1225 1236
1226 } // namespace cc 1237 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698