Index: content/browser/renderer_host/compositor_impl_android.cc |
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc |
index b2e33c8fba409988e28bba734ec991a68fa3994f..d68af932f60970aaf85bcaca25d527d0667b90d7 100644 |
--- a/content/browser/renderer_host/compositor_impl_android.cc |
+++ b/content/browser/renderer_host/compositor_impl_android.cc |
@@ -138,10 +138,13 @@ CompositorImpl::CompositorImpl(CompositorClient* client, |
window_(NULL), |
surface_id_(0), |
client_(client), |
- root_window_(root_window) { |
+ root_window_(root_window), |
+ overscroll_edge_id_(0), |
+ overscroll_glow_id_(0) { |
DCHECK(client); |
DCHECK(root_window); |
ImageTransportFactoryAndroid::AddObserver(this); |
+ LoadOverscrollResources(); |
no sievers
2013/11/26 20:10:17
I feel like all this is some very specific functio
powei
2013/11/26 22:17:41
Placing it outside of the compositor sounds good t
|
root_window->AttachCompositor(); |
} |
@@ -152,6 +155,19 @@ CompositorImpl::~CompositorImpl() { |
SetSurface(NULL); |
} |
+void CompositorImpl::LoadOverscrollResources() { |
+ TRACE_EVENT0("compositor", "CompositorImpl::LoadOverscrollResources"); |
jdduke (slow)
2013/11/26 01:39:54
We did some optimizations to improve overscroll re
powei
2013/11/26 22:17:41
Good idea. I'll give asynchronous load a try.
|
+ SkBitmap edge_skbitmap = gfx::CreateSkBitmapFromResource( |
+ "android:drawable/overscroll_edge", gfx::Size(128, 12)); |
+ edge_skbitmap.setImmutable(); |
+ overscroll_edge_bitmap_.reset(new cc::UIResourceBitmap(edge_skbitmap)); |
+ |
+ SkBitmap glow_skbitmap = gfx::CreateSkBitmapFromResource( |
+ "android:drawable/overscroll_glow", gfx::Size(128, 64)); |
+ glow_skbitmap.setImmutable(); |
+ overscroll_glow_bitmap_.reset(new cc::UIResourceBitmap(glow_skbitmap)); |
+} |
+ |
void CompositorImpl::Composite() { |
if (host_) |
host_->Composite(gfx::FrameTime::Now()); |
@@ -216,6 +232,8 @@ void CompositorImpl::SetVisible(bool visible) { |
ui_resource_map_.clear(); |
host_.reset(); |
client_->UIResourcesAreInvalid(); |
+ overscroll_edge_id_ = 0; |
+ overscroll_glow_id_ = 0; |
} else if (!host_) { |
cc::LayerTreeSettings settings; |
settings.refresh_rate = 60.0; |
@@ -236,6 +254,9 @@ void CompositorImpl::SetVisible(bool visible) { |
// Need to recreate the UI resources because a new LayerTreeHost has been |
// created. |
client_->DidLoseUIResources(); |
+ |
+ overscroll_edge_id_ = GenerateUIResource(*overscroll_edge_bitmap_); |
+ overscroll_glow_id_ = GenerateUIResource(*overscroll_glow_bitmap_); |
} |
} |
@@ -278,6 +299,14 @@ void CompositorImpl::DeleteUIResource(cc::UIResourceId resource_id) { |
ui_resource_map_.erase(it); |
} |
+gfx::Size CompositorImpl::GetUIResourceSize(cc::UIResourceId resource_id) |
+ const { |
+ DCHECK(resource_id); |
+ if (!host_) |
+ return gfx::Size(); |
+ return host_->GetUIResourceSize(resource_id); |
+} |
+ |
blink::WebGLId CompositorImpl::GenerateTexture(gfx::JavaBitmap& bitmap) { |
unsigned int texture_id = BuildBasicTexture(); |
blink::WebGraphicsContext3D* context = |
@@ -493,7 +522,7 @@ blink::WGC3Denum CompositorImpl::GetGLTypeForBitmap(gfx::JavaBitmap& bitmap) { |
} |
void CompositorImpl::DidCommit() { |
- root_window_->OnCompositingDidCommit(); |
+ root_window_->OnCompositingDidCommit(this); |
} |
} // namespace content |