| Index: cc/layers/picture_layer.cc
|
| diff --git a/cc/layers/picture_layer.cc b/cc/layers/picture_layer.cc
|
| index 5d45caed48099c77a8f232e8ac0dfe9d770e2f72..029e99d5e6611f7e91b0bc5a05470e6869502896 100644
|
| --- a/cc/layers/picture_layer.cc
|
| +++ b/cc/layers/picture_layer.cc
|
| @@ -23,7 +23,14 @@ PictureLayer::PictureLayer(ContentLayerClient* client)
|
| recording_source_(new PicturePile),
|
| instrumentation_object_tracker_(id()),
|
| update_source_frame_number_(-1),
|
| - can_use_lcd_text_last_frame_(can_use_lcd_text()) {
|
| + can_use_lcd_text_last_frame_(can_use_lcd_text()),
|
| + is_mask_(false) {
|
| +}
|
| +
|
| +PictureLayer::PictureLayer(ContentLayerClient* client,
|
| + scoped_ptr<RecordingSource> source)
|
| + : PictureLayer(client) {
|
| + recording_source_ = source.Pass();
|
| }
|
|
|
| PictureLayer::~PictureLayer() {
|
| @@ -60,13 +67,18 @@ void PictureLayer::PushPropertiesTo(LayerImpl* base_layer) {
|
| // See PictureLayerImpl::PushPropertiesTo for more details.
|
| layer_impl->invalidation_.Clear();
|
| layer_impl->invalidation_.Swap(&recording_invalidation_);
|
| - layer_impl->UpdateRasterSource(recording_source_->CreateRasterSource());
|
| + layer_impl->set_is_mask(is_mask_);
|
| + scoped_refptr<RasterSource> raster_source =
|
| + recording_source_->CreateRasterSource();
|
| + raster_source->SetBackgoundColor(SafeOpaqueBackgroundColor());
|
| + raster_source->SetRequiresClear(!contents_opaque() &&
|
| + !client_->FillsBoundsCompletely());
|
| + layer_impl->UpdateRasterSource(raster_source);
|
| }
|
|
|
| void PictureLayer::SetLayerTreeHost(LayerTreeHost* host) {
|
| Layer::SetLayerTreeHost(host);
|
| if (host) {
|
| - // TODO(hendrikw): Perhaps use and initialization function to do this work.
|
| recording_source_->SetMinContentsScale(
|
| host->settings().minimum_contents_scale);
|
| recording_source_->SetTileGridSize(host->settings().default_tile_grid_size);
|
| @@ -129,10 +141,8 @@ bool PictureLayer::Update(ResourceUpdateQueue* queue,
|
| // for them.
|
| DCHECK(client_);
|
| updated |= recording_source_->UpdateAndExpandInvalidation(
|
| - client_, &recording_invalidation_, SafeOpaqueBackgroundColor(),
|
| - contents_opaque(), client_->FillsBoundsCompletely(), layer_size,
|
| - visible_layer_rect, update_source_frame_number_,
|
| - Picture::RECORD_NORMALLY);
|
| + client_, &recording_invalidation_, layer_size, visible_layer_rect,
|
| + update_source_frame_number_, Picture::RECORD_NORMALLY);
|
| last_updated_visible_content_rect_ = visible_content_rect();
|
|
|
| if (updated) {
|
| @@ -147,7 +157,7 @@ bool PictureLayer::Update(ResourceUpdateQueue* queue,
|
| }
|
|
|
| void PictureLayer::SetIsMask(bool is_mask) {
|
| - recording_source_->SetIsMask(is_mask);
|
| + is_mask_ = is_mask;
|
| }
|
|
|
| bool PictureLayer::SupportsLCDText() const {
|
|
|