| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/renderer/android/synchronous_compositor_output_surface.h" | 5 #include "content/renderer/android/synchronous_compositor_output_surface.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "cc/output/compositor_frame.h" | 10 #include "cc/output/compositor_frame.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 SynchronousCompositorOutputSurface* surface_; | 57 SynchronousCompositorOutputSurface* surface_; |
| 58 SkCanvas null_canvas_; | 58 SkCanvas null_canvas_; |
| 59 | 59 |
| 60 DISALLOW_COPY_AND_ASSIGN(SoftwareDevice); | 60 DISALLOW_COPY_AND_ASSIGN(SoftwareDevice); |
| 61 }; | 61 }; |
| 62 | 62 |
| 63 SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( | 63 SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( |
| 64 const scoped_refptr<cc::ContextProvider>& context_provider, | 64 const scoped_refptr<cc::ContextProvider>& context_provider, |
| 65 const scoped_refptr<cc::ContextProvider>& worker_context_provider, | 65 const scoped_refptr<cc::ContextProvider>& worker_context_provider, |
| 66 int routing_id, | 66 int routing_id, |
| 67 uint32_t output_surface_id, |
| 67 SynchronousCompositorRegistry* registry, | 68 SynchronousCompositorRegistry* registry, |
| 68 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue) | 69 scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue) |
| 69 : cc::OutputSurface( | 70 : cc::OutputSurface( |
| 70 context_provider, | 71 context_provider, |
| 71 worker_context_provider, | 72 worker_context_provider, |
| 72 scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareDevice(this))), | 73 scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareDevice(this))), |
| 73 routing_id_(routing_id), | 74 routing_id_(routing_id), |
| 75 output_surface_id_(output_surface_id), |
| 74 registry_(registry), | 76 registry_(registry), |
| 75 registered_(false), | 77 registered_(false), |
| 76 sync_client_(nullptr), | 78 sync_client_(nullptr), |
| 77 current_sw_canvas_(nullptr), | 79 current_sw_canvas_(nullptr), |
| 78 memory_policy_(0u), | 80 memory_policy_(0u), |
| 79 did_swap_(false), | 81 did_swap_(false), |
| 80 frame_swap_message_queue_(frame_swap_message_queue), | 82 frame_swap_message_queue_(frame_swap_message_queue), |
| 81 fallback_tick_pending_(false), | 83 fallback_tick_pending_(false), |
| 82 fallback_tick_running_(false) { | 84 fallback_tick_running_(false) { |
| 83 thread_checker_.DetachFromThread(); | 85 thread_checker_.DetachFromThread(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 float scale_factor, | 128 float scale_factor, |
| 127 bool has_alpha) { | 129 bool has_alpha) { |
| 128 // Intentional no-op: surface size is controlled by the embedder. | 130 // Intentional no-op: surface size is controlled by the embedder. |
| 129 } | 131 } |
| 130 | 132 |
| 131 void SynchronousCompositorOutputSurface::SwapBuffers( | 133 void SynchronousCompositorOutputSurface::SwapBuffers( |
| 132 cc::CompositorFrame* frame) { | 134 cc::CompositorFrame* frame) { |
| 133 DCHECK(CalledOnValidThread()); | 135 DCHECK(CalledOnValidThread()); |
| 134 DCHECK(sync_client_); | 136 DCHECK(sync_client_); |
| 135 if (!fallback_tick_running_) | 137 if (!fallback_tick_running_) |
| 136 sync_client_->SwapBuffers(frame); | 138 sync_client_->SwapBuffers(output_surface_id_, frame); |
| 137 client_->DidSwapBuffers(); | 139 client_->DidSwapBuffers(); |
| 138 did_swap_ = true; | 140 did_swap_ = true; |
| 139 } | 141 } |
| 140 | 142 |
| 141 void SynchronousCompositorOutputSurface::CancelFallbackTick() { | 143 void SynchronousCompositorOutputSurface::CancelFallbackTick() { |
| 142 fallback_tick_.Cancel(); | 144 fallback_tick_.Cancel(); |
| 143 fallback_tick_pending_ = false; | 145 fallback_tick_pending_ = false; |
| 144 } | 146 } |
| 145 | 147 |
| 146 void SynchronousCompositorOutputSurface::FallbackTickFired() { | 148 void SynchronousCompositorOutputSurface::FallbackTickFired() { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 gfx::Transform adjusted_transform = transform; | 222 gfx::Transform adjusted_transform = transform; |
| 221 adjusted_transform.matrix().postTranslate(-viewport.x(), -viewport.y(), 0); | 223 adjusted_transform.matrix().postTranslate(-viewport.x(), -viewport.y(), 0); |
| 222 did_swap_ = false; | 224 did_swap_ = false; |
| 223 client_->OnDraw(adjusted_transform, viewport, clip, software_draw); | 225 client_->OnDraw(adjusted_transform, viewport, clip, software_draw); |
| 224 | 226 |
| 225 if (did_swap_) | 227 if (did_swap_) |
| 226 client_->DidSwapBuffersComplete(); | 228 client_->DidSwapBuffersComplete(); |
| 227 } | 229 } |
| 228 | 230 |
| 229 void SynchronousCompositorOutputSurface::ReturnResources( | 231 void SynchronousCompositorOutputSurface::ReturnResources( |
| 232 uint32_t output_surface_id, |
| 230 const cc::CompositorFrameAck& frame_ack) { | 233 const cc::CompositorFrameAck& frame_ack) { |
| 231 ReclaimResources(&frame_ack); | 234 if (output_surface_id_ == output_surface_id) |
| 235 ReclaimResources(&frame_ack); |
| 232 } | 236 } |
| 233 | 237 |
| 234 void SynchronousCompositorOutputSurface::SetMemoryPolicy(size_t bytes_limit) { | 238 void SynchronousCompositorOutputSurface::SetMemoryPolicy(size_t bytes_limit) { |
| 235 DCHECK(CalledOnValidThread()); | 239 DCHECK(CalledOnValidThread()); |
| 236 bool became_zero = memory_policy_.bytes_limit_when_visible && !bytes_limit; | 240 bool became_zero = memory_policy_.bytes_limit_when_visible && !bytes_limit; |
| 237 bool became_non_zero = | 241 bool became_non_zero = |
| 238 !memory_policy_.bytes_limit_when_visible && bytes_limit; | 242 !memory_policy_.bytes_limit_when_visible && bytes_limit; |
| 239 memory_policy_.bytes_limit_when_visible = bytes_limit; | 243 memory_policy_.bytes_limit_when_visible = bytes_limit; |
| 240 memory_policy_.num_resources_limit = kNumResourcesLimit; | 244 memory_policy_.num_resources_limit = kNumResourcesLimit; |
| 241 | 245 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 265 scoped_ptr<FrameSwapMessageQueue::SendMessageScope> send_message_scope = | 269 scoped_ptr<FrameSwapMessageQueue::SendMessageScope> send_message_scope = |
| 266 frame_swap_message_queue_->AcquireSendMessageScope(); | 270 frame_swap_message_queue_->AcquireSendMessageScope(); |
| 267 frame_swap_message_queue_->DrainMessages(messages); | 271 frame_swap_message_queue_->DrainMessages(messages); |
| 268 } | 272 } |
| 269 | 273 |
| 270 bool SynchronousCompositorOutputSurface::CalledOnValidThread() const { | 274 bool SynchronousCompositorOutputSurface::CalledOnValidThread() const { |
| 271 return thread_checker_.CalledOnValidThread(); | 275 return thread_checker_.CalledOnValidThread(); |
| 272 } | 276 } |
| 273 | 277 |
| 274 } // namespace content | 278 } // namespace content |
| OLD | NEW |