| 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 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 UpdateBackgroundAnimateTicking(); | 502 UpdateBackgroundAnimateTicking(); |
| 503 return DRAW_ABORTED_CANT_DRAW; | 503 return DRAW_ABORTED_CANT_DRAW; |
| 504 } | 504 } |
| 505 | 505 |
| 506 timing_history_.DidStartDrawing(); | 506 timing_history_.DidStartDrawing(); |
| 507 | 507 |
| 508 layer_tree_host_impl_->Animate( | 508 layer_tree_host_impl_->Animate( |
| 509 layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time); | 509 layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time); |
| 510 UpdateBackgroundAnimateTicking(); | 510 UpdateBackgroundAnimateTicking(); |
| 511 | 511 |
| 512 if (!layer_tree_host_impl_->IsContextLost()) { | 512 layer_tree_host_impl_->PrepareToDraw(frame); |
| 513 layer_tree_host_impl_->PrepareToDraw(frame); | 513 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); |
| 514 layer_tree_host_impl_->DrawLayers(frame, frame_begin_time); | 514 layer_tree_host_impl_->DidDrawAllLayers(*frame); |
| 515 layer_tree_host_impl_->DidDrawAllLayers(*frame); | |
| 516 } | |
| 517 | 515 |
| 518 bool start_ready_animations = true; | 516 bool start_ready_animations = true; |
| 519 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); | 517 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); |
| 520 | 518 |
| 521 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); | 519 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); |
| 522 | 520 |
| 523 timing_history_.DidFinishDrawing(); | 521 timing_history_.DidFinishDrawing(); |
| 524 } | 522 } |
| 525 | 523 |
| 526 { | 524 { |
| 527 DebugScopedSetImplThread impl(this); | 525 DebugScopedSetImplThread impl(this); |
| 528 | 526 |
| 529 if (layer_tree_host_impl_->IsContextLost()) { | 527 // This CapturePostTasks should be destroyed before |
| 530 DidLoseOutputSurfaceOnImplThread(); | 528 // DidCommitAndDrawFrame() is called since that goes out to the |
| 531 } else { | 529 // embedder, |
| 532 // This CapturePostTasks should be destroyed before | 530 // and we want the embedder to receive its callbacks before that. |
| 533 // DidCommitAndDrawFrame() is called since that goes out to the | 531 // NOTE: This maintains consistent ordering with the ThreadProxy since |
| 534 // embedder, | 532 // the DidCommitAndDrawFrame() must be post-tasked from the impl thread |
| 535 // and we want the embedder to receive its callbacks before that. | 533 // there as the main thread is not blocked, so any posted tasks inside |
| 536 // NOTE: This maintains consistent ordering with the ThreadProxy since | 534 // the swap buffers will execute first. |
| 537 // the DidCommitAndDrawFrame() must be post-tasked from the impl thread | 535 DebugScopedSetMainThreadBlocked main_thread_blocked(this); |
| 538 // there as the main thread is not blocked, so any posted tasks inside | |
| 539 // the swap buffers will execute first. | |
| 540 DebugScopedSetMainThreadBlocked main_thread_blocked(this); | |
| 541 | 536 |
| 542 BlockingTaskRunner::CapturePostTasks blocked; | 537 BlockingTaskRunner::CapturePostTasks blocked; |
| 543 layer_tree_host_impl_->SwapBuffers(*frame); | 538 layer_tree_host_impl_->SwapBuffers(*frame); |
| 544 } | |
| 545 } | 539 } |
| 546 DidCommitAndDrawFrame(); | 540 DidCommitAndDrawFrame(); |
| 547 | 541 |
| 548 return DRAW_SUCCESS; | 542 return DRAW_SUCCESS; |
| 549 } | 543 } |
| 550 | 544 |
| 551 void SingleThreadProxy::DidCommitAndDrawFrame() { | 545 void SingleThreadProxy::DidCommitAndDrawFrame() { |
| 552 if (next_frame_is_newly_committed_frame_) { | 546 if (next_frame_is_newly_committed_frame_) { |
| 553 DebugScopedSetMainThread main(this); | 547 DebugScopedSetMainThread main(this); |
| 554 next_frame_is_newly_committed_frame_ = false; | 548 next_frame_is_newly_committed_frame_ = false; |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 | 615 |
| 622 // TODO(enne): SingleThreadProxy does not support cancelling commits yet so | 616 // TODO(enne): SingleThreadProxy does not support cancelling commits yet so |
| 623 // did_handle is always false. | 617 // did_handle is always false. |
| 624 bool did_handle = false; | 618 bool did_handle = false; |
| 625 layer_tree_host_impl_->BeginMainFrameAborted(did_handle); | 619 layer_tree_host_impl_->BeginMainFrameAborted(did_handle); |
| 626 scheduler_on_impl_thread_->BeginMainFrameAborted(did_handle); | 620 scheduler_on_impl_thread_->BeginMainFrameAborted(did_handle); |
| 627 } | 621 } |
| 628 | 622 |
| 629 DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible() { | 623 DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible() { |
| 630 DebugScopedSetImplThread impl(this); | 624 DebugScopedSetImplThread impl(this); |
| 631 if (layer_tree_host_impl_->IsContextLost()) { | |
| 632 DidCommitAndDrawFrame(); | |
| 633 return DRAW_SUCCESS; | |
| 634 } | |
| 635 | |
| 636 LayerTreeHostImpl::FrameData frame; | 625 LayerTreeHostImpl::FrameData frame; |
| 637 return DoComposite(layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time, | 626 return DoComposite(layer_tree_host_impl_->CurrentBeginFrameArgs().frame_time, |
| 638 &frame); | 627 &frame); |
| 639 } | 628 } |
| 640 | 629 |
| 641 DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapForced() { | 630 DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapForced() { |
| 642 NOTREACHED(); | 631 NOTREACHED(); |
| 643 return INVALID_RESULT; | 632 return INVALID_RESULT; |
| 644 } | 633 } |
| 645 | 634 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 | 686 |
| 698 base::TimeDelta SingleThreadProxy::CommitToActivateDurationEstimate() { | 687 base::TimeDelta SingleThreadProxy::CommitToActivateDurationEstimate() { |
| 699 return timing_history_.CommitToActivateDurationEstimate(); | 688 return timing_history_.CommitToActivateDurationEstimate(); |
| 700 } | 689 } |
| 701 | 690 |
| 702 void SingleThreadProxy::DidBeginImplFrameDeadline() { | 691 void SingleThreadProxy::DidBeginImplFrameDeadline() { |
| 703 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); | 692 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); |
| 704 } | 693 } |
| 705 | 694 |
| 706 } // namespace cc | 695 } // namespace cc |
| OLD | NEW |