| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/proxy_impl.h" | 5 #include "cc/trees/proxy_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 void ProxyImpl::SetBeginFrameSource(BeginFrameSource* source) { | 261 void ProxyImpl::SetBeginFrameSource(BeginFrameSource* source) { |
| 262 // During shutdown, destroying the CompositorFrameSink may unset the | 262 // During shutdown, destroying the CompositorFrameSink may unset the |
| 263 // BeginFrameSource. | 263 // BeginFrameSource. |
| 264 if (scheduler_) { | 264 if (scheduler_) { |
| 265 // TODO(enne): this overrides any preexisting begin frame source. Those | 265 // TODO(enne): this overrides any preexisting begin frame source. Those |
| 266 // other sources will eventually be removed and this will be the only path. | 266 // other sources will eventually be removed and this will be the only path. |
| 267 scheduler_->SetBeginFrameSource(source); | 267 scheduler_->SetBeginFrameSource(source); |
| 268 } | 268 } |
| 269 } | 269 } |
| 270 | 270 |
| 271 void ProxyImpl::DidSwapBuffersCompleteOnImplThread() { | 271 void ProxyImpl::DidReceiveCompositorFrameAckOnImplThread() { |
| 272 TRACE_EVENT0("cc,benchmark", "ProxyImpl::DidSwapBuffersCompleteOnImplThread"); | 272 TRACE_EVENT0("cc,benchmark", |
| 273 "ProxyImpl::DidReceiveCompositorFrameAckOnImplThread"); |
| 273 DCHECK(IsImplThread()); | 274 DCHECK(IsImplThread()); |
| 274 scheduler_->DidSwapBuffersComplete(); | 275 scheduler_->DidReceiveCompositorFrameAck(); |
| 275 channel_impl_->DidCompleteSwapBuffers(); | 276 channel_impl_->DidReceiveCompositorFrameAck(); |
| 276 } | 277 } |
| 277 | 278 |
| 278 void ProxyImpl::OnCanDrawStateChanged(bool can_draw) { | 279 void ProxyImpl::OnCanDrawStateChanged(bool can_draw) { |
| 279 TRACE_EVENT1("cc", "ProxyImpl::OnCanDrawStateChanged", "can_draw", can_draw); | 280 TRACE_EVENT1("cc", "ProxyImpl::OnCanDrawStateChanged", "can_draw", can_draw); |
| 280 DCHECK(IsImplThread()); | 281 DCHECK(IsImplThread()); |
| 281 scheduler_->SetCanDraw(can_draw); | 282 scheduler_->SetCanDraw(can_draw); |
| 282 } | 283 } |
| 283 | 284 |
| 284 void ProxyImpl::NotifyReadyToActivate() { | 285 void ProxyImpl::NotifyReadyToActivate() { |
| 285 TRACE_EVENT0("cc", "ProxyImpl::NotifyReadyToActivate"); | 286 TRACE_EVENT0("cc", "ProxyImpl::NotifyReadyToActivate"); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 begin_main_frame_state->begin_frame_callbacks = | 442 begin_main_frame_state->begin_frame_callbacks = |
| 442 layer_tree_host_impl_->ProcessLayerTreeMutations(); | 443 layer_tree_host_impl_->ProcessLayerTreeMutations(); |
| 443 begin_main_frame_state->scroll_info = | 444 begin_main_frame_state->scroll_info = |
| 444 layer_tree_host_impl_->ProcessScrollDeltas(); | 445 layer_tree_host_impl_->ProcessScrollDeltas(); |
| 445 begin_main_frame_state->evicted_ui_resources = | 446 begin_main_frame_state->evicted_ui_resources = |
| 446 layer_tree_host_impl_->EvictedUIResourcesExist(); | 447 layer_tree_host_impl_->EvictedUIResourcesExist(); |
| 447 channel_impl_->BeginMainFrame(std::move(begin_main_frame_state)); | 448 channel_impl_->BeginMainFrame(std::move(begin_main_frame_state)); |
| 448 devtools_instrumentation::DidRequestMainThreadFrame(layer_tree_host_id_); | 449 devtools_instrumentation::DidRequestMainThreadFrame(layer_tree_host_id_); |
| 449 } | 450 } |
| 450 | 451 |
| 451 DrawResult ProxyImpl::ScheduledActionDrawAndSwapIfPossible() { | 452 DrawResult ProxyImpl::ScheduledActionSubmitCompositorFrameIfPossible() { |
| 452 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionDrawAndSwap"); | 453 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionSubmitCompositorFrame"); |
| 453 DCHECK(IsImplThread()); | 454 DCHECK(IsImplThread()); |
| 454 | 455 |
| 455 // SchedulerStateMachine::DidDrawIfPossibleCompleted isn't set up to | 456 // SchedulerStateMachine::DidDrawIfPossibleCompleted isn't set up to |
| 456 // handle DRAW_ABORTED_CANT_DRAW. Moreover, the scheduler should | 457 // handle DRAW_ABORTED_CANT_DRAW. Moreover, the scheduler should |
| 457 // never generate this call when it can't draw. | 458 // never generate this call when it can't draw. |
| 458 DCHECK(layer_tree_host_impl_->CanDraw()); | 459 DCHECK(layer_tree_host_impl_->CanDraw()); |
| 459 | 460 |
| 460 bool forced_draw = false; | 461 bool forced_draw = false; |
| 461 return DrawAndSwapInternal(forced_draw); | 462 return SubmitCompositorFrameInternal(forced_draw); |
| 462 } | 463 } |
| 463 | 464 |
| 464 DrawResult ProxyImpl::ScheduledActionDrawAndSwapForced() { | 465 DrawResult ProxyImpl::ScheduledActionSubmitCompositorFrameForced() { |
| 465 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionDrawAndSwapForced"); | 466 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionSubmitCompositorFrameForced"); |
| 466 DCHECK(IsImplThread()); | 467 DCHECK(IsImplThread()); |
| 467 bool forced_draw = true; | 468 bool forced_draw = true; |
| 468 return DrawAndSwapInternal(forced_draw); | 469 return SubmitCompositorFrameInternal(forced_draw); |
| 469 } | 470 } |
| 470 | 471 |
| 471 void ProxyImpl::ScheduledActionCommit() { | 472 void ProxyImpl::ScheduledActionCommit() { |
| 472 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionCommit"); | 473 TRACE_EVENT0("cc", "ProxyImpl::ScheduledActionCommit"); |
| 473 DCHECK(IsImplThread()); | 474 DCHECK(IsImplThread()); |
| 474 DCHECK(IsMainThreadBlocked()); | 475 DCHECK(IsMainThreadBlocked()); |
| 475 DCHECK(commit_completion_event_); | 476 DCHECK(commit_completion_event_); |
| 476 | 477 |
| 477 layer_tree_host_impl_->BeginCommit(); | 478 layer_tree_host_impl_->BeginCommit(); |
| 478 blocked_main_commit().layer_tree_host->FinishCommitOnImplThread( | 479 blocked_main_commit().layer_tree_host->FinishCommitOnImplThread( |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 DCHECK(IsImplThread()); | 532 DCHECK(IsImplThread()); |
| 532 DCHECK(layer_tree_host_impl_->compositor_frame_sink()); | 533 DCHECK(layer_tree_host_impl_->compositor_frame_sink()); |
| 533 layer_tree_host_impl_->compositor_frame_sink()->Invalidate(); | 534 layer_tree_host_impl_->compositor_frame_sink()->Invalidate(); |
| 534 } | 535 } |
| 535 | 536 |
| 536 void ProxyImpl::SendBeginMainFrameNotExpectedSoon() { | 537 void ProxyImpl::SendBeginMainFrameNotExpectedSoon() { |
| 537 DCHECK(IsImplThread()); | 538 DCHECK(IsImplThread()); |
| 538 channel_impl_->BeginMainFrameNotExpectedSoon(); | 539 channel_impl_->BeginMainFrameNotExpectedSoon(); |
| 539 } | 540 } |
| 540 | 541 |
| 541 DrawResult ProxyImpl::DrawAndSwapInternal(bool forced_draw) { | 542 DrawResult ProxyImpl::SubmitCompositorFrameInternal(bool forced_draw) { |
| 542 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap"); | 543 TRACE_EVENT_SYNTHETIC_DELAY("cc.SubmitCompositorFrame"); |
| 543 | 544 |
| 544 DCHECK(IsImplThread()); | 545 DCHECK(IsImplThread()); |
| 545 DCHECK(layer_tree_host_impl_.get()); | 546 DCHECK(layer_tree_host_impl_.get()); |
| 546 | 547 |
| 547 base::AutoReset<bool> mark_inside(&inside_draw_, true); | 548 base::AutoReset<bool> mark_inside(&inside_draw_, true); |
| 548 | 549 |
| 549 if (layer_tree_host_impl_->pending_tree()) { | 550 if (layer_tree_host_impl_->pending_tree()) { |
| 550 bool update_lcd_text = false; | 551 bool update_lcd_text = false; |
| 551 layer_tree_host_impl_->pending_tree()->UpdateDrawProperties( | 552 layer_tree_host_impl_->pending_tree()->UpdateDrawProperties( |
| 552 update_lcd_text); | 553 update_lcd_text); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 569 DrawResult result; | 570 DrawResult result; |
| 570 if (layer_tree_host_impl_->CanDraw()) { | 571 if (layer_tree_host_impl_->CanDraw()) { |
| 571 result = layer_tree_host_impl_->PrepareToDraw(&frame); | 572 result = layer_tree_host_impl_->PrepareToDraw(&frame); |
| 572 draw_frame = forced_draw || result == DRAW_SUCCESS; | 573 draw_frame = forced_draw || result == DRAW_SUCCESS; |
| 573 } else { | 574 } else { |
| 574 result = DRAW_ABORTED_CANT_DRAW; | 575 result = DRAW_ABORTED_CANT_DRAW; |
| 575 } | 576 } |
| 576 | 577 |
| 577 if (draw_frame) { | 578 if (draw_frame) { |
| 578 if (layer_tree_host_impl_->DrawLayers(&frame)) | 579 if (layer_tree_host_impl_->DrawLayers(&frame)) |
| 579 scheduler_->DidSwapBuffers(); | 580 scheduler_->DidSubmitCompositorFrame(); |
| 580 result = DRAW_SUCCESS; | 581 result = DRAW_SUCCESS; |
| 581 } else { | 582 } else { |
| 582 DCHECK_NE(DRAW_SUCCESS, result); | 583 DCHECK_NE(DRAW_SUCCESS, result); |
| 583 } | 584 } |
| 584 | 585 |
| 585 layer_tree_host_impl_->DidDrawAllLayers(frame); | 586 layer_tree_host_impl_->DidDrawAllLayers(frame); |
| 586 | 587 |
| 587 bool start_ready_animations = draw_frame; | 588 bool start_ready_animations = draw_frame; |
| 588 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); | 589 layer_tree_host_impl_->UpdateAnimationState(start_ready_animations); |
| 589 | 590 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 604 bool ProxyImpl::IsMainThreadBlocked() const { | 605 bool ProxyImpl::IsMainThreadBlocked() const { |
| 605 return task_runner_provider_->IsMainThreadBlocked(); | 606 return task_runner_provider_->IsMainThreadBlocked(); |
| 606 } | 607 } |
| 607 | 608 |
| 608 ProxyImpl::BlockedMainCommitOnly& ProxyImpl::blocked_main_commit() { | 609 ProxyImpl::BlockedMainCommitOnly& ProxyImpl::blocked_main_commit() { |
| 609 DCHECK(IsMainThreadBlocked() && commit_completion_event_); | 610 DCHECK(IsMainThreadBlocked() && commit_completion_event_); |
| 610 return main_thread_blocked_commit_vars_unsafe_; | 611 return main_thread_blocked_commit_vars_unsafe_; |
| 611 } | 612 } |
| 612 | 613 |
| 613 } // namespace cc | 614 } // namespace cc |
| OLD | NEW |