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

Unified Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 26753005: Adding compositor callbacks to RenderWidgetHostViewAndroid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 7 years, 1 month 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
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..d014f19897e6f726bf21600ab0d9a961de1e8390 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,8 @@
#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/base/android/window_android_observer.h"
no sievers 2013/11/15 20:15:20 nit: already included in the header, since RWHV im
powei 2013/11/15 22:41:28 Done.
#include "ui/gfx/android/device_display_info.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/display.h"
@@ -116,7 +118,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 +135,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 +198,9 @@ void RenderWidgetHostViewAndroid::WasShown() {
return;
host_->WasShown();
+
+ if (content_view_core_ && !using_synchronous_compositor_)
+ content_view_core_->GetWindowAndroid()->AddObserver(this);
}
void RenderWidgetHostViewAndroid::WasHidden() {
@@ -203,6 +212,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() {
@@ -506,7 +518,8 @@ void RenderWidgetHostViewAndroid::RenderProcessGone(
void RenderWidgetHostViewAndroid::Destroy() {
RemoveLayers();
- content_view_core_ = NULL;
+ // This must happen before setting host_ NULL.
+ SetContentViewCore(NULL);
// The RenderWidgetHost's destruction led here, so don't call it.
host_ = NULL;
@@ -708,7 +721,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 +859,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 +1258,11 @@ void RenderWidgetHostViewAndroid::SetContentViewCore(
if (are_layers_attached_)
RemoveLayers();
+ if (content_view_core == NULL) {
+ if (content_view_core_ && !using_synchronous_compositor_)
+ content_view_core_->GetWindowAndroid()->RemoveObserver(this);
+ }
+
content_view_core_ = content_view_core;
if (GetBrowserAccessibilityManager()) {
@@ -1254,8 +1273,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 +1293,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);

Powered by Google App Engine
This is Rietveld 408576698