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 8845b761cd252c16592d4480003288e53b07de09..a826f1c0781796ad5ab827c67d7e34da3e592613 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" |
+#include "content/public/browser/android/synchronous_compositor.h" |
namespace android_webview { |
@@ -51,6 +53,22 @@ void SharedRendererState::ClientRequestDrawGLOnUIThread() { |
} |
} |
+void SharedRendererState::ClientPostInvalidate() { |
+ if (ui_loop_->BelongsToCurrentThread()) { |
+ ClientPostInvalidateOnUIThread(); |
+ } else { |
+ ui_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&SharedRendererState::ClientPostInvalidateOnUIThread, |
+ ui_thread_weak_ptr_)); |
+ } |
+} |
+ |
+void SharedRendererState::ClientPostInvalidateOnUIThread() { |
+ DCHECK(ui_loop_->BelongsToCurrentThread()); |
+ client_on_ui_->PostInvalidate(); |
+} |
+ |
void SharedRendererState::SetDrawGLInput(scoped_ptr<DrawGLInput> input) { |
base::AutoLock lock(lock_); |
DCHECK(!draw_gl_input_.get()); |
@@ -62,6 +80,19 @@ scoped_ptr<DrawGLInput> SharedRendererState::PassDrawGLInput() { |
return draw_gl_input_.Pass(); |
} |
+void SharedRendererState::PostExternalMatrixToChildCompositor( |
+ const gfx::Transform& transform) { |
+ base::AutoLock lock(lock_); |
+ parent_transform_ = transform; |
+ |
+ ClientPostInvalidate(); |
+} |
+ |
+const gfx::Transform& SharedRendererState::ParentTransform() const { |
+ base::AutoLock lock(lock_); |
+ return parent_transform_; |
+} |
+ |
void SharedRendererState::SetHardwareAllowed(bool allowed) { |
base::AutoLock lock(lock_); |
hardware_allowed_ = allowed; |