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