Index: content/renderer/gpu/renderer_compositor_frame_sink.cc |
diff --git a/content/renderer/gpu/renderer_compositor_frame_sink.cc b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
index 16ccae09e0618e338d0de11d2f4676883ea6cb42..662a9d2335104161d0c2492a30d91da40e2060de 100644 |
--- a/content/renderer/gpu/renderer_compositor_frame_sink.cc |
+++ b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
@@ -109,6 +109,17 @@ void RendererCompositorFrameSink::DetachFromClient() { |
void RendererCompositorFrameSink::SubmitCompositorFrame( |
cc::CompositorFrame frame) { |
+ float device_scale_factor = frame.metadata.device_scale_factor; |
+ cc::RenderPass* root_pass = frame.render_pass_list.back().get(); |
+ gfx::Size frame_size = root_pass->output_rect.size(); |
+ |
+ if (!local_surface_id_.is_valid() || frame_size != last_frame_size_ || |
Fady Samuel
2017/03/15 12:05:48
As discussed offline you need all the conditions c
Saman Sami
2017/03/16 18:33:07
Done.
|
+ device_scale_factor != last_device_scale_factor_) |
+ local_surface_id_ = id_allocator_.GenerateId(); |
+ |
+ last_frame_size_ = frame_size; |
+ last_device_scale_factor_ = device_scale_factor; |
+ |
{ |
std::unique_ptr<FrameSwapMessageQueue::SendMessageScope> |
send_message_scope = |
@@ -118,9 +129,9 @@ void RendererCompositorFrameSink::SubmitCompositorFrame( |
frame_swap_message_queue_->DrainMessages(&messages); |
FrameSwapMessageQueue::TransferMessages(&messages, |
&messages_to_deliver_with_frame); |
- Send(new ViewHostMsg_SwapCompositorFrame(routing_id_, |
- compositor_frame_sink_id_, frame, |
- messages_to_deliver_with_frame)); |
+ Send(new ViewHostMsg_SwapCompositorFrame( |
+ routing_id_, compositor_frame_sink_id_, local_surface_id_, frame, |
+ messages_to_deliver_with_frame)); |
// ~send_message_scope. |
} |
} |