diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-16 19:37:53 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-16 19:37:53 +0000 |
commit | c0e5837700c0d2b72ae80cb2805c3ea967c6b478 (patch) | |
tree | a442630494e83d5713cb25335f3e3ee2c1839c82 /android_webview | |
parent | a6b91f36aebf2fafe42e6c075c58e9f129155b46 (diff) | |
download | chromium_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.cc | 13 | ||||
-rw-r--r-- | android_webview/browser/hardware_renderer.h | 3 |
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. |