Chromium Code Reviews| 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 8382811d8010dd1aa4e1cf30428cdfdc807f174e..ba9c4338c20c95c5953fd137a2e724c409e1481e 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_android.cc |
| +++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
| @@ -46,6 +46,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" |
| @@ -116,7 +117,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
| flush_input_requested_(false), |
| accelerated_surface_route_id_(0) { |
| if (!UsingDelegatedRenderer()) { |
| - texture_layer_ = cc::TextureLayer::Create(this); |
| + texture_layer_ = cc::TextureLayer::Create(NULL); |
| layer_ = texture_layer_; |
| } |
| @@ -133,6 +134,10 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
| host_->SetView(this); |
| SetContentViewCore(content_view_core); |
| ImageTransportFactoryAndroid::AddObserver(this); |
| + |
| + using_synchronous_compositor_ = |
| + SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), |
| + host_->GetRoutingID()) != NULL; |
| } |
| RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { |
| @@ -192,6 +197,9 @@ void RenderWidgetHostViewAndroid::WasShown() { |
| return; |
| host_->WasShown(); |
| + |
| + if (content_view_core_ && !using_synchronous_compositor_) |
| + content_view_core_->GetWindowAndroid()->AddObserver(this); |
|
Ted C
2013/11/16 01:04:08
-2 indent.
In the event content_view_core_ wasn't
powei
2013/11/18 19:29:59
Done for indent.
I don't think we're necessarily
|
| } |
| void RenderWidgetHostViewAndroid::WasHidden() { |
| @@ -203,6 +211,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); |
|
Ted C
2013/11/16 01:04:08
-2 indent
powei
2013/11/18 19:29:59
Done.
|
| } |
| void RenderWidgetHostViewAndroid::WasResized() { |
| @@ -506,7 +517,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; |
| @@ -708,7 +719,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(); |
| @@ -846,6 +857,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); |
| } |
| @@ -1244,6 +1256,11 @@ void RenderWidgetHostViewAndroid::SetContentViewCore( |
| if (are_layers_attached_) |
| RemoveLayers(); |
| + if (content_view_core == NULL) { |
|
Ted C
2013/11/16 01:04:08
Shouldn't need the == NULL
powei
2013/11/18 19:29:59
Done. Followed suggestion below.
|
| + if (content_view_core_ && !using_synchronous_compositor_) |
|
boliu
2013/11/16 00:42:56
Why does value of new content_view_core matter her
Ted C
2013/11/16 01:04:08
Yeah, maybe it should be content_view_core != cont
powei
2013/11/18 19:29:59
Done.
|
| + content_view_core_->GetWindowAndroid()->RemoveObserver(this); |
| + } |
| + |
| content_view_core_ = content_view_core; |
| if (GetBrowserAccessibilityManager()) { |
| @@ -1254,8 +1271,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() { |
| @@ -1271,22 +1291,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); |