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

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: Separate Compositor plumbing from SetContentView Created 7 years, 2 months 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 a1b4e264583b4b82157b4b99a51c5a9eb5e548cb..34ce54140a7d56048576b45828abd2063d4a3c16 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -30,6 +30,7 @@
#include "content/browser/android/overscroll_glow.h"
#include "content/browser/gpu/gpu_surface_tracker.h"
#include "content/browser/renderer_host/compositor_impl_android.h"
+#include "content/browser/renderer_host/compositor_observer.h"
#include "content/browser/renderer_host/dip_util.h"
#include "content/browser/renderer_host/generic_touch_gesture_android.h"
#include "content/browser/renderer_host/image_transport_factory_android.h"
@@ -120,9 +121,10 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId),
weak_ptr_factory_(this),
overscroll_effect_enabled_(true),
- flush_input_requested_(false) {
+ flush_input_requested_(false),
+ compositor_(NULL) {
if (!UsingDelegatedRenderer()) {
- texture_layer_ = cc::TextureLayer::Create(this);
+ texture_layer_ = cc::TextureLayer::Create(NULL);
layer_ = texture_layer_;
}
@@ -152,6 +154,10 @@ RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() {
if (texture_layer_.get())
texture_layer_->ClearClient();
+
+ if (compositor_) {
aelias_OOO_until_Jul13 2013/10/19 03:43:27 nit: no {}. Likewise in many other clauses with o
powei 2013/11/08 21:34:47 Done.
+ compositor_->RemoveObserver(this);
+ }
}
@@ -195,6 +201,10 @@ void RenderWidgetHostViewAndroid::WasShown() {
return;
host_->WasShown();
+
+ if (compositor_ && !compositor_->HasObserver(this)) {
aelias_OOO_until_Jul13 2013/10/19 03:43:27 Please make the HasObserver check an early return
powei 2013/11/08 21:34:47 Done.
+ compositor_->AddObserver(this);
+ }
}
void RenderWidgetHostViewAndroid::WasHidden() {
@@ -206,6 +216,10 @@ void RenderWidgetHostViewAndroid::WasHidden() {
// Inform the renderer that we are being hidden so it can reduce its resource
// utilization.
host_->WasHidden();
+
+ if (compositor_) {
+ compositor_->RemoveObserver(this);
+ }
}
void RenderWidgetHostViewAndroid::WasResized() {
@@ -699,7 +713,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();
@@ -861,6 +875,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);
}
@@ -1246,6 +1261,21 @@ void RenderWidgetHostViewAndroid::SetContentViewCore(
AttachLayers();
}
+void RenderWidgetHostViewAndroid::SetCompositor(Compositor* compositor) {
+ if (compositor_ == compositor)
+ return;
+
+ if (compositor_) {
+ compositor_->RemoveObserver(this);
David Trainor- moved to gerrit 2013/10/21 15:26:08 Is it safe to call RemoveObserver if it isn't adde
powei 2013/11/08 21:34:47 It is safe. observer_list has an early out for re
+ }
+
+ compositor_ = compositor;
+
+ if (are_layers_attached_ && compositor_ && !compositor_->HasObserver(this)) {
David Trainor- moved to gerrit 2013/10/21 15:26:08 Can remove HasObserver if you put it into AddObser
powei 2013/11/08 21:34:47 Done.
+ compositor_->AddObserver(this);
+ }
+}
+
void RenderWidgetHostViewAndroid::RunAckCallbacks() {
while (!ack_callbacks_.empty()) {
ack_callbacks_.front().Run();
@@ -1259,26 +1289,11 @@ void RenderWidgetHostViewAndroid::HasTouchEventHandlers(
content_view_core_->HasTouchEventHandlers(need_touch_events);
}
-unsigned RenderWidgetHostViewAndroid::PrepareTexture() {
- RunAckCallbacks();
- return texture_id_in_layer_;
-}
-
-void RenderWidgetHostViewAndroid::DidCommitFrameData() {
+void RenderWidgetHostViewAndroid::OnCompositingDidCommit(
+ Compositor* compositor) {
RunAckCallbacks();
}
-WebKit::WebGraphicsContext3D* RenderWidgetHostViewAndroid::Context3d() {
- return ImageTransportFactoryAndroid::GetInstance()->GetContext3D();
-}
-
-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