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

Unified Diff: android_webview/browser/shared_renderer_state.cc

Issue 603633003: Android WebView: fix missing an invalidate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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 2286fcfdda4f07c90551c6009dd7fc1de6db03d2..6ecbf923e048682efc8d147b5e0b543ce38ef186 100644
--- a/android_webview/browser/shared_renderer_state.cc
+++ b/android_webview/browser/shared_renderer_state.cc
@@ -79,7 +79,8 @@ SharedRendererState::SharedRendererState(
: ui_loop_(ui_loop),
client_on_ui_(client),
inside_hardware_release_(false),
- weak_factory_on_ui_thread_(this){
+ needs_force_invalidate_on_next_draw_gl_(false),
+ weak_factory_on_ui_thread_(this) {
DCHECK(ui_loop_->BelongsToCurrentThread());
DCHECK(client_on_ui_);
ui_thread_weak_ptr_ = weak_factory_on_ui_thread_.GetWeakPtr();
@@ -150,21 +151,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
@@ -173,6 +180,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