summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-16 19:37:53 +0000
committerboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-16 19:37:53 +0000
commitc0e5837700c0d2b72ae80cb2805c3ea967c6b478 (patch)
treea442630494e83d5713cb25335f3e3ee2c1839c82 /android_webview
parenta6b91f36aebf2fafe42e6c075c58e9f129155b46 (diff)
downloadchromium_src-c0e5837700c0d2b72ae80cb2805c3ea967c6b478.zip
chromium_src-c0e5837700c0d2b72ae80cb2805c3ea967c6b478.tar.gz
chromium_src-c0e5837700c0d2b72ae80cb2805c3ea967c6b478.tar.bz2
aw: Fix delegated rendering size changing
View size does not necessarily indicate root render pass size, since the render pass can be smaller, and thus can change when view size stays the same. Check render pass size changes instead. BUG=344087 NOTRY=true Review URL: https://codereview.chromium.org/331093002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/browser/hardware_renderer.cc13
-rw-r--r--android_webview/browser/hardware_renderer.h3
2 files changed, 7 insertions, 9 deletions
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc
index d83e943..a1518005 100644
--- a/android_webview/browser/hardware_renderer.cc
+++ b/android_webview/browser/hardware_renderer.cc
@@ -74,8 +74,6 @@ scoped_refptr<cc::ContextProvider> CreateContext(
HardwareRenderer::HardwareRenderer(SharedRendererState* state)
: shared_renderer_state_(state),
last_egl_context_(eglGetCurrentContext()),
- view_width_(-1),
- view_height_(-1),
viewport_clip_valid_for_dcheck_(false),
root_layer_(cc::Layer::Create()),
output_surface_(NULL) {
@@ -161,10 +159,11 @@ bool HardwareRenderer::DrawGL(bool stencil_enabled,
// suppresses the transform.
input->frame.delegated_frame_data->device_scale_factor = 1.0f;
- bool size_changed =
- input->width != view_width_ || input->height != view_height_;
- view_width_ = input->width;
- view_height_ = input->height;
+ gfx::Size frame_size =
+ input->frame.delegated_frame_data->render_pass_list.back()
+ ->output_rect.size();
+ bool size_changed = frame_size != frame_size_;
+ frame_size_ = frame_size;
scroll_offset_ = input->scroll_offset;
if (!frame_provider_ || size_changed) {
@@ -176,7 +175,7 @@ bool HardwareRenderer::DrawGL(bool stencil_enabled,
resource_collection_.get(), input->frame.delegated_frame_data.Pass());
delegated_layer_ = cc::DelegatedRendererLayer::Create(frame_provider_);
- delegated_layer_->SetBounds(gfx::Size(view_width_, view_height_));
+ delegated_layer_->SetBounds(gfx::Size(input->width, input->height));
delegated_layer_->SetIsDrawable(true);
root_layer_->AddChild(delegated_layer_);
diff --git a/android_webview/browser/hardware_renderer.h b/android_webview/browser/hardware_renderer.h
index 8adbf0e..d2bf596 100644
--- a/android_webview/browser/hardware_renderer.h
+++ b/android_webview/browser/hardware_renderer.h
@@ -71,8 +71,7 @@ class HardwareRenderer : public HardwareRendererInterface,
EGLContext last_egl_context_;
// Information about last delegated frame.
- int view_width_;
- int view_height_;
+ gfx::Size frame_size_;
gfx::Vector2d scroll_offset_;
// Information from draw.