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

Unified Diff: android_webview/browser/shared_renderer_state.cc

Issue 599633004: Android WebView: fix missing an invalidate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2125
Patch Set: Created 6 years, 3 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/shared_renderer_state.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « android_webview/browser/shared_renderer_state.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698