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

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

Issue 289903008: Merge SingleThreadProxy::CommitAndComposite into CompositeImmediately. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | no next file » | 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/single_thread_proxy.h" 5 #include "cc/trees/single_thread_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "cc/debug/benchmark_instrumentation.h" 9 #include "cc/debug/benchmark_instrumentation.h"
10 #include "cc/output/context_provider.h" 10 #include "cc/output/context_provider.h"
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 331
332 void SingleThreadProxy::DidSwapBuffersCompleteOnImplThread() { 332 void SingleThreadProxy::DidSwapBuffersCompleteOnImplThread() {
333 TRACE_EVENT0("cc", "SingleThreadProxy::DidSwapBuffersCompleteOnImplThread"); 333 TRACE_EVENT0("cc", "SingleThreadProxy::DidSwapBuffersCompleteOnImplThread");
334 client_->DidCompleteSwapBuffers(); 334 client_->DidCompleteSwapBuffers();
335 } 335 }
336 336
337 // Called by the legacy scheduling path (e.g. where render_widget does the 337 // Called by the legacy scheduling path (e.g. where render_widget does the
338 // scheduling) 338 // scheduling)
339 void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { 339 void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) {
340 TRACE_EVENT0("cc", "SingleThreadProxy::CompositeImmediately"); 340 TRACE_EVENT0("cc", "SingleThreadProxy::CompositeImmediately");
341 DCHECK(Proxy::IsMainThread());
342
343 if (!layer_tree_host_->InitializeOutputSurfaceIfNeeded())
344 return;
345
346 layer_tree_host_->AnimateLayers(frame_begin_time);
347
348 if (PrioritizedResourceManager* contents_texture_manager =
349 layer_tree_host_->contents_texture_manager()) {
350 contents_texture_manager->UnlinkAndClearEvictedBackings();
351 contents_texture_manager->SetMaxMemoryLimitBytes(
352 layer_tree_host_impl_->memory_allocation_limit_bytes());
353 contents_texture_manager->SetExternalPriorityCutoff(
354 layer_tree_host_impl_->memory_allocation_priority_cutoff());
355 }
356
357 scoped_ptr<ResourceUpdateQueue> queue =
358 make_scoped_ptr(new ResourceUpdateQueue);
359 layer_tree_host_->UpdateLayers(queue.get());
360 layer_tree_host_->WillCommit();
361 DoCommit(queue.Pass());
362 layer_tree_host_->DidBeginMainFrame();
341 363
342 LayerTreeHostImpl::FrameData frame; 364 LayerTreeHostImpl::FrameData frame;
343 if (CommitAndComposite(frame_begin_time, &frame)) { 365 if (DoComposite(frame_begin_time, &frame)) {
344 { 366 {
345 DebugScopedSetMainThreadBlocked main_thread_blocked(this); 367 DebugScopedSetMainThreadBlocked main_thread_blocked(this);
346 DebugScopedSetImplThread impl(this); 368 DebugScopedSetImplThread impl(this);
347 369
348 // This CapturePostTasks should be destroyed before 370 // This CapturePostTasks should be destroyed before
349 // DidCommitAndDrawFrame() is called since that goes out to the embedder, 371 // DidCommitAndDrawFrame() is called since that goes out to the embedder,
350 // and we want the embedder to receive its callbacks before that. 372 // and we want the embedder to receive its callbacks before that.
351 // NOTE: This maintains consistent ordering with the ThreadProxy since 373 // NOTE: This maintains consistent ordering with the ThreadProxy since
352 // the DidCommitAndDrawFrame() must be post-tasked from the impl thread 374 // the DidCommitAndDrawFrame() must be post-tasked from the impl thread
353 // there as the main thread is not blocked, so any posted tasks inside 375 // there as the main thread is not blocked, so any posted tasks inside
(...skipping 23 matching lines...) Expand all
377 void SingleThreadProxy::ForceSerializeOnSwapBuffers() { 399 void SingleThreadProxy::ForceSerializeOnSwapBuffers() {
378 { 400 {
379 DebugScopedSetImplThread impl(this); 401 DebugScopedSetImplThread impl(this);
380 if (layer_tree_host_impl_->renderer()) { 402 if (layer_tree_host_impl_->renderer()) {
381 DCHECK(!layer_tree_host_->output_surface_lost()); 403 DCHECK(!layer_tree_host_->output_surface_lost());
382 layer_tree_host_impl_->renderer()->DoNoOp(); 404 layer_tree_host_impl_->renderer()->DoNoOp();
383 } 405 }
384 } 406 }
385 } 407 }
386 408
387 bool SingleThreadProxy::CommitAndComposite(
388 base::TimeTicks frame_begin_time,
389 LayerTreeHostImpl::FrameData* frame) {
390 TRACE_EVENT0("cc", "SingleThreadProxy::CommitAndComposite");
391 DCHECK(Proxy::IsMainThread());
392
393 if (!layer_tree_host_->InitializeOutputSurfaceIfNeeded())
394 return false;
395
396 layer_tree_host_->AnimateLayers(frame_begin_time);
397
398 if (PrioritizedResourceManager* contents_texture_manager =
399 layer_tree_host_->contents_texture_manager()) {
400 contents_texture_manager->UnlinkAndClearEvictedBackings();
401 contents_texture_manager->SetMaxMemoryLimitBytes(
402 layer_tree_host_impl_->memory_allocation_limit_bytes());
403 contents_texture_manager->SetExternalPriorityCutoff(
404 layer_tree_host_impl_->memory_allocation_priority_cutoff());
405 }
406
407 scoped_ptr<ResourceUpdateQueue> queue =
408 make_scoped_ptr(new ResourceUpdateQueue);
409 layer_tree_host_->UpdateLayers(queue.get());
410
411 layer_tree_host_->WillCommit();
412
413 DoCommit(queue.Pass());
414 bool result = DoComposite(frame_begin_time, frame);
415 layer_tree_host_->DidBeginMainFrame();
416 return result;
417 }
418
419 bool SingleThreadProxy::ShouldComposite() const { 409 bool SingleThreadProxy::ShouldComposite() const {
420 DCHECK(Proxy::IsImplThread()); 410 DCHECK(Proxy::IsImplThread());
421 return layer_tree_host_impl_->visible() && 411 return layer_tree_host_impl_->visible() &&
422 layer_tree_host_impl_->CanDraw(); 412 layer_tree_host_impl_->CanDraw();
423 } 413 }
424 414
425 void SingleThreadProxy::UpdateBackgroundAnimateTicking() { 415 void SingleThreadProxy::UpdateBackgroundAnimateTicking() {
426 DCHECK(Proxy::IsImplThread()); 416 DCHECK(Proxy::IsImplThread());
427 layer_tree_host_impl_->UpdateBackgroundAnimateTicking( 417 layer_tree_host_impl_->UpdateBackgroundAnimateTicking(
428 !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer()); 418 !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 void SingleThreadProxy::DidSwapFrame() { 466 void SingleThreadProxy::DidSwapFrame() {
477 if (next_frame_is_newly_committed_frame_) { 467 if (next_frame_is_newly_committed_frame_) {
478 next_frame_is_newly_committed_frame_ = false; 468 next_frame_is_newly_committed_frame_ = false;
479 layer_tree_host_->DidCommitAndDrawFrame(); 469 layer_tree_host_->DidCommitAndDrawFrame();
480 } 470 }
481 } 471 }
482 472
483 bool SingleThreadProxy::CommitPendingForTesting() { return false; } 473 bool SingleThreadProxy::CommitPendingForTesting() { return false; }
484 474
485 } // namespace cc 475 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698