Index: cc/layers/painted_scrollbar_layer.cc |
diff --git a/cc/layers/painted_scrollbar_layer.cc b/cc/layers/painted_scrollbar_layer.cc |
index 8ee3cb75bd148fdac9dcd478e80a4e97d2e86c12..e508c1913137f9e44b529947c90cd4a0089e35cf 100644 |
--- a/cc/layers/painted_scrollbar_layer.cc |
+++ b/cc/layers/painted_scrollbar_layer.cc |
@@ -49,7 +49,9 @@ 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()), |
+ track_opacity_(scrollbar_->TrackOpacity()), |
+ thumb_opacity_(scrollbar_->ThumbOpacity()) { |
if (!scrollbar_->IsOverlay()) |
SetShouldScrollOnMainThread(true); |
} |
@@ -127,6 +129,9 @@ void PaintedScrollbarLayer::PushPropertiesTo(LayerImpl* layer) { |
else |
scrollbar_layer->set_thumb_ui_resource_id(0); |
+ scrollbar_layer->set_thumb_opacity(thumb_opacity_); |
+ scrollbar_layer->set_track_opacity(track_opacity_); |
+ |
scrollbar_layer->set_is_overlay_scrollbar(is_overlay_); |
} |
@@ -244,17 +249,23 @@ 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)); |
+ } |
+ track_opacity_ = scrollbar_->TrackOpacity(); |
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)) { |
+ 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. |