Index: cc/layers/painted_scrollbar_layer.cc |
diff --git a/cc/layers/painted_scrollbar_layer.cc b/cc/layers/painted_scrollbar_layer.cc |
index a074850152901b7361bcc77718fe0a37dc710a02..0d25dbcc09a81250e493a07174e5ab0da74fa99e 100644 |
--- a/cc/layers/painted_scrollbar_layer.cc |
+++ b/cc/layers/painted_scrollbar_layer.cc |
@@ -49,7 +49,8 @@ PaintedScrollbarLayer::PaintedScrollbarLayer(const LayerSettings& settings, |
thumb_thickness_(scrollbar_->ThumbThickness()), |
thumb_length_(scrollbar_->ThumbLength()), |
is_overlay_(scrollbar_->IsOverlay()), |
- has_thumb_(scrollbar_->HasThumb()) { |
+ has_thumb_(scrollbar_->HasThumb()), |
+ thumb_opacity_(scrollbar_->ThumbOpacity()) { |
if (!scrollbar_->IsOverlay()) |
SetShouldScrollOnMainThread(true); |
} |
@@ -127,6 +128,8 @@ void PaintedScrollbarLayer::PushPropertiesTo(LayerImpl* layer) { |
else |
scrollbar_layer->set_thumb_ui_resource_id(0); |
+ scrollbar_layer->set_thumb_opacity(thumb_opacity_); |
+ |
scrollbar_layer->set_is_overlay_scrollbar(is_overlay_); |
} |
@@ -244,17 +247,24 @@ bool PaintedScrollbarLayer::Update() { |
if (update_rect_.IsEmpty() && track_resource_) |
return updated; |
- track_resource_ = ScopedUIResource::Create( |
- layer_tree_host(), |
- RasterizeScrollbarPart(track_layer_rect, scaled_track_rect, TRACK)); |
+ if (!track_resource_ || scrollbar_->NeedsPaintPart(TRACK)) { |
+ track_resource_ = ScopedUIResource::Create( |
+ layer_tree_host(), |
+ RasterizeScrollbarPart(track_layer_rect, scaled_track_rect, TRACK)); |
+ } |
gfx::Rect thumb_layer_rect = OriginThumbRect(); |
gfx::Rect scaled_thumb_rect = |
ScrollbarLayerRectToContentRect(thumb_layer_rect); |
if (has_thumb_ && !scaled_thumb_rect.IsEmpty()) { |
- thumb_resource_ = ScopedUIResource::Create( |
- layer_tree_host(), |
- RasterizeScrollbarPart(thumb_layer_rect, scaled_thumb_rect, THUMB)); |
+ if (!thumb_resource_ || scrollbar_->NeedsPaintPart(THUMB) || |
+ scaled_thumb_rect.size() != |
+ thumb_resource_->GetBitmap(0, false).GetSize()) { |
+ thumb_resource_ = ScopedUIResource::Create( |
+ layer_tree_host(), |
+ RasterizeScrollbarPart(thumb_layer_rect, scaled_thumb_rect, THUMB)); |
+ } |
+ thumb_opacity_ = scrollbar_->ThumbOpacity(); |
} |
// UI resources changed so push properties is needed. |