Chromium Code Reviews| 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 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 487 // RequestNewOutputSurface could have synchronously created an output | 487 // RequestNewOutputSurface could have synchronously created an output |
| 488 // surface, so check again before returning. | 488 // surface, so check again before returning. |
| 489 if (layer_tree_host_->output_surface_lost()) | 489 if (layer_tree_host_->output_surface_lost()) |
| 490 return; | 490 return; |
| 491 } | 491 } |
| 492 | 492 |
| 493 { | 493 { |
| 494 BeginFrameArgs begin_frame_args(BeginFrameArgs::Create( | 494 BeginFrameArgs begin_frame_args(BeginFrameArgs::Create( |
| 495 BEGINFRAME_FROM_HERE, frame_begin_time, base::TimeTicks(), | 495 BEGINFRAME_FROM_HERE, frame_begin_time, base::TimeTicks(), |
| 496 BeginFrameArgs::DefaultInterval(), BeginFrameArgs::SYNCHRONOUS)); | 496 BeginFrameArgs::DefaultInterval(), BeginFrameArgs::SYNCHRONOUS)); |
| 497 layer_tree_host_impl_->UpdateCurrentBeginFrameArgs(begin_frame_args); | |
| 497 DoBeginMainFrame(begin_frame_args); | 498 DoBeginMainFrame(begin_frame_args); |
| 498 DoCommit(); | 499 DoCommit(); |
| 499 | 500 |
| 500 DCHECK_EQ(0u, layer_tree_host_->num_queued_swap_promises()) | 501 DCHECK_EQ(0u, layer_tree_host_->num_queued_swap_promises()) |
| 501 << "Commit should always succeed and transfer promises."; | 502 << "Commit should always succeed and transfer promises."; |
| 502 } | 503 } |
| 503 | 504 |
| 504 { | 505 { |
| 505 DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this)); | 506 DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this)); |
| 506 if (layer_tree_host_impl_->settings().impl_side_painting) { | 507 if (layer_tree_host_impl_->settings().impl_side_painting) { |
| 507 layer_tree_host_impl_->ActivateSyncTree(); | 508 layer_tree_host_impl_->ActivateSyncTree(); |
| 508 layer_tree_host_impl_->active_tree()->UpdateDrawProperties(); | 509 layer_tree_host_impl_->active_tree()->UpdateDrawProperties(); |
| 509 layer_tree_host_impl_->PrepareTiles(); | 510 layer_tree_host_impl_->PrepareTiles(); |
| 510 layer_tree_host_impl_->SynchronouslyInitializeAllTiles(); | 511 layer_tree_host_impl_->SynchronouslyInitializeAllTiles(); |
| 511 } | 512 } |
| 512 | 513 |
| 513 DoAnimate(); | 514 DoAnimate(); |
| 514 | 515 |
| 515 LayerTreeHostImpl::FrameData frame; | 516 LayerTreeHostImpl::FrameData frame; |
| 516 DoComposite(frame_begin_time, &frame); | 517 DoComposite(frame_begin_time, &frame); |
| 517 | 518 |
| 518 // DoComposite could abort, but because this is a synchronous composite | 519 // DoComposite could abort, but because this is a synchronous composite |
| 519 // another draw will never be scheduled, so break remaining promises. | 520 // another draw will never be scheduled, so break remaining promises. |
| 520 layer_tree_host_impl_->active_tree()->BreakSwapPromises( | 521 layer_tree_host_impl_->active_tree()->BreakSwapPromises( |
| 521 SwapPromise::SWAP_FAILS); | 522 SwapPromise::SWAP_FAILS); |
| 523 | |
| 524 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); | |
| 522 } | 525 } |
| 523 } | 526 } |
| 524 | 527 |
| 525 void SingleThreadProxy::AsValueInto(base::debug::TracedValue* state) const { | 528 void SingleThreadProxy::AsValueInto(base::debug::TracedValue* state) const { |
| 526 // The following line casts away const modifiers because it is just | 529 // The following line casts away const modifiers because it is just |
| 527 // setting debug state. We still want the AsValue() function and its | 530 // setting debug state. We still want the AsValue() function and its |
| 528 // call chain to be const throughout. | 531 // call chain to be const throughout. |
| 529 DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this)); | 532 DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this)); |
| 530 | 533 |
| 531 state->BeginDictionary("layer_tree_host_impl"); | 534 state->BeginDictionary("layer_tree_host_impl"); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 timing_history_.DidStartDrawing(); | 589 timing_history_.DidStartDrawing(); |
| 587 | 590 |
| 588 draw_result = layer_tree_host_impl_->PrepareToDraw(frame); | 591 draw_result = layer_tree_host_impl_->PrepareToDraw(frame); |
| 589 draw_frame = draw_result == DRAW_SUCCESS; | 592 draw_frame = draw_result == DRAW_SUCCESS; |
| 590 if (draw_frame) | 593 if (draw_frame) |
| 591 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); | 594 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); |
| 592 layer_tree_host_impl_->DidDrawAllLayers(*frame); | 595 layer_tree_host_impl_->DidDrawAllLayers(*frame); |
| 593 | 596 |
| 594 bool start_ready_animations = draw_frame; | 597 bool start_ready_animations = draw_frame; |
| 595 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); | 598 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); |
| 596 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); | |
|
brianderson
2014/12/18 02:01:38
Why does this need to move?
mithro-old
2014/12/18 17:22:41
Because it's currently in the wrong place as code
| |
| 597 | 599 |
| 598 timing_history_.DidFinishDrawing(); | 600 timing_history_.DidFinishDrawing(); |
| 599 } | 601 } |
| 600 | 602 |
| 601 if (draw_frame) { | 603 if (draw_frame) { |
| 602 DebugScopedSetImplThread impl(this); | 604 DebugScopedSetImplThread impl(this); |
| 603 | 605 |
| 604 // This CapturePostTasks should be destroyed before | 606 // This CapturePostTasks should be destroyed before |
| 605 // DidCommitAndDrawFrame() is called since that goes out to the | 607 // DidCommitAndDrawFrame() is called since that goes out to the |
| 606 // embedder, | 608 // embedder, |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 794 | 796 |
| 795 void SingleThreadProxy::DidBeginImplFrameDeadline() { | 797 void SingleThreadProxy::DidBeginImplFrameDeadline() { |
| 796 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); | 798 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); |
| 797 } | 799 } |
| 798 | 800 |
| 799 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) { | 801 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) { |
| 800 layer_tree_host_->SendBeginFramesToChildren(args); | 802 layer_tree_host_->SendBeginFramesToChildren(args); |
| 801 } | 803 } |
| 802 | 804 |
| 803 } // namespace cc | 805 } // namespace cc |
| OLD | NEW |