| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index f62a8664ff89f7e84467dc68813ae18ee56b99c0..e819afd860d412784301915fe1fcbd7ac857aa67 100644
|
| --- a/cc/layers/picture_layer_impl.cc
|
| +++ b/cc/layers/picture_layer_impl.cc
|
| @@ -225,9 +225,9 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
|
| if (mode == TileDrawInfo::SOLID_COLOR_MODE) {
|
| color = DebugColors::SolidColorTileBorderColor();
|
| width = DebugColors::SolidColorTileBorderWidth(layer_tree_impl());
|
| - } else if (mode == TileDrawInfo::PICTURE_PILE_MODE) {
|
| - color = DebugColors::PictureTileBorderColor();
|
| - width = DebugColors::PictureTileBorderWidth(layer_tree_impl());
|
| + } else if (mode == TileDrawInfo::OOM_MODE) {
|
| + color = DebugColors::OOMTileBorderColor();
|
| + width = DebugColors::OOMTileBorderWidth(layer_tree_impl());
|
| } else if (iter.resolution() == HIGH_RESOLUTION) {
|
| color = DebugColors::HighResTileBorderColor();
|
| width = DebugColors::HighResTileBorderWidth(layer_tree_impl());
|
| @@ -313,30 +313,6 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
|
| has_draw_quad = true;
|
| break;
|
| }
|
| - case TileDrawInfo::PICTURE_PILE_MODE: {
|
| - if (!layer_tree_impl()
|
| - ->GetRendererCapabilities()
|
| - .allow_rasterize_on_demand) {
|
| - ++on_demand_missing_tile_count;
|
| - break;
|
| - }
|
| -
|
| - gfx::RectF texture_rect = iter.texture_rect();
|
| -
|
| - ResourceProvider* resource_provider =
|
| - layer_tree_impl()->resource_provider();
|
| - ResourceFormat format =
|
| - resource_provider->memory_efficient_texture_format();
|
| - PictureDrawQuad* quad =
|
| - render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
|
| - quad->SetNew(shared_quad_state, geometry_rect, opaque_rect,
|
| - visible_geometry_rect, texture_rect,
|
| - iter->desired_texture_size(), nearest_neighbor_, format,
|
| - iter->content_rect(), iter->contents_scale(),
|
| - raster_source_);
|
| - has_draw_quad = true;
|
| - break;
|
| - }
|
| case TileDrawInfo::SOLID_COLOR_MODE: {
|
| SolidColorDrawQuad* quad =
|
| render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| @@ -345,6 +321,8 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
|
| has_draw_quad = true;
|
| break;
|
| }
|
| + case TileDrawInfo::OOM_MODE:
|
| + break; // Checkerboard.
|
| }
|
| }
|
|
|
| @@ -565,6 +543,36 @@ void PictureLayerImpl::UpdateRasterSource(
|
| MaximumContentsScale());
|
| }
|
|
|
| +void PictureLayerImpl::UpdateCanUseLCDTextAfterCommit() {
|
| + // This function is only allowed to be called after commit, due to it not
|
| + // being smart about sharing tiles and because otherwise it would cause
|
| + // flashes by switching out tiles in place that may be currently on screen.
|
| + DCHECK(layer_tree_impl()->IsSyncTree());
|
| +
|
| + // Don't allow the LCD text state to change once disabled.
|
| + if (!RasterSourceUsesLCDText())
|
| + return;
|
| + if (can_use_lcd_text() == RasterSourceUsesLCDText())
|
| + return;
|
| +
|
| + // Raster sources are considered const, so in order to update the state
|
| + // a new one must be created and all tiles recreated.
|
| + scoped_refptr<RasterSource> new_raster_source =
|
| + raster_source_->CreateCloneWithoutLCDText();
|
| + // Synthetically invalidate everything.
|
| + gfx::Rect bounds_rect(bounds());
|
| + Region invalidation(bounds_rect);
|
| + UpdateRasterSource(new_raster_source, &invalidation, nullptr);
|
| + SetUpdateRect(bounds_rect);
|
| +
|
| + DCHECK(!RasterSourceUsesLCDText());
|
| +}
|
| +
|
| +bool PictureLayerImpl::RasterSourceUsesLCDText() const {
|
| + return raster_source_ ? raster_source_->CanUseLCDText()
|
| + : layer_tree_impl()->settings().can_use_lcd_text;
|
| +}
|
| +
|
| void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) {
|
| if (layer_tree_impl()->IsActiveTree()) {
|
| gfx::RectF layer_damage_rect =
|
|
|