Chromium Code Reviews| 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 |