| OLD | NEW |
| 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 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 DebugScopedSetImplThread impl(this); | 401 DebugScopedSetImplThread impl(this); |
| 402 if (layer_tree_host_impl_->renderer()) { | 402 if (layer_tree_host_impl_->renderer()) { |
| 403 DCHECK(!layer_tree_host_->output_surface_lost()); | 403 DCHECK(!layer_tree_host_->output_surface_lost()); |
| 404 layer_tree_host_impl_->renderer()->DoNoOp(); | 404 layer_tree_host_impl_->renderer()->DoNoOp(); |
| 405 } | 405 } |
| 406 } | 406 } |
| 407 } | 407 } |
| 408 | 408 |
| 409 bool SingleThreadProxy::ShouldComposite() const { | 409 bool SingleThreadProxy::ShouldComposite() const { |
| 410 DCHECK(Proxy::IsImplThread()); | 410 DCHECK(Proxy::IsImplThread()); |
| 411 DLOG(INFO) << layer_tree_host_impl_->visible() << ", " << layer_tree_host_impl
_->CanDraw(); |
| 411 return layer_tree_host_impl_->visible() && | 412 return layer_tree_host_impl_->visible() && |
| 412 layer_tree_host_impl_->CanDraw(); | 413 layer_tree_host_impl_->CanDraw(); |
| 413 } | 414 } |
| 414 | 415 |
| 415 void SingleThreadProxy::UpdateBackgroundAnimateTicking() { | 416 void SingleThreadProxy::UpdateBackgroundAnimateTicking() { |
| 416 DCHECK(Proxy::IsImplThread()); | 417 DCHECK(Proxy::IsImplThread()); |
| 417 layer_tree_host_impl_->UpdateBackgroundAnimateTicking( | 418 layer_tree_host_impl_->UpdateBackgroundAnimateTicking( |
| 418 !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer()); | 419 !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer()); |
| 419 } | 420 } |
| 420 | 421 |
| 421 bool SingleThreadProxy::DoComposite( | 422 bool SingleThreadProxy::DoComposite( |
| 422 base::TimeTicks frame_begin_time, | 423 base::TimeTicks frame_begin_time, |
| 423 LayerTreeHostImpl::FrameData* frame) { | 424 LayerTreeHostImpl::FrameData* frame) { |
| 425 DLOG(INFO) << "DoComposite"; |
| 424 TRACE_EVENT0("cc", "SingleThreadProxy::DoComposite"); | 426 TRACE_EVENT0("cc", "SingleThreadProxy::DoComposite"); |
| 425 DCHECK(!layer_tree_host_->output_surface_lost()); | 427 DCHECK(!layer_tree_host_->output_surface_lost()); |
| 426 | 428 |
| 427 bool lost_output_surface = false; | 429 bool lost_output_surface = false; |
| 428 { | 430 { |
| 429 DebugScopedSetImplThread impl(this); | 431 DebugScopedSetImplThread impl(this); |
| 430 base::AutoReset<bool> mark_inside(&inside_draw_, true); | 432 base::AutoReset<bool> mark_inside(&inside_draw_, true); |
| 431 | 433 |
| 432 // We guard PrepareToDraw() with CanDraw() because it always returns a valid | 434 // We guard PrepareToDraw() with CanDraw() because it always returns a valid |
| 433 // frame, so can only be used when such a frame is possible. Since | 435 // frame, so can only be used when such a frame is possible. Since |
| 434 // DrawLayers() depends on the result of PrepareToDraw(), it is guarded on | 436 // DrawLayers() depends on the result of PrepareToDraw(), it is guarded on |
| 435 // CanDraw() as well. | 437 // CanDraw() as well. |
| 436 if (!ShouldComposite()) { | 438 if (!ShouldComposite()) { |
| 437 UpdateBackgroundAnimateTicking(); | 439 UpdateBackgroundAnimateTicking(); |
| 440 DLOG(INFO) << "ShouldComposite = false"; |
| 438 return false; | 441 return false; |
| 439 } | 442 } |
| 440 | 443 |
| 441 layer_tree_host_impl_->Animate( | 444 layer_tree_host_impl_->Animate( |
| 442 layer_tree_host_impl_->CurrentFrameTimeTicks()); | 445 layer_tree_host_impl_->CurrentFrameTimeTicks()); |
| 443 UpdateBackgroundAnimateTicking(); | 446 UpdateBackgroundAnimateTicking(); |
| 444 | 447 |
| 445 if (!layer_tree_host_impl_->IsContextLost()) { | 448 if (!layer_tree_host_impl_->IsContextLost()) { |
| 446 layer_tree_host_impl_->PrepareToDraw(frame); | 449 layer_tree_host_impl_->PrepareToDraw(frame); |
| 447 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); | 450 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 466 void SingleThreadProxy::DidSwapFrame() { | 469 void SingleThreadProxy::DidSwapFrame() { |
| 467 if (next_frame_is_newly_committed_frame_) { | 470 if (next_frame_is_newly_committed_frame_) { |
| 468 next_frame_is_newly_committed_frame_ = false; | 471 next_frame_is_newly_committed_frame_ = false; |
| 469 layer_tree_host_->DidCommitAndDrawFrame(); | 472 layer_tree_host_->DidCommitAndDrawFrame(); |
| 470 } | 473 } |
| 471 } | 474 } |
| 472 | 475 |
| 473 bool SingleThreadProxy::CommitPendingForTesting() { return false; } | 476 bool SingleThreadProxy::CommitPendingForTesting() { return false; } |
| 474 | 477 |
| 475 } // namespace cc | 478 } // namespace cc |
| OLD | NEW |