| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index dbc1a4d624d827db77f9452c8095c552b878dbe6..b9f6ec8d437df47e436330bfc175c9e4f907aff3 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -2546,29 +2546,21 @@ void RenderWidgetHostImpl::SetNeedsBeginFrame(bool needs_begin_frame) {
|
| void RenderWidgetHostImpl::SubmitCompositorFrame(
|
| const cc::LocalSurfaceId& local_surface_id,
|
| cc::CompositorFrame frame) {
|
| - // The renderer must allocate a new LocalSurfaceId if frame size or device
|
| - // scale factor changes.
|
| - float device_scale_factor = frame.metadata.device_scale_factor;
|
| - const gfx::Size& frame_size =
|
| - frame.render_pass_list.back()->output_rect.size();
|
| + auto new_surface_properties =
|
| + RenderWidgetSurfaceProperties::FromCompositorFrame(frame);
|
| +
|
| if (local_surface_id == last_local_surface_id_ &&
|
| - (frame_size != last_frame_size_ ||
|
| - device_scale_factor != last_device_scale_factor_)) {
|
| - DLOG(ERROR) << "Renderer submitted frame of wrong size to its surface."
|
| - << " Expected: size=" << last_frame_size_.ToString()
|
| - << ",scale=" << last_device_scale_factor_
|
| - << " Received: size=" << frame_size.ToString()
|
| - << ",scale=" << device_scale_factor;
|
| + new_surface_properties != last_surface_properties_) {
|
| + bad_message::ReceivedBadMessage(
|
| + GetProcess(), bad_message::RWH_SURFACE_INVARIANTS_VIOLATION);
|
| return;
|
| }
|
|
|
| - uint32_t frame_token = frame.metadata.frame_token;
|
| -
|
| last_local_surface_id_ = local_surface_id;
|
| - last_frame_size_ = frame_size;
|
| - last_device_scale_factor_ = device_scale_factor;
|
| + last_surface_properties_ = new_surface_properties;
|
|
|
| last_received_content_source_id_ = frame.metadata.content_source_id;
|
| + uint32_t frame_token = frame.metadata.frame_token;
|
|
|
| // |has_damage| is not transmitted.
|
| frame.metadata.begin_frame_ack.has_damage = true;
|
|
|