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

Side by Side Diff: trunk/src/cc/trees/thread_proxy.cc

Issue 103163003: Revert 238458 "cc: Defer first OutputSurface creation until clie..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years 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 | Annotate | Revision Log
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/thread_proxy.h" 5 #include "cc/trees/thread_proxy.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 void ThreadProxy::UpdateBackgroundAnimateTicking() { 260 void ThreadProxy::UpdateBackgroundAnimateTicking() {
261 layer_tree_host_impl_->UpdateBackgroundAnimateTicking( 261 layer_tree_host_impl_->UpdateBackgroundAnimateTicking(
262 !scheduler_on_impl_thread_->WillDrawIfNeeded() && 262 !scheduler_on_impl_thread_->WillDrawIfNeeded() &&
263 layer_tree_host_impl_->active_tree()->root_layer()); 263 layer_tree_host_impl_->active_tree()->root_layer());
264 } 264 }
265 265
266 void ThreadProxy::DoCreateAndInitializeOutputSurface() { 266 void ThreadProxy::DoCreateAndInitializeOutputSurface() {
267 TRACE_EVENT0("cc", "ThreadProxy::DoCreateAndInitializeOutputSurface"); 267 TRACE_EVENT0("cc", "ThreadProxy::DoCreateAndInitializeOutputSurface");
268 DCHECK(IsMainThread()); 268 DCHECK(IsMainThread());
269 269
270 scoped_ptr<OutputSurface> output_surface = 270 scoped_ptr<OutputSurface> output_surface = first_output_surface_.Pass();
271 layer_tree_host()->CreateOutputSurface(); 271 if (!output_surface)
272 output_surface = layer_tree_host()->CreateOutputSurface();
272 273
273 RendererCapabilities capabilities; 274 RendererCapabilities capabilities;
274 bool success = !!output_surface; 275 bool success = !!output_surface;
275 if (!success) { 276 if (!success) {
276 OnOutputSurfaceInitializeAttempted(false, capabilities); 277 OnOutputSurfaceInitializeAttempted(false, capabilities);
277 return; 278 return;
278 } 279 }
279 280
280 scoped_refptr<ContextProvider> offscreen_context_provider; 281 scoped_refptr<ContextProvider> offscreen_context_provider;
281 if (created_offscreen_context_provider_) { 282 if (created_offscreen_context_provider_) {
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 DCHECK(IsMainThread() || IsMainThreadBlocked()); 635 DCHECK(IsMainThread() || IsMainThreadBlocked());
635 return layer_tree_host()->contents_texture_manager(); 636 return layer_tree_host()->contents_texture_manager();
636 } 637 }
637 638
638 PrioritizedResourceManager* 639 PrioritizedResourceManager*
639 ThreadProxy::contents_texture_manager_on_impl_thread() { 640 ThreadProxy::contents_texture_manager_on_impl_thread() {
640 DCHECK(IsImplThread()); 641 DCHECK(IsImplThread());
641 return contents_texture_manager_unsafe_; 642 return contents_texture_manager_unsafe_;
642 } 643 }
643 644
644 void ThreadProxy::Start() { 645 void ThreadProxy::Start(scoped_ptr<OutputSurface> first_output_surface) {
645 DCHECK(IsMainThread()); 646 DCHECK(IsMainThread());
646 DCHECK(Proxy::HasImplThread()); 647 DCHECK(Proxy::HasImplThread());
648 DCHECK(first_output_surface);
647 649
648 // Create LayerTreeHostImpl. 650 // Create LayerTreeHostImpl.
649 DebugScopedSetMainThreadBlocked main_thread_blocked(this); 651 DebugScopedSetMainThreadBlocked main_thread_blocked(this);
650 CompletionEvent completion; 652 CompletionEvent completion;
651 Proxy::ImplThreadTaskRunner()->PostTask( 653 Proxy::ImplThreadTaskRunner()->PostTask(
652 FROM_HERE, 654 FROM_HERE,
653 base::Bind(&ThreadProxy::InitializeImplOnImplThread, 655 base::Bind(&ThreadProxy::InitializeImplOnImplThread,
654 base::Unretained(this), 656 base::Unretained(this),
655 &completion)); 657 &completion));
656 completion.Wait(); 658 completion.Wait();
657 659
658 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); 660 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
661 first_output_surface_ = first_output_surface.Pass();
659 662
660 started_ = true; 663 started_ = true;
661 } 664 }
662 665
663 void ThreadProxy::Stop() { 666 void ThreadProxy::Stop() {
664 TRACE_EVENT0("cc", "ThreadProxy::Stop"); 667 TRACE_EVENT0("cc", "ThreadProxy::Stop");
665 DCHECK(IsMainThread()); 668 DCHECK(IsMainThread());
666 DCHECK(started_); 669 DCHECK(started_);
667 670
668 // Synchronously finishes pending GL operations and deletes the impl. 671 // Synchronously finishes pending GL operations and deletes the impl.
(...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 commit_to_activate_duration_history_.InsertSample( 1652 commit_to_activate_duration_history_.InsertSample(
1650 base::TimeTicks::HighResNow() - commit_complete_time_); 1653 base::TimeTicks::HighResNow() - commit_complete_time_);
1651 } 1654 }
1652 1655
1653 void ThreadProxy::DidManageTiles() { 1656 void ThreadProxy::DidManageTiles() {
1654 DCHECK(IsImplThread()); 1657 DCHECK(IsImplThread());
1655 scheduler_on_impl_thread_->DidManageTiles(); 1658 scheduler_on_impl_thread_->DidManageTiles();
1656 } 1659 }
1657 1660
1658 } // namespace cc 1661 } // namespace cc
OLDNEW
« no previous file with comments | « trunk/src/cc/trees/thread_proxy.h ('k') | trunk/src/content/renderer/gpu/render_widget_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698