| 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/browser/android/in_process/synchronous_compositor_impl.h" | 5 #include "content/browser/android/in_process/synchronous_compositor_impl.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "cc/input/input_handler.h" | 9 #include "cc/input/input_handler.h" |
| 10 #include "content/browser/android/in_process/synchronous_compositor_factory_impl
.h" | 10 #include "content/browser/android/in_process/synchronous_compositor_factory_impl
.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 gfx::Rect viewport, | 122 gfx::Rect viewport, |
| 123 gfx::Rect clip, | 123 gfx::Rect clip, |
| 124 bool stencil_enabled) { | 124 bool stencil_enabled) { |
| 125 DCHECK(CalledOnValidThread()); | 125 DCHECK(CalledOnValidThread()); |
| 126 DCHECK(output_surface_); | 126 DCHECK(output_surface_); |
| 127 | 127 |
| 128 scoped_ptr<cc::CompositorFrame> frame = output_surface_->DemandDrawHw( | 128 scoped_ptr<cc::CompositorFrame> frame = output_surface_->DemandDrawHw( |
| 129 surface_size, transform, viewport, clip, stencil_enabled); | 129 surface_size, transform, viewport, clip, stencil_enabled); |
| 130 if (frame.get()) | 130 if (frame.get()) |
| 131 UpdateFrameMetaData(frame->metadata); | 131 UpdateFrameMetaData(frame->metadata); |
| 132 |
| 132 return frame.Pass(); | 133 return frame.Pass(); |
| 133 } | 134 } |
| 134 | 135 |
| 135 void SynchronousCompositorImpl::ReturnResources( | 136 void SynchronousCompositorImpl::ReturnResources( |
| 136 const cc::CompositorFrameAck& frame_ack) { | 137 const cc::CompositorFrameAck& frame_ack) { |
| 137 DCHECK(CalledOnValidThread()); | 138 DCHECK(CalledOnValidThread()); |
| 138 output_surface_->ReturnResources(frame_ack); | 139 output_surface_->ReturnResources(frame_ack); |
| 139 } | 140 } |
| 140 | 141 |
| 141 bool SynchronousCompositorImpl::DemandDrawSw(SkCanvas* canvas) { | 142 bool SynchronousCompositorImpl::DemandDrawSw(SkCanvas* canvas) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 156 FROM_HERE, | 157 FROM_HERE, |
| 157 base::Bind(&SynchronousCompositorImpl::UpdateFrameMetaData, | 158 base::Bind(&SynchronousCompositorImpl::UpdateFrameMetaData, |
| 158 weak_ptr_factory_.GetWeakPtr(), | 159 weak_ptr_factory_.GetWeakPtr(), |
| 159 frame_metadata)); | 160 frame_metadata)); |
| 160 return; | 161 return; |
| 161 } | 162 } |
| 162 RenderWidgetHostViewAndroid* rwhv = static_cast<RenderWidgetHostViewAndroid*>( | 163 RenderWidgetHostViewAndroid* rwhv = static_cast<RenderWidgetHostViewAndroid*>( |
| 163 contents_->GetRenderWidgetHostView()); | 164 contents_->GetRenderWidgetHostView()); |
| 164 if (rwhv) | 165 if (rwhv) |
| 165 rwhv->SynchronousFrameMetadata(frame_metadata); | 166 rwhv->SynchronousFrameMetadata(frame_metadata); |
| 167 DeliverMessages(); |
| 166 } | 168 } |
| 167 | 169 |
| 168 void SynchronousCompositorImpl::SetMemoryPolicy( | 170 void SynchronousCompositorImpl::SetMemoryPolicy( |
| 169 const SynchronousCompositorMemoryPolicy& policy) { | 171 const SynchronousCompositorMemoryPolicy& policy) { |
| 170 DCHECK(CalledOnValidThread()); | 172 DCHECK(CalledOnValidThread()); |
| 171 DCHECK(output_surface_); | 173 DCHECK(output_surface_); |
| 172 | 174 |
| 173 output_surface_->SetMemoryPolicy(policy); | 175 output_surface_->SetMemoryPolicy(policy); |
| 174 } | 176 } |
| 175 | 177 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 compositor_client_->SetContinuousInvalidate(enable); | 237 compositor_client_->SetContinuousInvalidate(enable); |
| 236 } | 238 } |
| 237 | 239 |
| 238 InputEventAckState SynchronousCompositorImpl::HandleInputEvent( | 240 InputEventAckState SynchronousCompositorImpl::HandleInputEvent( |
| 239 const blink::WebInputEvent& input_event) { | 241 const blink::WebInputEvent& input_event) { |
| 240 DCHECK(CalledOnValidThread()); | 242 DCHECK(CalledOnValidThread()); |
| 241 return g_factory.Get().synchronous_input_event_filter()->HandleInputEvent( | 243 return g_factory.Get().synchronous_input_event_filter()->HandleInputEvent( |
| 242 contents_->GetRoutingID(), input_event); | 244 contents_->GetRoutingID(), input_event); |
| 243 } | 245 } |
| 244 | 246 |
| 247 void SynchronousCompositorImpl::DeliverMessages() { |
| 248 std::vector<IPC::Message> messages; |
| 249 output_surface_->GetMessagesToDeliver(&messages); |
| 250 RenderProcessHost* rph = contents_->GetRenderProcessHost(); |
| 251 for (std::vector<IPC::Message>::const_iterator i = messages.begin(); |
| 252 i != messages.end(); |
| 253 ++i) { |
| 254 rph->OnMessageReceived(*i); |
| 255 } |
| 256 } |
| 257 |
| 245 void SynchronousCompositorImpl::DidActivatePendingTree() { | 258 void SynchronousCompositorImpl::DidActivatePendingTree() { |
| 246 if (compositor_client_) | 259 if (compositor_client_) |
| 247 compositor_client_->DidUpdateContent(); | 260 compositor_client_->DidUpdateContent(); |
| 248 } | 261 } |
| 249 | 262 |
| 250 gfx::Vector2dF SynchronousCompositorImpl::GetTotalScrollOffset() { | 263 gfx::Vector2dF SynchronousCompositorImpl::GetTotalScrollOffset() { |
| 251 DCHECK(CalledOnValidThread()); | 264 DCHECK(CalledOnValidThread()); |
| 252 if (compositor_client_) | 265 if (compositor_client_) |
| 253 return compositor_client_->GetTotalRootLayerScrollOffset(); | 266 return compositor_client_->GetTotalRootLayerScrollOffset(); |
| 254 return gfx::Vector2dF(); | 267 return gfx::Vector2dF(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 g_factory.Get(); // Ensure it's initialized. | 308 g_factory.Get(); // Ensure it's initialized. |
| 296 SynchronousCompositorImpl::CreateForWebContents(contents); | 309 SynchronousCompositorImpl::CreateForWebContents(contents); |
| 297 } | 310 } |
| 298 if (SynchronousCompositorImpl* instance = | 311 if (SynchronousCompositorImpl* instance = |
| 299 SynchronousCompositorImpl::FromWebContents(contents)) { | 312 SynchronousCompositorImpl::FromWebContents(contents)) { |
| 300 instance->SetClient(client); | 313 instance->SetClient(client); |
| 301 } | 314 } |
| 302 } | 315 } |
| 303 | 316 |
| 304 } // namespace content | 317 } // namespace content |
| OLD | NEW |