Index: android_webview/browser/hardware_renderer.cc |
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc |
index 186e744e6bb45868b2bbaf39013016412f5037fe..c988cc58451d77b577ce97e2e70d6c788bae6508 100644 |
--- a/android_webview/browser/hardware_renderer.cc |
+++ b/android_webview/browser/hardware_renderer.cc |
@@ -118,14 +118,17 @@ void HardwareRenderer::DrawGL(AwDrawGLInfo* draw_info) { |
std::unique_ptr<cc::CompositorFrame> child_compositor_frame = |
std::move(child_frame_->frame); |
+ float device_scale_factor = |
+ child_compositor_frame->metadata.device_scale_factor; |
gfx::Size frame_size = |
child_compositor_frame->render_pass_list.back()->output_rect.size(); |
- bool size_changed = frame_size != frame_size_; |
- frame_size_ = frame_size; |
- if (!child_id_.is_valid() || size_changed) { |
+ if (!child_id_.is_valid() || surface_size_ != frame_size || |
+ device_scale_factor_ != device_scale_factor) { |
if (child_id_.is_valid()) |
DestroySurface(); |
AllocateSurface(); |
+ surface_size_ = frame_size; |
+ device_scale_factor_ = device_scale_factor; |
} |
support_->SubmitCompositorFrame(child_id_, |
@@ -153,7 +156,7 @@ void HardwareRenderer::DrawGL(AwDrawGLInfo* draw_info) { |
gfx::Rect clip(draw_info->clip_left, draw_info->clip_top, |
draw_info->clip_right - draw_info->clip_left, |
draw_info->clip_bottom - draw_info->clip_top); |
- surfaces_->DrawAndSwap(viewport, clip, transform, frame_size_, |
+ surfaces_->DrawAndSwap(viewport, clip, transform, surface_size_, |
cc::SurfaceId(frame_sink_id_, child_id_)); |
} |