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

Side by Side Diff: cc/trees/single_thread_proxy.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/single_thread_proxy.h ('k') | cc/trees/task_runner_provider.h » ('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 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/memory/ptr_util.h"
8 #include "base/profiler/scoped_tracker.h" 9 #include "base/profiler/scoped_tracker.h"
9 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
10 #include "cc/animation/animation_events.h" 11 #include "cc/animation/animation_events.h"
11 #include "cc/debug/benchmark_instrumentation.h" 12 #include "cc/debug/benchmark_instrumentation.h"
12 #include "cc/debug/devtools_instrumentation.h" 13 #include "cc/debug/devtools_instrumentation.h"
13 #include "cc/output/context_provider.h" 14 #include "cc/output/context_provider.h"
14 #include "cc/output/output_surface.h" 15 #include "cc/output/output_surface.h"
15 #include "cc/quads/draw_quad.h" 16 #include "cc/quads/draw_quad.h"
16 #include "cc/scheduler/commit_earlyout_reason.h" 17 #include "cc/scheduler/commit_earlyout_reason.h"
17 #include "cc/scheduler/compositor_timing_history.h" 18 #include "cc/scheduler/compositor_timing_history.h"
18 #include "cc/scheduler/scheduler.h" 19 #include "cc/scheduler/scheduler.h"
19 #include "cc/trees/layer_tree_host.h" 20 #include "cc/trees/layer_tree_host.h"
20 #include "cc/trees/layer_tree_host_common.h" 21 #include "cc/trees/layer_tree_host_common.h"
21 #include "cc/trees/layer_tree_host_single_thread_client.h" 22 #include "cc/trees/layer_tree_host_single_thread_client.h"
22 #include "cc/trees/layer_tree_impl.h" 23 #include "cc/trees/layer_tree_impl.h"
23 #include "cc/trees/scoped_abort_remaining_swap_promises.h" 24 #include "cc/trees/scoped_abort_remaining_swap_promises.h"
24 25
25 namespace cc { 26 namespace cc {
26 27
27 scoped_ptr<Proxy> SingleThreadProxy::Create( 28 std::unique_ptr<Proxy> SingleThreadProxy::Create(
28 LayerTreeHost* layer_tree_host, 29 LayerTreeHost* layer_tree_host,
29 LayerTreeHostSingleThreadClient* client, 30 LayerTreeHostSingleThreadClient* client,
30 TaskRunnerProvider* task_runner_provider) { 31 TaskRunnerProvider* task_runner_provider) {
31 return make_scoped_ptr( 32 return base::WrapUnique(
32 new SingleThreadProxy(layer_tree_host, client, task_runner_provider)); 33 new SingleThreadProxy(layer_tree_host, client, task_runner_provider));
33 } 34 }
34 35
35 SingleThreadProxy::SingleThreadProxy(LayerTreeHost* layer_tree_host, 36 SingleThreadProxy::SingleThreadProxy(LayerTreeHost* layer_tree_host,
36 LayerTreeHostSingleThreadClient* client, 37 LayerTreeHostSingleThreadClient* client,
37 TaskRunnerProvider* task_runner_provider) 38 TaskRunnerProvider* task_runner_provider)
38 : layer_tree_host_(layer_tree_host), 39 : layer_tree_host_(layer_tree_host),
39 client_(client), 40 client_(client),
40 task_runner_provider_(task_runner_provider), 41 task_runner_provider_(task_runner_provider),
41 next_frame_is_newly_committed_frame_(false), 42 next_frame_is_newly_committed_frame_(false),
42 #if DCHECK_IS_ON() 43 #if DCHECK_IS_ON()
43 inside_impl_frame_(false), 44 inside_impl_frame_(false),
44 #endif 45 #endif
45 inside_draw_(false), 46 inside_draw_(false),
46 defer_commits_(false), 47 defer_commits_(false),
47 animate_requested_(false), 48 animate_requested_(false),
48 commit_requested_(false), 49 commit_requested_(false),
49 inside_synchronous_composite_(false), 50 inside_synchronous_composite_(false),
50 output_surface_creation_requested_(false), 51 output_surface_creation_requested_(false),
51 weak_factory_(this) { 52 weak_factory_(this) {
52 TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy"); 53 TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy");
53 DCHECK(task_runner_provider_); 54 DCHECK(task_runner_provider_);
54 DCHECK(task_runner_provider_->IsMainThread()); 55 DCHECK(task_runner_provider_->IsMainThread());
55 DCHECK(layer_tree_host); 56 DCHECK(layer_tree_host);
56 } 57 }
57 58
58 void SingleThreadProxy::Start( 59 void SingleThreadProxy::Start(
59 scoped_ptr<BeginFrameSource> external_begin_frame_source) { 60 std::unique_ptr<BeginFrameSource> external_begin_frame_source) {
60 DebugScopedSetImplThread impl(task_runner_provider_); 61 DebugScopedSetImplThread impl(task_runner_provider_);
61 external_begin_frame_source_ = std::move(external_begin_frame_source); 62 external_begin_frame_source_ = std::move(external_begin_frame_source);
62 63
63 if (layer_tree_host_->settings().single_thread_proxy_scheduler && 64 if (layer_tree_host_->settings().single_thread_proxy_scheduler &&
64 !scheduler_on_impl_thread_) { 65 !scheduler_on_impl_thread_) {
65 SchedulerSettings scheduler_settings( 66 SchedulerSettings scheduler_settings(
66 layer_tree_host_->settings().ToSchedulerSettings()); 67 layer_tree_host_->settings().ToSchedulerSettings());
67 scheduler_settings.commit_to_active_tree = CommitToActiveTree(); 68 scheduler_settings.commit_to_active_tree = CommitToActiveTree();
68 69
69 scoped_ptr<CompositorTimingHistory> compositor_timing_history( 70 std::unique_ptr<CompositorTimingHistory> compositor_timing_history(
70 new CompositorTimingHistory( 71 new CompositorTimingHistory(
71 scheduler_settings.using_synchronous_renderer_compositor, 72 scheduler_settings.using_synchronous_renderer_compositor,
72 CompositorTimingHistory::BROWSER_UMA, 73 CompositorTimingHistory::BROWSER_UMA,
73 layer_tree_host_->rendering_stats_instrumentation())); 74 layer_tree_host_->rendering_stats_instrumentation()));
74 75
75 BeginFrameSource* frame_source = external_begin_frame_source_.get(); 76 BeginFrameSource* frame_source = external_begin_frame_source_.get();
76 if (!scheduler_settings.throttle_frame_production) { 77 if (!scheduler_settings.throttle_frame_production) {
77 // Unthrottled source takes precedence over external sources. 78 // Unthrottled source takes precedence over external sources.
78 unthrottled_begin_frame_source_.reset(new BackToBackBeginFrameSource( 79 unthrottled_begin_frame_source_.reset(new BackToBackBeginFrameSource(
79 task_runner_provider_->MainThreadTaskRunner())); 80 task_runner_provider_->MainThreadTaskRunner()));
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/461509 244 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/461509
244 // is fixed. 245 // is fixed.
245 tracked_objects::ScopedTracker tracking_profile7( 246 tracked_objects::ScopedTracker tracking_profile7(
246 FROM_HERE_WITH_EXPLICIT_FUNCTION( 247 FROM_HERE_WITH_EXPLICIT_FUNCTION(
247 "461509 SingleThreadProxy::DoCommit7")); 248 "461509 SingleThreadProxy::DoCommit7"));
248 layer_tree_host_->FinishCommitOnImplThread(layer_tree_host_impl_.get()); 249 layer_tree_host_->FinishCommitOnImplThread(layer_tree_host_impl_.get());
249 250
250 #if DCHECK_IS_ON() 251 #if DCHECK_IS_ON()
251 // In the single-threaded case, the scale and scroll deltas should never be 252 // In the single-threaded case, the scale and scroll deltas should never be
252 // touched on the impl layer tree. 253 // touched on the impl layer tree.
253 scoped_ptr<ScrollAndScaleSet> scroll_info = 254 std::unique_ptr<ScrollAndScaleSet> scroll_info =
254 layer_tree_host_impl_->ProcessScrollDeltas(); 255 layer_tree_host_impl_->ProcessScrollDeltas();
255 DCHECK(!scroll_info->scrolls.size()); 256 DCHECK(!scroll_info->scrolls.size());
256 DCHECK_EQ(1.f, scroll_info->page_scale_delta); 257 DCHECK_EQ(1.f, scroll_info->page_scale_delta);
257 #endif 258 #endif
258 259
259 if (scheduler_on_impl_thread_) 260 if (scheduler_on_impl_thread_)
260 scheduler_on_impl_thread_->DidCommit(); 261 scheduler_on_impl_thread_->DidCommit();
261 262
262 layer_tree_host_impl_->CommitComplete(); 263 layer_tree_host_impl_->CommitComplete();
263 264
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 417
417 void SingleThreadProxy::SetVideoNeedsBeginFrames(bool needs_begin_frames) { 418 void SingleThreadProxy::SetVideoNeedsBeginFrames(bool needs_begin_frames) {
418 TRACE_EVENT1("cc", "SingleThreadProxy::SetVideoNeedsBeginFrames", 419 TRACE_EVENT1("cc", "SingleThreadProxy::SetVideoNeedsBeginFrames",
419 "needs_begin_frames", needs_begin_frames); 420 "needs_begin_frames", needs_begin_frames);
420 // In tests the layer tree is destroyed after the scheduler is. 421 // In tests the layer tree is destroyed after the scheduler is.
421 if (scheduler_on_impl_thread_) 422 if (scheduler_on_impl_thread_)
422 scheduler_on_impl_thread_->SetVideoNeedsBeginFrames(needs_begin_frames); 423 scheduler_on_impl_thread_->SetVideoNeedsBeginFrames(needs_begin_frames);
423 } 424 }
424 425
425 void SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread( 426 void SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread(
426 scoped_ptr<AnimationEvents> events) { 427 std::unique_ptr<AnimationEvents> events) {
427 TRACE_EVENT0( 428 TRACE_EVENT0(
428 "cc", "SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread"); 429 "cc", "SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread");
429 DCHECK(task_runner_provider_->IsImplThread()); 430 DCHECK(task_runner_provider_->IsImplThread());
430 DebugScopedSetMainThread main(task_runner_provider_); 431 DebugScopedSetMainThread main(task_runner_provider_);
431 layer_tree_host_->SetAnimationEvents(std::move(events)); 432 layer_tree_host_->SetAnimationEvents(std::move(events));
432 } 433 }
433 434
434 bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; } 435 bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; }
435 436
436 void SingleThreadProxy::DidActivateSyncTree() { 437 void SingleThreadProxy::DidActivateSyncTree() {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 scheduler_on_impl_thread_->DidSwapBuffersComplete(); 510 scheduler_on_impl_thread_->DidSwapBuffersComplete();
510 layer_tree_host_->DidCompleteSwapBuffers(); 511 layer_tree_host_->DidCompleteSwapBuffers();
511 } 512 }
512 513
513 void SingleThreadProxy::OnDrawForOutputSurface( 514 void SingleThreadProxy::OnDrawForOutputSurface(
514 bool resourceless_software_draw) { 515 bool resourceless_software_draw) {
515 NOTREACHED() << "Implemented by ThreadProxy for synchronous compositor."; 516 NOTREACHED() << "Implemented by ThreadProxy for synchronous compositor.";
516 } 517 }
517 518
518 void SingleThreadProxy::PostFrameTimingEventsOnImplThread( 519 void SingleThreadProxy::PostFrameTimingEventsOnImplThread(
519 scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, 520 std::unique_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
520 scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) { 521 std::unique_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) {
521 layer_tree_host_->RecordFrameTimingEvents(std::move(composite_events), 522 layer_tree_host_->RecordFrameTimingEvents(std::move(composite_events),
522 std::move(main_frame_events)); 523 std::move(main_frame_events));
523 } 524 }
524 525
525 void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { 526 void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) {
526 TRACE_EVENT0("cc,benchmark", "SingleThreadProxy::CompositeImmediately"); 527 TRACE_EVENT0("cc,benchmark", "SingleThreadProxy::CompositeImmediately");
527 DCHECK(task_runner_provider_->IsMainThread()); 528 DCHECK(task_runner_provider_->IsMainThread());
528 #if DCHECK_IS_ON() 529 #if DCHECK_IS_ON()
529 DCHECK(!inside_impl_frame_); 530 DCHECK(!inside_impl_frame_);
530 #endif 531 #endif
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 << "DidFinishImplFrame called while not inside an impl frame!"; 899 << "DidFinishImplFrame called while not inside an impl frame!";
899 inside_impl_frame_ = false; 900 inside_impl_frame_ = false;
900 #endif 901 #endif
901 } 902 }
902 903
903 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) { 904 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) {
904 layer_tree_host_->SendBeginFramesToChildren(args); 905 layer_tree_host_->SendBeginFramesToChildren(args);
905 } 906 }
906 907
907 } // namespace cc 908 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | cc/trees/task_runner_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698