| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/frame_host/render_widget_host_view_guest.h" | 5 #include "content/browser/frame_host/render_widget_host_view_guest.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 223 } |
| 224 | 224 |
| 225 void RenderWidgetHostViewGuest::SetTooltipText( | 225 void RenderWidgetHostViewGuest::SetTooltipText( |
| 226 const base::string16& tooltip_text) { | 226 const base::string16& tooltip_text) { |
| 227 if (guest_) | 227 if (guest_) |
| 228 guest_->SetTooltipText(tooltip_text); | 228 guest_->SetTooltipText(tooltip_text); |
| 229 } | 229 } |
| 230 | 230 |
| 231 void RenderWidgetHostViewGuest::OnSwapCompositorFrame( | 231 void RenderWidgetHostViewGuest::OnSwapCompositorFrame( |
| 232 uint32_t output_surface_id, | 232 uint32_t output_surface_id, |
| 233 std::unique_ptr<cc::CompositorFrame> frame) { | 233 cc::CompositorFrame frame) { |
| 234 TRACE_EVENT0("content", "RenderWidgetHostViewGuest::OnSwapCompositorFrame"); | 234 TRACE_EVENT0("content", "RenderWidgetHostViewGuest::OnSwapCompositorFrame"); |
| 235 | 235 |
| 236 last_scroll_offset_ = frame->metadata.root_scroll_offset; | 236 last_scroll_offset_ = frame.metadata.root_scroll_offset; |
| 237 | 237 |
| 238 cc::RenderPass* root_pass = | 238 cc::RenderPass* root_pass = |
| 239 frame->delegated_frame_data->render_pass_list.back().get(); | 239 frame.delegated_frame_data->render_pass_list.back().get(); |
| 240 | 240 |
| 241 gfx::Size frame_size = root_pass->output_rect.size(); | 241 gfx::Size frame_size = root_pass->output_rect.size(); |
| 242 float scale_factor = frame->metadata.device_scale_factor; | 242 float scale_factor = frame.metadata.device_scale_factor; |
| 243 | 243 |
| 244 // Check whether we need to recreate the cc::Surface, which means the child | 244 // Check whether we need to recreate the cc::Surface, which means the child |
| 245 // frame renderer has changed its output surface, or size, or scale factor. | 245 // frame renderer has changed its output surface, or size, or scale factor. |
| 246 if (output_surface_id != last_output_surface_id_ && surface_factory_) { | 246 if (output_surface_id != last_output_surface_id_ && surface_factory_) { |
| 247 surface_factory_->Destroy(surface_id_); | 247 surface_factory_->Destroy(surface_id_); |
| 248 surface_factory_.reset(); | 248 surface_factory_.reset(); |
| 249 } | 249 } |
| 250 if (output_surface_id != last_output_surface_id_ || | 250 if (output_surface_id != last_output_surface_id_ || |
| 251 frame_size != current_surface_size_ || | 251 frame_size != current_surface_size_ || |
| 252 scale_factor != current_surface_scale_factor_ || | 252 scale_factor != current_surface_scale_factor_ || |
| (...skipping 22 matching lines...) Expand all Loading... |
| 275 guest_->SetChildFrameSurface(surface_id_, frame_size, scale_factor, | 275 guest_->SetChildFrameSurface(surface_id_, frame_size, scale_factor, |
| 276 sequence); | 276 sequence); |
| 277 } | 277 } |
| 278 | 278 |
| 279 cc::SurfaceFactory::DrawCallback ack_callback = base::Bind( | 279 cc::SurfaceFactory::DrawCallback ack_callback = base::Bind( |
| 280 &RenderWidgetHostViewChildFrame::SurfaceDrawn, | 280 &RenderWidgetHostViewChildFrame::SurfaceDrawn, |
| 281 RenderWidgetHostViewChildFrame::AsWeakPtr(), output_surface_id); | 281 RenderWidgetHostViewChildFrame::AsWeakPtr(), output_surface_id); |
| 282 ack_pending_count_++; | 282 ack_pending_count_++; |
| 283 // If this value grows very large, something is going wrong. | 283 // If this value grows very large, something is going wrong. |
| 284 DCHECK(ack_pending_count_ < 1000); | 284 DCHECK(ack_pending_count_ < 1000); |
| 285 surface_factory_->SubmitCompositorFrame(surface_id_, std::move(frame), | 285 std::unique_ptr<cc::CompositorFrame> frame_copy(new cc::CompositorFrame); |
| 286 *frame_copy = std::move(frame); |
| 287 surface_factory_->SubmitCompositorFrame(surface_id_, std::move(frame_copy), |
| 286 ack_callback); | 288 ack_callback); |
| 287 | 289 |
| 288 ProcessFrameSwappedCallbacks(); | 290 ProcessFrameSwappedCallbacks(); |
| 289 | 291 |
| 290 // If after detaching we are sent a frame, we should finish processing it, and | 292 // If after detaching we are sent a frame, we should finish processing it, and |
| 291 // then we should clear the surface so that we are not holding resources we | 293 // then we should clear the surface so that we are not holding resources we |
| 292 // no longer need. | 294 // no longer need. |
| 293 if (!guest_ || !guest_->attached()) | 295 if (!guest_ || !guest_->attached()) |
| 294 ClearCompositorSurfaceIfNecessary(); | 296 ClearCompositorSurfaceIfNecessary(); |
| 295 } | 297 } |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 gesture_event.data.scrollUpdate.inertialPhase == | 594 gesture_event.data.scrollUpdate.inertialPhase == |
| 593 blink::WebGestureEvent::MomentumPhase) { | 595 blink::WebGestureEvent::MomentumPhase) { |
| 594 return; | 596 return; |
| 595 } | 597 } |
| 596 host_->ForwardGestureEvent(gesture_event); | 598 host_->ForwardGestureEvent(gesture_event); |
| 597 return; | 599 return; |
| 598 } | 600 } |
| 599 } | 601 } |
| 600 | 602 |
| 601 } // namespace content | 603 } // namespace content |
| OLD | NEW |