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 582908eb39e699abb54e00ef9294bbd8fe0acc98..aeb8fd17adfc497390da775602b2b772d3ecba8b 100644 |
--- a/android_webview/browser/shared_renderer_state.cc |
+++ b/android_webview/browser/shared_renderer_state.cc |
@@ -7,6 +7,8 @@ |
#include "android_webview/browser/browser_view_renderer_client.h" |
#include "base/bind.h" |
#include "base/location.h" |
+#include "cc/output/compositor_frame.h" |
boliu
2014/07/29 19:02:42
remove both
|
+#include "content/public/browser/android/synchronous_compositor.h" |
namespace android_webview { |
@@ -51,6 +53,18 @@ void SharedRendererState::ClientRequestDrawGLOnUIThread() { |
} |
} |
+void SharedRendererState::ClientPostInvalidateIfNeeded() { |
+ ui_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&SharedRendererState::ClientPostInvalidateIfNeededOnUIThread, |
+ ui_thread_weak_ptr_)); |
+} |
+ |
+void SharedRendererState::ClientPostInvalidateIfNeededOnUIThread() { |
+ DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ client_on_ui_->EnsureContinuousInvalidation(true); |
+} |
+ |
void SharedRendererState::SetDrawGLInput(scoped_ptr<DrawGLInput> input) { |
base::AutoLock lock(lock_); |
DCHECK(!draw_gl_input_.get()); |
@@ -62,6 +76,23 @@ scoped_ptr<DrawGLInput> SharedRendererState::PassDrawGLInput() { |
return draw_gl_input_.Pass(); |
} |
+void SharedRendererState::PostExternalDrawConstraintsToChildCompositor( |
+ const ParentCompositorDrawConstraints& parent_draw_constraints) { |
+ { |
+ base::AutoLock lock(lock_); |
+ parent_draw_constraints_ = parent_draw_constraints; |
+ } |
+ |
+ // No need to hold the lock_ during the post task. |
+ ClientPostInvalidateIfNeeded(); |
+} |
+ |
+const ParentCompositorDrawConstraints& |
+SharedRendererState::ParentDrawConstraints() const { |
+ base::AutoLock lock(lock_); |
+ return parent_draw_constraints_; |
+} |
+ |
void SharedRendererState::SetInsideHardwareRelease(bool inside) { |
base::AutoLock lock(lock_); |
inside_hardware_release_ = inside; |