Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2226)

Unified Diff: android_webview/browser/hardware_renderer.cc

Issue 2848223003: Enforce constant size and device scale factor for surfaces (Closed)
Patch Set: Address comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/browser/hardware_renderer.h ('k') | android_webview/browser/surfaces_instance.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/browser/hardware_renderer.cc
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc
index b51a383ecf3ed906ce83896ce9b25cecb1bfbb2b..f4962320364f7e100cf32147643c1a17686cef0f 100644
--- a/android_webview/browser/hardware_renderer.cc
+++ b/android_webview/browser/hardware_renderer.cc
@@ -118,18 +118,22 @@ 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_,
- std::move(*child_compositor_frame));
+ bool result = support_->SubmitCompositorFrame(
+ child_id_, std::move(*child_compositor_frame));
+ DCHECK(result);
}
gfx::Transform transform(gfx::Transform::kSkipInitialization);
@@ -153,7 +157,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_));
}
@@ -167,7 +171,7 @@ void HardwareRenderer::DestroySurface() {
DCHECK(child_id_.is_valid());
// Submit an empty frame to force any existing resources to be returned.
- gfx::Rect rect(frame_size_);
+ gfx::Rect rect(surface_size_);
std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
render_pass->SetNew(1, rect, rect, gfx::Transform());
cc::CompositorFrame frame;
@@ -175,7 +179,9 @@ void HardwareRenderer::DestroySurface() {
// We submit without a prior BeginFrame, so acknowledge a manual BeginFrame.
frame.metadata.begin_frame_ack =
cc::BeginFrameAck::CreateManualAckWithDamage();
- support_->SubmitCompositorFrame(child_id_, std::move(frame));
+ frame.metadata.device_scale_factor = device_scale_factor_;
+ bool result = support_->SubmitCompositorFrame(child_id_, std::move(frame));
+ DCHECK(result);
surfaces_->RemoveChildId(cc::SurfaceId(frame_sink_id_, child_id_));
support_->EvictCurrentSurface();
« no previous file with comments | « android_webview/browser/hardware_renderer.h ('k') | android_webview/browser/surfaces_instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698