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

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

Issue 10828356: Very basic Android browser-side compositing support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 a1d4ed226624d787d8fe1a002f224f14e2192639..8b38a3dfae67a5d6e8bbf68fd4a81006bd54fb22 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -15,6 +15,7 @@
#include "content/common/android/device_info.h"
#include "content/common/gpu/gpu_messages.h"
#include "content/common/view_messages.h"
+#include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
namespace content {
@@ -27,12 +28,15 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
// View system yet, so we treat it as hidden.
is_hidden_(!content_view_core),
content_view_core_(content_view_core),
- ime_adapter_android_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
+ ime_adapter_android_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
+ texture_layer_(WebKit::WebExternalTextureLayer::create()) {
host_->SetView(this);
// RenderWidgetHost is initialized as visible. If is_hidden_ is true, tell
// RenderWidgetHost to hide.
if (is_hidden_)
host_->WasHidden();
+ texture_layer_->layer()->setDrawsContent(!is_hidden_);
+ host_->AttachLayer(texture_layer_->layer());
}
RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() {
@@ -86,6 +90,7 @@ void RenderWidgetHostViewAndroid::SetSize(const gfx::Size& size) {
requested_size_ = gfx::Size(size.width(), size.height());
host_->WasResized();
}
+ texture_layer_->layer()->setBounds(size);
}
void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) {
@@ -142,11 +147,11 @@ bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const {
}
void RenderWidgetHostViewAndroid::Show() {
- // nothing to do
+ texture_layer_->layer()->setDrawsContent(true);
}
void RenderWidgetHostViewAndroid::Hide() {
- // nothing to do
+ texture_layer_->layer()->setDrawsContent(false);
}
bool RenderWidgetHostViewAndroid::IsShowing() {
@@ -210,6 +215,8 @@ void RenderWidgetHostViewAndroid::RenderViewGone(
}
void RenderWidgetHostViewAndroid::Destroy() {
+ host_->RemoveLayer(texture_layer_->layer());
+
content_view_core_ = NULL;
// The RenderWidgetHost's destruction led here, so don't call it.
@@ -270,6 +277,12 @@ void RenderWidgetHostViewAndroid::OnAcceleratedCompositingStateChange() {
void RenderWidgetHostViewAndroid::AcceleratedSurfaceBuffersSwapped(
const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params,
int gpu_host_id) {
+ texture_layer_->setTextureId(params.surface_handle);
+ texture_layer_->layer()->invalidate();
+ // TODO(sievers): The view and layer should get sized proactively.
+ if (((gfx::Size)texture_layer_->layer()->bounds()).IsEmpty())
+ texture_layer_->layer()->setBounds(
+ DrawDelegateImpl::GetInstance()->GetBounds());
DrawDelegateImpl::GetInstance()->OnSurfaceUpdated(
params.surface_handle,
this,
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | content/browser/web_contents/web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698