summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 06:36:21 +0000
committerccameron@chromium.org <ccameron@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-15 06:36:21 +0000
commit9f1576fecbe122e524cb3735f99c3fc3a1c1788d (patch)
treeda2b622d8ac574aa8160738f95be88826126bb95
parent5c20eadfe8d8e278c9483b7e37be14d893655472 (diff)
downloadchromium_src-9f1576fecbe122e524cb3735f99c3fc3a1c1788d.zip
chromium_src-9f1576fecbe122e524cb3735f99c3fc3a1c1788d.tar.gz
chromium_src-9f1576fecbe122e524cb3735f99c3fc3a1c1788d.tar.bz2
Allow software and delegated swaps to come in while waiting for resize
Also clean up the resize logic for the delegated renderer on Mac, now that the ui::Compositor components have been cleaned up. BUG=314190 Review URL: https://codereview.chromium.org/282063002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270596 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/dip_util.cc9
-rw-r--r--content/browser/renderer_host/dip_util.h2
-rw-r--r--content/browser/renderer_host/render_message_filter.cc2
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.mm19
4 files changed, 19 insertions, 13 deletions
diff --git a/content/browser/renderer_host/dip_util.cc b/content/browser/renderer_host/dip_util.cc
index f855abf..a41c4d1 100644
--- a/content/browser/renderer_host/dip_util.cc
+++ b/content/browser/renderer_host/dip_util.cc
@@ -35,13 +35,12 @@ gfx::Point ConvertViewPointToDIP(const RenderWidgetHostView* view,
gfx::Size ConvertViewSizeToPixel(const RenderWidgetHostView* view,
const gfx::Size& size_in_dip) {
- return gfx::ToFlooredSize(
- gfx::ScaleSize(size_in_dip, GetScaleForView(view)));
+ return ConvertSizeToPixel(GetScaleForView(view), size_in_dip);
}
gfx::Rect ConvertViewRectToPixel(const RenderWidgetHostView* view,
const gfx::Rect& rect_in_dip) {
- return ConvertRectToPixel(GetScaleForView(view), rect_in_dip);
+ return ConvertRectToPixel(GetScaleForView(view), rect_in_dip);
}
gfx::Size ConvertSizeToDIP(float scale_factor,
@@ -56,6 +55,10 @@ gfx::Rect ConvertRectToDIP(float scale_factor,
gfx::ScaleRect(rect_in_pixel, 1.0f / scale_factor));
}
+gfx::Size ConvertSizeToPixel(float scale_factor,
+ const gfx::Size& size_in_dip) {
+ return gfx::ToFlooredSize(gfx::ScaleSize(size_in_dip, scale_factor));
+}
gfx::Rect ConvertRectToPixel(float scale_factor,
const gfx::Rect& rect_in_dip) {
diff --git a/content/browser/renderer_host/dip_util.h b/content/browser/renderer_host/dip_util.h
index a7e1876..82c9772 100644
--- a/content/browser/renderer_host/dip_util.h
+++ b/content/browser/renderer_host/dip_util.h
@@ -35,6 +35,8 @@ CONTENT_EXPORT gfx::Size ConvertSizeToDIP(
float scale_factor, const gfx::Size& size_in_pixel);
CONTENT_EXPORT gfx::Rect ConvertRectToDIP(
float scale_factor, const gfx::Rect& rect_in_pixel);
+CONTENT_EXPORT gfx::Size ConvertSizeToPixel(
+ float scale_factor, const gfx::Size& size_in_pixel);
CONTENT_EXPORT gfx::Rect ConvertRectToPixel(
float scale_factor, const gfx::Rect& rect_in_dip);
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc
index 3895081..11f80ee 100644
--- a/content/browser/renderer_host/render_message_filter.cc
+++ b/content/browser/renderer_host/render_message_filter.cc
@@ -433,6 +433,8 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message,
IPC_MESSAGE_HANDLER(ViewHostMsg_OpenChannelToPpapiBroker,
OnOpenChannelToPpapiBroker)
#endif
+ IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_SwapCompositorFrame,
+ render_widget_helper_->DidReceiveBackingStoreMsg(message))
IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_UpdateRect,
render_widget_helper_->DidReceiveBackingStoreMsg(message))
IPC_MESSAGE_HANDLER(DesktopNotificationHostMsg_CheckPermission,
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index a2893ee..bfe9071 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -1913,17 +1913,16 @@ void RenderWidgetHostViewMac::OnSwapCompositorFrame(
frame->delegated_frame_data.Pass(),
frame->metadata.device_scale_factor,
frame->metadata.latency_info);
- gfx::Size size = ToCeiledSize(frame->metadata.viewport_size);
- float scale_factor = frame->metadata.device_scale_factor;
- if (compositor_->size() != size ||
- compositor_->device_scale_factor() != scale_factor) {
- // TODO(ccameron): The scale factor here does not result in the
- // composited frame that is received having the right scale factor. Fix
- // this.
- compositor_->SetScaleAndSize(scale_factor, size);
- root_layer_->SetBounds(gfx::Rect(size));
- }
compositor_->SetRootLayer(root_layer_.get());
+
+ // Update the compositor and root layer size and scale factor to match
+ // the frame just received.
+ float scale_factor = frame->metadata.device_scale_factor;
+ gfx::Size dip_size = ToCeiledSize(frame->metadata.viewport_size);
+ gfx::Size pixel_size = ConvertSizeToPixel(
+ scale_factor, dip_size);
+ compositor_->SetScaleAndSize(scale_factor, pixel_size);
+ root_layer_->SetBounds(gfx::Rect(dip_size));
} else if (frame->software_frame_data) {
if (!software_frame_manager_->SwapToNewFrame(
output_surface_id,