| Index: android_webview/browser/shared_renderer_state.cc
|
| diff --git a/android_webview/browser/shared_renderer_state.cc b/android_webview/browser/shared_renderer_state.cc
|
| index 508fdc4ee73c852fceb05932e07858e636b2d3b4..1dd6462aca65a33cafae7405cdcf027f6128dda6 100644
|
| --- a/android_webview/browser/shared_renderer_state.cc
|
| +++ b/android_webview/browser/shared_renderer_state.cc
|
| @@ -81,6 +81,7 @@ SharedRendererState::SharedRendererState(
|
| weak_factory_on_ui_thread_(this),
|
| ui_thread_weak_ptr_(weak_factory_on_ui_thread_.GetWeakPtr()),
|
| inside_hardware_release_(false),
|
| + needs_force_invalidate_on_next_draw_gl_(false),
|
| share_context_(NULL) {
|
| DCHECK(ui_loop_->BelongsToCurrentThread());
|
| DCHECK(client_on_ui_);
|
| @@ -146,21 +147,27 @@ scoped_ptr<DrawGLInput> SharedRendererState::PassDrawGLInput() {
|
| return draw_gl_input_.Pass();
|
| }
|
|
|
| -void SharedRendererState::UpdateDrawConstraints(
|
| +bool SharedRendererState::UpdateDrawConstraints(
|
| const ParentCompositorDrawConstraints& parent_draw_constraints) {
|
| base::AutoLock lock(lock_);
|
| - parent_draw_constraints_ = parent_draw_constraints;
|
| + if (needs_force_invalidate_on_next_draw_gl_ ||
|
| + !parent_draw_constraints_.Equals(parent_draw_constraints)) {
|
| + parent_draw_constraints_ = parent_draw_constraints;
|
| + return true;
|
| + }
|
| +
|
| + return false;
|
| }
|
|
|
| void SharedRendererState::PostExternalDrawConstraintsToChildCompositor(
|
| const ParentCompositorDrawConstraints& parent_draw_constraints) {
|
| - UpdateDrawConstraints(parent_draw_constraints);
|
| -
|
| - // No need to hold the lock_ during the post task.
|
| - ui_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&SharedRendererState::UpdateParentDrawConstraintsOnUIThread,
|
| - ui_thread_weak_ptr_));
|
| + if (UpdateDrawConstraints(parent_draw_constraints)) {
|
| + // No need to hold the lock_ during the post task.
|
| + ui_loop_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&SharedRendererState::UpdateParentDrawConstraintsOnUIThread,
|
| + ui_thread_weak_ptr_));
|
| + }
|
| }
|
|
|
| const ParentCompositorDrawConstraints
|
| @@ -169,6 +176,18 @@ SharedRendererState::ParentDrawConstraints() const {
|
| return parent_draw_constraints_;
|
| }
|
|
|
| +void SharedRendererState::SetForceInvalidateOnNextDrawGL(
|
| + bool needs_force_invalidate_on_next_draw_gl) {
|
| + base::AutoLock lock(lock_);
|
| + needs_force_invalidate_on_next_draw_gl_ =
|
| + needs_force_invalidate_on_next_draw_gl;
|
| +}
|
| +
|
| +bool SharedRendererState::NeedsForceInvalidateOnNextDrawGL() const {
|
| + base::AutoLock lock(lock_);
|
| + return needs_force_invalidate_on_next_draw_gl_;
|
| +}
|
| +
|
| void SharedRendererState::SetInsideHardwareRelease(bool inside) {
|
| base::AutoLock lock(lock_);
|
| inside_hardware_release_ = inside;
|
|
|