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

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

Issue 82553015: Switch the android overscroll glow to use UIResources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: minor naming changes 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/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

Powered by Google App Engine
This is Rietveld 408576698