| Index: content/browser/renderer_host/render_widget_host_view_android.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| index 5e590d85f7afd15c81d3634fe198c19e2566ceaa..fe64d9240c1ca08a6ab3fbb4bb6cd3e3cea82514 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
|
| @@ -45,6 +45,7 @@
|
| #include "skia/ext/image_operations.h"
|
| #include "third_party/khronos/GLES2/gl2.h"
|
| #include "third_party/khronos/GLES2/gl2ext.h"
|
| +#include "ui/base/android/window_android.h"
|
| #include "ui/gfx/android/device_display_info.h"
|
| #include "ui/gfx/android/java_bitmap.h"
|
| #include "ui/gfx/display.h"
|
| @@ -112,9 +113,12 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
|
| weak_ptr_factory_(this),
|
| overscroll_effect_enabled_(true),
|
| flush_input_requested_(false),
|
| - accelerated_surface_route_id_(0) {
|
| + accelerated_surface_route_id_(0),
|
| + using_synchronous_compositor_(SynchronousCompositorImpl::FromID(
|
| + widget_host->GetProcess()->GetID(),
|
| + widget_host->GetRoutingID()) != NULL) {
|
| if (!UsingDelegatedRenderer()) {
|
| - texture_layer_ = cc::TextureLayer::Create(this);
|
| + texture_layer_ = cc::TextureLayer::Create(NULL);
|
| layer_ = texture_layer_;
|
| }
|
|
|
| @@ -190,6 +194,9 @@ void RenderWidgetHostViewAndroid::WasShown() {
|
| return;
|
|
|
| host_->WasShown();
|
| +
|
| + if (content_view_core_ && !using_synchronous_compositor_)
|
| + content_view_core_->GetWindowAndroid()->AddObserver(this);
|
| }
|
|
|
| void RenderWidgetHostViewAndroid::WasHidden() {
|
| @@ -201,6 +208,9 @@ void RenderWidgetHostViewAndroid::WasHidden() {
|
| // Inform the renderer that we are being hidden so it can reduce its resource
|
| // utilization.
|
| host_->WasHidden();
|
| +
|
| + if (content_view_core_ && !using_synchronous_compositor_)
|
| + content_view_core_->GetWindowAndroid()->RemoveObserver(this);
|
| }
|
|
|
| void RenderWidgetHostViewAndroid::WasResized() {
|
| @@ -504,7 +514,7 @@ void RenderWidgetHostViewAndroid::RenderProcessGone(
|
|
|
| void RenderWidgetHostViewAndroid::Destroy() {
|
| RemoveLayers();
|
| - content_view_core_ = NULL;
|
| + SetContentViewCore(NULL);
|
|
|
| // The RenderWidgetHost's destruction led here, so don't call it.
|
| host_ = NULL;
|
| @@ -682,7 +692,7 @@ void RenderWidgetHostViewAndroid::SwapDelegatedFrame(
|
| frame_provider_ = new cc::DelegatedFrameProvider(
|
| resource_collection_.get(), frame_data.Pass());
|
| delegated_renderer_layer_ =
|
| - cc::DelegatedRendererLayer::Create(this, frame_provider_);
|
| + cc::DelegatedRendererLayer::Create(NULL, frame_provider_);
|
| layer_ = delegated_renderer_layer_;
|
| if (are_layers_attached_)
|
| AttachLayers();
|
| @@ -820,6 +830,7 @@ void RenderWidgetHostViewAndroid::BuffersSwapped(
|
|
|
| if (!texture_id_in_layer_) {
|
| texture_id_in_layer_ = factory->CreateTexture();
|
| + texture_layer_->SetTextureId(texture_id_in_layer_);
|
| texture_layer_->SetIsDrawable(true);
|
| texture_layer_->SetContentsOpaque(true);
|
| }
|
| @@ -1218,6 +1229,9 @@ void RenderWidgetHostViewAndroid::SetContentViewCore(
|
| if (are_layers_attached_)
|
| RemoveLayers();
|
|
|
| + if (content_view_core_ && !using_synchronous_compositor_)
|
| + content_view_core_->GetWindowAndroid()->RemoveObserver(this);
|
| +
|
| content_view_core_ = content_view_core;
|
|
|
| if (GetBrowserAccessibilityManager()) {
|
| @@ -1228,8 +1242,11 @@ void RenderWidgetHostViewAndroid::SetContentViewCore(
|
| SetContentViewCore(obj);
|
| }
|
|
|
| - if (are_layers_attached_)
|
| + if (are_layers_attached_) {
|
| AttachLayers();
|
| + if (content_view_core_ && !using_synchronous_compositor_)
|
| + content_view_core_->GetWindowAndroid()->AddObserver(this);
|
| + }
|
| }
|
|
|
| void RenderWidgetHostViewAndroid::RunAckCallbacks() {
|
| @@ -1245,22 +1262,16 @@ void RenderWidgetHostViewAndroid::HasTouchEventHandlers(
|
| content_view_core_->HasTouchEventHandlers(need_touch_events);
|
| }
|
|
|
| -unsigned RenderWidgetHostViewAndroid::PrepareTexture() {
|
| +void RenderWidgetHostViewAndroid::OnCompositingDidCommit() {
|
| RunAckCallbacks();
|
| - return texture_id_in_layer_;
|
| }
|
|
|
| -void RenderWidgetHostViewAndroid::DidCommitFrameData() {
|
| +void RenderWidgetHostViewAndroid::OnDetachCompositor() {
|
| + DCHECK(content_view_core_);
|
| + DCHECK(!using_synchronous_compositor_);
|
| RunAckCallbacks();
|
| }
|
|
|
| -bool RenderWidgetHostViewAndroid::PrepareTextureMailbox(
|
| - cc::TextureMailbox* mailbox,
|
| - scoped_ptr<cc::SingleReleaseCallback>* release_callback,
|
| - bool use_shared_memory) {
|
| - return false;
|
| -}
|
| -
|
| void RenderWidgetHostViewAndroid::OnLostResources() {
|
| if (texture_layer_.get())
|
| texture_layer_->SetIsDrawable(false);
|
|
|