Index: content/browser/frame_host/render_widget_host_view_child_frame.cc |
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc |
index 083f808613b3dcd76374d7da97e2f17f9e75098d..2d155bccc2f19ff27e8b8a5810692dfa392b57e6 100644 |
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc |
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc |
@@ -58,7 +58,6 @@ RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame( |
current_surface_scale_factor_(1.f), |
frame_connector_(nullptr), |
weak_factory_(this) { |
- id_allocator_.reset(new cc::LocalSurfaceIdAllocator()); |
GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_); |
CreateCompositorFrameSinkSupport(); |
} |
@@ -351,6 +350,7 @@ void RenderWidgetHostViewChildFrame::DidReceiveCompositorFrameAck() { |
void RenderWidgetHostViewChildFrame::ProcessCompositorFrame( |
uint32_t compositor_frame_sink_id, |
+ const cc::LocalSurfaceId& local_surface_id, |
cc::CompositorFrame frame) { |
// If the renderer changed its frame sink, reset the |
// CompositorFrameSinkSupport to avoid returning stale resources. |
@@ -358,26 +358,19 @@ void RenderWidgetHostViewChildFrame::ProcessCompositorFrame( |
ResetCompositorFrameSinkSupport(); |
CreateCompositorFrameSinkSupport(); |
last_compositor_frame_sink_id_ = compositor_frame_sink_id; |
- local_surface_id_ = cc::LocalSurfaceId(); |
} |
- gfx::Size new_frame_size = frame.render_pass_list.back()->output_rect.size(); |
- float new_scale_factor = frame.metadata.device_scale_factor; |
- bool allocated_new_local_surface_id = false; |
- if (!local_surface_id_.is_valid() || |
- new_frame_size != current_surface_size_ || |
- new_scale_factor != current_surface_scale_factor_) { |
- local_surface_id_ = id_allocator_->GenerateId(); |
- current_surface_size_ = frame.render_pass_list.back()->output_rect.size(); |
- current_surface_scale_factor_ = frame.metadata.device_scale_factor; |
- allocated_new_local_surface_id = true; |
- } |
+ current_surface_size_ = frame.render_pass_list.back()->output_rect.size(); |
+ current_surface_scale_factor_ = frame.metadata.device_scale_factor; |
- support_->SubmitCompositorFrame(local_surface_id_, std::move(frame)); |
+ support_->SubmitCompositorFrame(local_surface_id, std::move(frame)); |
has_frame_ = true; |
- if (allocated_new_local_surface_id || HasEmbedderChanged()) |
+ if (local_surface_id_ != local_surface_id || HasEmbedderChanged()) { |
+ local_surface_id_ = local_surface_id; |
SendSurfaceInfoToEmbedder(); |
+ } |
+ |
ProcessFrameSwappedCallbacks(); |
} |
@@ -402,13 +395,15 @@ void RenderWidgetHostViewChildFrame::SendSurfaceInfoToEmbedderImpl( |
void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame( |
uint32_t compositor_frame_sink_id, |
+ const cc::LocalSurfaceId& local_surface_id, |
cc::CompositorFrame frame) { |
TRACE_EVENT0("content", |
"RenderWidgetHostViewChildFrame::OnSwapCompositorFrame"); |
last_scroll_offset_ = frame.metadata.root_scroll_offset; |
if (!frame_connector_) |
return; |
- ProcessCompositorFrame(compositor_frame_sink_id, std::move(frame)); |
+ ProcessCompositorFrame(compositor_frame_sink_id, local_surface_id, |
+ std::move(frame)); |
} |
void RenderWidgetHostViewChildFrame::ProcessFrameSwappedCallbacks() { |