Chromium Code Reviews| 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 73652f023e27f3afed577d177ab2df14383d8a33..dd168621d4ccf389242146788fb609cd07b9e8f4 100644 |
| --- a/content/browser/renderer_host/render_widget_host_impl.cc |
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc |
| @@ -147,6 +147,7 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, |
| is_accelerated_compositing_active_(false), |
| repaint_ack_pending_(false), |
| resize_ack_pending_(false), |
| + renderer_screen_info_out_of_date_(false), |
| overdraw_bottom_height_(0.f), |
| should_auto_resize_(false), |
| waiting_for_screen_rects_ack_(false), |
| @@ -526,6 +527,7 @@ void RenderWidgetHostImpl::WasResized() { |
| bool size_changed = new_size != current_size_; |
| bool side_payload_changed = |
| + renderer_screen_info_out_of_date_ || |
| old_physical_backing_size != physical_backing_size_ || |
| was_fullscreen != is_fullscreen_ || |
| old_overdraw_bottom_height != overdraw_bottom_height_; |
| @@ -542,12 +544,18 @@ void RenderWidgetHostImpl::WasResized() { |
| if (!new_size.IsEmpty() && !physical_backing_size_.IsEmpty() && size_changed) |
| resize_ack_pending_ = true; |
| - if (!Send(new ViewMsg_Resize(routing_id_, new_size, physical_backing_size_, |
| - overdraw_bottom_height_, |
| - GetRootWindowResizerRect(), is_fullscreen_))) { |
| + ViewMsg_Resize_Params params; |
| + GetWebScreenInfo(¶ms.screen_info); |
|
piman
2013/05/25 00:37:25
This could be a bit expensive, like round-tripping
ccameron
2013/05/25 01:53:37
Yes, I was on the fence about this. I didn't initi
|
| + params.new_size = new_size; |
| + params.physical_backing_size = physical_backing_size_; |
| + params.overdraw_bottom_height = overdraw_bottom_height_; |
| + params.resizer_rect = GetRootWindowResizerRect(); |
| + params.is_fullscreen = is_fullscreen_; |
| + if (!Send(new ViewMsg_Resize(routing_id_, params))) { |
| resize_ack_pending_ = false; |
| } else { |
| in_flight_size_ = new_size; |
| + renderer_screen_info_out_of_date_ = false; |
| } |
| } |
| @@ -1333,9 +1341,11 @@ const NativeWebKeyboardEvent* |
| } |
| void RenderWidgetHostImpl::NotifyScreenInfoChanged() { |
| - WebKit::WebScreenInfo screen_info; |
| - GetWebScreenInfo(&screen_info); |
| - Send(new ViewMsg_ScreenInfoChanged(GetRoutingID(), screen_info)); |
| + // The resize message (which may not happen immediately) will carry with it |
| + // the screen info as well as the new size (if the screen has changed scale |
| + // factor). |
| + renderer_screen_info_out_of_date_ = true; |
| + WasResized(); |
| } |
| void RenderWidgetHostImpl::GetSnapshotFromRenderer( |