OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/compositor/compositor.h" | 5 #include "ui/compositor/compositor.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <deque> | 8 #include <deque> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
69 scoped_refptr<base::SingleThreadTaskRunner> task_runner) | 69 scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
70 : context_factory_(context_factory), | 70 : context_factory_(context_factory), |
71 root_layer_(NULL), | 71 root_layer_(NULL), |
72 widget_(widget), | 72 widget_(widget), |
73 surface_id_allocator_(context_factory->CreateSurfaceIdAllocator()), | 73 surface_id_allocator_(context_factory->CreateSurfaceIdAllocator()), |
74 task_runner_(task_runner), | 74 task_runner_(task_runner), |
75 vsync_manager_(new CompositorVSyncManager()), | 75 vsync_manager_(new CompositorVSyncManager()), |
76 device_scale_factor_(0.0f), | 76 device_scale_factor_(0.0f), |
77 last_started_frame_(0), | 77 last_started_frame_(0), |
78 last_ended_frame_(0), | 78 last_ended_frame_(0), |
79 disable_schedule_composite_(false), | |
80 compositor_lock_(NULL), | 79 compositor_lock_(NULL), |
81 layer_animator_collection_(this), | 80 layer_animator_collection_(this), |
82 weak_ptr_factory_(this) { | 81 weak_ptr_factory_(this) { |
83 root_web_layer_ = cc::Layer::Create(); | 82 root_web_layer_ = cc::Layer::Create(); |
84 | 83 |
85 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 84 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
86 | 85 |
87 cc::LayerTreeSettings settings; | 86 cc::LayerTreeSettings settings; |
88 // When impl-side painting is enabled, this will ensure PictureLayers always | 87 // When impl-side painting is enabled, this will ensure PictureLayers always |
89 // can have LCD text, to match the previous behaviour with ContentLayers, | 88 // can have LCD text, to match the previous behaviour with ContentLayers, |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 animation_observer_list_, | 286 animation_observer_list_, |
288 OnAnimationStep(args.frame_time)); | 287 OnAnimationStep(args.frame_time)); |
289 if (animation_observer_list_.might_have_observers()) | 288 if (animation_observer_list_.might_have_observers()) |
290 host_->SetNeedsAnimate(); | 289 host_->SetNeedsAnimate(); |
291 } | 290 } |
292 | 291 |
293 void Compositor::BeginMainFrameNotExpectedSoon() { | 292 void Compositor::BeginMainFrameNotExpectedSoon() { |
294 } | 293 } |
295 | 294 |
296 void Compositor::Layout() { | 295 void Compositor::Layout() { |
297 // We're sending damage that will be addressed during this composite | |
298 // cycle, so we don't need to schedule another composite to address it. | |
299 disable_schedule_composite_ = true; | |
300 if (root_layer_) | 296 if (root_layer_) |
301 root_layer_->SendDamagedRects(); | 297 root_layer_->SendDamagedRects(); |
302 disable_schedule_composite_ = false; | |
303 } | 298 } |
304 | 299 |
305 void Compositor::RequestNewOutputSurface() { | 300 void Compositor::RequestNewOutputSurface() { |
306 context_factory_->CreateOutputSurface(weak_ptr_factory_.GetWeakPtr()); | 301 context_factory_->CreateOutputSurface(weak_ptr_factory_.GetWeakPtr()); |
307 } | 302 } |
308 | 303 |
309 void Compositor::DidInitializeOutputSurface() { | 304 void Compositor::DidInitializeOutputSurface() { |
310 } | 305 } |
311 | 306 |
312 void Compositor::DidFailToInitializeOutputSurface() { | 307 void Compositor::DidFailToInitializeOutputSurface() { |
(...skipping 10 matching lines...) Expand all Loading... | |
323 } | 318 } |
324 | 319 |
325 void Compositor::DidCommitAndDrawFrame() { | 320 void Compositor::DidCommitAndDrawFrame() { |
326 } | 321 } |
327 | 322 |
328 void Compositor::DidCompleteSwapBuffers() { | 323 void Compositor::DidCompleteSwapBuffers() { |
329 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, | 324 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, |
330 OnCompositingEnded(this)); | 325 OnCompositingEnded(this)); |
331 } | 326 } |
332 | 327 |
328 void Compositor::SetDeferCommits(bool defer_commits) { | |
329 host_->SetDeferCommits(defer_commits); | |
danakj
2015/03/11 17:22:55
You'll now have a state where commits are deferred
ccameron
2015/03/11 21:46:43
The timeout for the lock is only so that the UI do
| |
330 } | |
331 | |
333 void Compositor::DidPostSwapBuffers() { | 332 void Compositor::DidPostSwapBuffers() { |
334 base::TimeTicks start_time = gfx::FrameTime::Now(); | 333 base::TimeTicks start_time = gfx::FrameTime::Now(); |
335 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, | 334 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, |
336 OnCompositingStarted(this, start_time)); | 335 OnCompositingStarted(this, start_time)); |
337 } | 336 } |
338 | 337 |
339 void Compositor::DidAbortSwapBuffers() { | 338 void Compositor::DidAbortSwapBuffers() { |
340 FOR_EACH_OBSERVER(CompositorObserver, | 339 FOR_EACH_OBSERVER(CompositorObserver, |
341 observer_list_, | 340 observer_list_, |
342 OnCompositingAborted(this)); | 341 OnCompositingAborted(this)); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
374 observer_list_, | 373 observer_list_, |
375 OnCompositingLockStateChanged(this)); | 374 OnCompositingLockStateChanged(this)); |
376 } | 375 } |
377 | 376 |
378 void Compositor::CancelCompositorLock() { | 377 void Compositor::CancelCompositorLock() { |
379 if (compositor_lock_) | 378 if (compositor_lock_) |
380 compositor_lock_->CancelLock(); | 379 compositor_lock_->CancelLock(); |
381 } | 380 } |
382 | 381 |
383 } // namespace ui | 382 } // namespace ui |
OLD | NEW |