Index: content/browser/renderer_host/delegated_frame_host.cc |
diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc |
index c5b923d5eff86106ce93b9b1c177b03557e6d9af..df479af0112a259e54000e699d091420b50c8b8c 100644 |
--- a/content/browser/renderer_host/delegated_frame_host.cc |
+++ b/content/browser/renderer_host/delegated_frame_host.cc |
@@ -381,12 +381,11 @@ void DelegatedFrameHost::AttemptFrameSubscriberCapture( |
} |
} |
-void DelegatedFrameHost::SwapDelegatedFrame( |
- uint32_t output_surface_id, |
- std::unique_ptr<cc::CompositorFrame> frame) { |
- DCHECK(frame->delegated_frame_data.get()); |
- cc::DelegatedFrameData* frame_data = frame->delegated_frame_data.get(); |
- float frame_device_scale_factor = frame->metadata.device_scale_factor; |
+void DelegatedFrameHost::SwapDelegatedFrame(uint32_t output_surface_id, |
+ cc::CompositorFrame frame) { |
+ DCHECK(frame.delegated_frame_data.get()); |
+ cc::DelegatedFrameData* frame_data = frame.delegated_frame_data.get(); |
+ float frame_device_scale_factor = frame.metadata.device_scale_factor; |
DCHECK(!frame_data->render_pass_list.empty()); |
@@ -407,8 +406,8 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
&ack.resources); |
skipped_latency_info_list_.insert(skipped_latency_info_list_.end(), |
- frame->metadata.latency_info.begin(), |
- frame->metadata.latency_info.end()); |
+ frame.metadata.latency_info.begin(), |
+ frame.metadata.latency_info.end()); |
client_->DelegatedFrameHostSendCompositorSwapAck(output_surface_id, ack); |
skipped_frames_ = true; |
@@ -444,7 +443,7 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
bool skip_frame = false; |
pending_delegated_ack_count_++; |
- background_color_ = frame->metadata.root_background_color; |
+ background_color_ = frame.metadata.root_background_color; |
if (frame_size.IsEmpty()) { |
DCHECK(frame_data->resource_list.empty()); |
@@ -473,9 +472,9 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
current_scale_factor_ = frame_device_scale_factor; |
} |
- frame->metadata.latency_info.insert(frame->metadata.latency_info.end(), |
- skipped_latency_info_list_.begin(), |
- skipped_latency_info_list_.end()); |
+ frame.metadata.latency_info.insert(frame.metadata.latency_info.end(), |
+ skipped_latency_info_list_.begin(), |
+ skipped_latency_info_list_.end()); |
skipped_latency_info_list_.clear(); |
gfx::Size desired_size = client_->DelegatedFrameHostDesiredSizeInDIP(); |
@@ -487,7 +486,9 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
ack_callback = base::Bind(&DelegatedFrameHost::SurfaceDrawn, AsWeakPtr(), |
output_surface_id); |
} |
- surface_factory_->SubmitCompositorFrame(surface_id_, std::move(frame), |
+ std::unique_ptr<cc::CompositorFrame> frame_copy(new cc::CompositorFrame); |
+ *frame_copy = std::move(frame); |
+ surface_factory_->SubmitCompositorFrame(surface_id_, std::move(frame_copy), |
ack_callback); |
} |
released_front_lock_ = NULL; |