Chromium Code Reviews| 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. |
| } |
| } |