Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Side by Side Diff: cc/trees/proxy_impl.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/proxy_impl.h ('k') | cc/trees/proxy_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 #include "base/memory/ptr_util.h"
11 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
12 #include "base/trace_event/trace_event_argument.h" 13 #include "base/trace_event/trace_event_argument.h"
13 #include "base/trace_event/trace_event_synthetic_delay.h" 14 #include "base/trace_event/trace_event_synthetic_delay.h"
14 #include "cc/animation/animation_events.h" 15 #include "cc/animation/animation_events.h"
15 #include "cc/debug/benchmark_instrumentation.h" 16 #include "cc/debug/benchmark_instrumentation.h"
16 #include "cc/debug/devtools_instrumentation.h" 17 #include "cc/debug/devtools_instrumentation.h"
17 #include "cc/input/top_controls_manager.h" 18 #include "cc/input/top_controls_manager.h"
18 #include "cc/output/context_provider.h" 19 #include "cc/output/context_provider.h"
19 #include "cc/output/output_surface.h" 20 #include "cc/output/output_surface.h"
20 #include "cc/scheduler/compositor_timing_history.h" 21 #include "cc/scheduler/compositor_timing_history.h"
21 #include "cc/trees/layer_tree_host.h" 22 #include "cc/trees/layer_tree_host.h"
22 #include "cc/trees/layer_tree_impl.h" 23 #include "cc/trees/layer_tree_impl.h"
23 #include "cc/trees/task_runner_provider.h" 24 #include "cc/trees/task_runner_provider.h"
24 #include "gpu/command_buffer/client/gles2_interface.h" 25 #include "gpu/command_buffer/client/gles2_interface.h"
25 26
26 namespace cc { 27 namespace cc {
27 28
28 namespace { 29 namespace {
29 30
30 // Measured in seconds. 31 // Measured in seconds.
31 const double kSmoothnessTakesPriorityExpirationDelay = 0.25; 32 const double kSmoothnessTakesPriorityExpirationDelay = 0.25;
32 33
33 unsigned int nextBeginFrameId = 0; 34 unsigned int nextBeginFrameId = 0;
34 35
35 } // namespace 36 } // namespace
36 37
37 scoped_ptr<ProxyImpl> ProxyImpl::Create( 38 std::unique_ptr<ProxyImpl> ProxyImpl::Create(
38 ChannelImpl* channel_impl, 39 ChannelImpl* channel_impl,
39 LayerTreeHost* layer_tree_host, 40 LayerTreeHost* layer_tree_host,
40 TaskRunnerProvider* task_runner_provider, 41 TaskRunnerProvider* task_runner_provider,
41 scoped_ptr<BeginFrameSource> external_begin_frame_source) { 42 std::unique_ptr<BeginFrameSource> external_begin_frame_source) {
42 return make_scoped_ptr(new ProxyImpl(channel_impl, layer_tree_host, 43 return base::WrapUnique(
43 task_runner_provider, 44 new ProxyImpl(channel_impl, layer_tree_host, task_runner_provider,
44 std::move(external_begin_frame_source))); 45 std::move(external_begin_frame_source)));
45 } 46 }
46 47
47 ProxyImpl::ProxyImpl(ChannelImpl* channel_impl, 48 ProxyImpl::ProxyImpl(
48 LayerTreeHost* layer_tree_host, 49 ChannelImpl* channel_impl,
49 TaskRunnerProvider* task_runner_provider, 50 LayerTreeHost* layer_tree_host,
50 scoped_ptr<BeginFrameSource> external_begin_frame_source) 51 TaskRunnerProvider* task_runner_provider,
52 std::unique_ptr<BeginFrameSource> external_begin_frame_source)
51 : layer_tree_host_id_(layer_tree_host->id()), 53 : layer_tree_host_id_(layer_tree_host->id()),
52 next_commit_waits_for_activation_(false), 54 next_commit_waits_for_activation_(false),
53 commit_completion_event_(nullptr), 55 commit_completion_event_(nullptr),
54 next_frame_is_newly_committed_frame_(false), 56 next_frame_is_newly_committed_frame_(false),
55 inside_draw_(false), 57 inside_draw_(false),
56 input_throttled_until_commit_(false), 58 input_throttled_until_commit_(false),
57 task_runner_provider_(task_runner_provider), 59 task_runner_provider_(task_runner_provider),
58 smoothness_priority_expiration_notifier_( 60 smoothness_priority_expiration_notifier_(
59 task_runner_provider->ImplThreadTaskRunner(), 61 task_runner_provider->ImplThreadTaskRunner(),
60 base::Bind(&ProxyImpl::RenewTreePriority, base::Unretained(this)), 62 base::Bind(&ProxyImpl::RenewTreePriority, base::Unretained(this)),
61 base::TimeDelta::FromSecondsD( 63 base::TimeDelta::FromSecondsD(
62 kSmoothnessTakesPriorityExpirationDelay)), 64 kSmoothnessTakesPriorityExpirationDelay)),
63 external_begin_frame_source_(std::move(external_begin_frame_source)), 65 external_begin_frame_source_(std::move(external_begin_frame_source)),
64 rendering_stats_instrumentation_( 66 rendering_stats_instrumentation_(
65 layer_tree_host->rendering_stats_instrumentation()), 67 layer_tree_host->rendering_stats_instrumentation()),
66 channel_impl_(channel_impl) { 68 channel_impl_(channel_impl) {
67 TRACE_EVENT0("cc", "ProxyImpl::ProxyImpl"); 69 TRACE_EVENT0("cc", "ProxyImpl::ProxyImpl");
68 DCHECK(IsImplThread()); 70 DCHECK(IsImplThread());
69 DCHECK(IsMainThreadBlocked()); 71 DCHECK(IsMainThreadBlocked());
70 72
71 layer_tree_host_impl_ = layer_tree_host->CreateLayerTreeHostImpl(this); 73 layer_tree_host_impl_ = layer_tree_host->CreateLayerTreeHostImpl(this);
72 74
73 SchedulerSettings scheduler_settings( 75 SchedulerSettings scheduler_settings(
74 layer_tree_host->settings().ToSchedulerSettings()); 76 layer_tree_host->settings().ToSchedulerSettings());
75 77
76 scoped_ptr<CompositorTimingHistory> compositor_timing_history( 78 std::unique_ptr<CompositorTimingHistory> compositor_timing_history(
77 new CompositorTimingHistory( 79 new CompositorTimingHistory(
78 scheduler_settings.using_synchronous_renderer_compositor, 80 scheduler_settings.using_synchronous_renderer_compositor,
79 CompositorTimingHistory::RENDERER_UMA, 81 CompositorTimingHistory::RENDERER_UMA,
80 rendering_stats_instrumentation_)); 82 rendering_stats_instrumentation_));
81 83
82 BeginFrameSource* frame_source = external_begin_frame_source_.get(); 84 BeginFrameSource* frame_source = external_begin_frame_source_.get();
83 if (!scheduler_settings.throttle_frame_production) { 85 if (!scheduler_settings.throttle_frame_production) {
84 // Unthrottled source takes precedence over external sources. 86 // Unthrottled source takes precedence over external sources.
85 unthrottled_begin_frame_source_.reset(new BackToBackBeginFrameSource( 87 unthrottled_begin_frame_source_.reset(new BackToBackBeginFrameSource(
86 task_runner_provider_->ImplThreadTaskRunner())); 88 task_runner_provider_->ImplThreadTaskRunner()));
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 void ProxyImpl::SetVideoNeedsBeginFrames(bool needs_begin_frames) { 370 void ProxyImpl::SetVideoNeedsBeginFrames(bool needs_begin_frames) {
369 TRACE_EVENT1("cc", "ProxyImpl::SetVideoNeedsBeginFrames", 371 TRACE_EVENT1("cc", "ProxyImpl::SetVideoNeedsBeginFrames",
370 "needs_begin_frames", needs_begin_frames); 372 "needs_begin_frames", needs_begin_frames);
371 DCHECK(IsImplThread()); 373 DCHECK(IsImplThread());
372 // In tests the layer tree is destroyed after the scheduler is. 374 // In tests the layer tree is destroyed after the scheduler is.
373 if (scheduler_) 375 if (scheduler_)
374 scheduler_->SetVideoNeedsBeginFrames(needs_begin_frames); 376 scheduler_->SetVideoNeedsBeginFrames(needs_begin_frames);
375 } 377 }
376 378
377 void ProxyImpl::PostAnimationEventsToMainThreadOnImplThread( 379 void ProxyImpl::PostAnimationEventsToMainThreadOnImplThread(
378 scoped_ptr<AnimationEvents> events) { 380 std::unique_ptr<AnimationEvents> events) {
379 TRACE_EVENT0("cc", "ProxyImpl::PostAnimationEventsToMainThreadOnImplThread"); 381 TRACE_EVENT0("cc", "ProxyImpl::PostAnimationEventsToMainThreadOnImplThread");
380 DCHECK(IsImplThread()); 382 DCHECK(IsImplThread());
381 channel_impl_->SetAnimationEvents(std::move(events)); 383 channel_impl_->SetAnimationEvents(std::move(events));
382 } 384 }
383 385
384 bool ProxyImpl::IsInsideDraw() { 386 bool ProxyImpl::IsInsideDraw() {
385 return inside_draw_; 387 return inside_draw_;
386 } 388 }
387 389
388 void ProxyImpl::RenewTreePriority() { 390 void ProxyImpl::RenewTreePriority() {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 DCHECK(IsImplThread()); 468 DCHECK(IsImplThread());
467 channel_impl_->DidCompletePageScaleAnimation(); 469 channel_impl_->DidCompletePageScaleAnimation();
468 } 470 }
469 471
470 void ProxyImpl::OnDrawForOutputSurface(bool resourceless_software_draw) { 472 void ProxyImpl::OnDrawForOutputSurface(bool resourceless_software_draw) {
471 DCHECK(IsImplThread()); 473 DCHECK(IsImplThread());
472 scheduler_->OnDrawForOutputSurface(resourceless_software_draw); 474 scheduler_->OnDrawForOutputSurface(resourceless_software_draw);
473 } 475 }
474 476
475 void ProxyImpl::PostFrameTimingEventsOnImplThread( 477 void ProxyImpl::PostFrameTimingEventsOnImplThread(
476 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, 478 std::unique_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
477 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) { 479 std::unique_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) {
478 DCHECK(IsImplThread()); 480 DCHECK(IsImplThread());
479 channel_impl_->PostFrameTimingEventsOnMain(std::move(composite_events), 481 channel_impl_->PostFrameTimingEventsOnMain(std::move(composite_events),
480 std::move(main_frame_events)); 482 std::move(main_frame_events));
481 } 483 }
482 484
483 void ProxyImpl::WillBeginImplFrame(const BeginFrameArgs& args) { 485 void ProxyImpl::WillBeginImplFrame(const BeginFrameArgs& args) {
484 DCHECK(IsImplThread()); 486 DCHECK(IsImplThread());
485 layer_tree_host_impl_->WillBeginImplFrame(args); 487 layer_tree_host_impl_->WillBeginImplFrame(args);
486 if (last_processed_begin_main_frame_args_.IsValid()) { 488 if (last_processed_begin_main_frame_args_.IsValid()) {
487 // Last processed begin main frame args records the frame args that we sent 489 // Last processed begin main frame args records the frame args that we sent
488 // to the main thread for the last frame that we've processed. If that is 490 // to the main thread for the last frame that we've processed. If that is
489 // set, that means the current frame is one past the frame in which we've 491 // set, that means the current frame is one past the frame in which we've
490 // finished the processing. 492 // finished the processing.
491 layer_tree_host_impl_->RecordMainFrameTiming( 493 layer_tree_host_impl_->RecordMainFrameTiming(
492 last_processed_begin_main_frame_args_, args); 494 last_processed_begin_main_frame_args_, args);
493 last_processed_begin_main_frame_args_ = BeginFrameArgs(); 495 last_processed_begin_main_frame_args_ = BeginFrameArgs();
494 } 496 }
495 } 497 }
496 498
497 void ProxyImpl::DidFinishImplFrame() { 499 void ProxyImpl::DidFinishImplFrame() {
498 DCHECK(IsImplThread()); 500 DCHECK(IsImplThread());
499 layer_tree_host_impl_->DidFinishImplFrame(); 501 layer_tree_host_impl_->DidFinishImplFrame();
500 } 502 }
501 503
502 void ProxyImpl::ScheduledActionSendBeginMainFrame(const BeginFrameArgs& args) { 504 void ProxyImpl::ScheduledActionSendBeginMainFrame(const BeginFrameArgs& args) {
503 DCHECK(IsImplThread()); 505 DCHECK(IsImplThread());
504 unsigned int begin_frame_id = nextBeginFrameId++; 506 unsigned int begin_frame_id = nextBeginFrameId++;
505 benchmark_instrumentation::ScopedBeginFrameTask begin_frame_task( 507 benchmark_instrumentation::ScopedBeginFrameTask begin_frame_task(
506 benchmark_instrumentation::kSendBeginFrame, begin_frame_id); 508 benchmark_instrumentation::kSendBeginFrame, begin_frame_id);
507 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state( 509 std::unique_ptr<BeginMainFrameAndCommitState> begin_main_frame_state(
508 new BeginMainFrameAndCommitState); 510 new BeginMainFrameAndCommitState);
509 begin_main_frame_state->begin_frame_id = begin_frame_id; 511 begin_main_frame_state->begin_frame_id = begin_frame_id;
510 begin_main_frame_state->begin_frame_args = args; 512 begin_main_frame_state->begin_frame_args = args;
511 begin_main_frame_state->scroll_info = 513 begin_main_frame_state->scroll_info =
512 layer_tree_host_impl_->ProcessScrollDeltas(); 514 layer_tree_host_impl_->ProcessScrollDeltas();
513 begin_main_frame_state->memory_allocation_limit_bytes = 515 begin_main_frame_state->memory_allocation_limit_bytes =
514 layer_tree_host_impl_->memory_allocation_limit_bytes(); 516 layer_tree_host_impl_->memory_allocation_limit_bytes();
515 begin_main_frame_state->evicted_ui_resources = 517 begin_main_frame_state->evicted_ui_resources =
516 layer_tree_host_impl_->EvictedUIResourcesExist(); 518 layer_tree_host_impl_->EvictedUIResourcesExist();
517 // TODO(vmpstr): This needs to be fixed if 519 // TODO(vmpstr): This needs to be fixed if
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 bool ProxyImpl::IsMainThreadBlocked() const { 682 bool ProxyImpl::IsMainThreadBlocked() const {
681 return task_runner_provider_->IsMainThreadBlocked(); 683 return task_runner_provider_->IsMainThreadBlocked();
682 } 684 }
683 685
684 ProxyImpl::BlockedMainCommitOnly& ProxyImpl::blocked_main_commit() { 686 ProxyImpl::BlockedMainCommitOnly& ProxyImpl::blocked_main_commit() {
685 DCHECK(IsMainThreadBlocked() && commit_completion_event_); 687 DCHECK(IsMainThreadBlocked() && commit_completion_event_);
686 return main_thread_blocked_commit_vars_unsafe_; 688 return main_thread_blocked_commit_vars_unsafe_;
687 } 689 }
688 690
689 } // namespace cc 691 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/proxy_impl.h ('k') | cc/trees/proxy_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698