Index: cc/raster/raster_source.cc |
diff --git a/cc/raster/raster_source.cc b/cc/raster/raster_source.cc |
index 9294cd6a7a75d3158f32cd46cd00d09cd5ec7efb..ebba8286e8912e3fdc3a9c8b23c470c3785e87b2 100644 |
--- a/cc/raster/raster_source.cc |
+++ b/cc/raster/raster_source.cc |
@@ -80,7 +80,8 @@ void RasterSource::PlaybackToCanvas( |
raster_canvas->clipRect(SkRect::MakeFromIRect(raster_bounds)); |
raster_canvas->translate(raster_transform.translation().x(), |
raster_transform.translation().y()); |
- raster_canvas->scale(raster_transform.scale(), raster_transform.scale()); |
+ if (!display_list_->pixel_canvas_enabled()) |
+ raster_canvas->scale(raster_transform.scale(), raster_transform.scale()); |
PlaybackToCanvas(raster_canvas, target_color_space, settings); |
raster_canvas->restore(); |
} |
@@ -237,17 +238,22 @@ size_t RasterSource::GetMemoryUsage() const { |
return display_list_->BytesUsed() + painter_reported_memory_usage_; |
} |
-bool RasterSource::PerformSolidColorAnalysis(const gfx::Rect& content_rect, |
- float contents_scale, |
- SkColor* color) const { |
+bool RasterSource::PerformSolidColorAnalysis( |
+ gfx::Rect content_rect, |
+ const gfx::AxisTransform2d& raster_transform, |
+ SkColor* color) const { |
TRACE_EVENT0("cc", "RasterSource::PerformSolidColorAnalysis"); |
+ if (display_list_->pixel_canvas_enabled()) { |
+ content_rect.Intersect( |
+ gfx::ScaleToEnclosingRect(gfx::Rect(size_), raster_transform.scale())); |
+ } else { |
+ content_rect = gfx::ToEnclosingRect( |
+ raster_transform.InverseMapRect(gfx::RectF(content_rect))); |
+ content_rect.Intersect(gfx::Rect(size_)); |
+ } |
+ skia::AnalysisCanvas canvas(content_rect.width(), content_rect.height()); |
+ canvas.translate(-content_rect.x(), -content_rect.y()); |
- gfx::Rect layer_rect = |
- gfx::ScaleToEnclosingRect(content_rect, 1.f / contents_scale); |
- |
- layer_rect.Intersect(gfx::Rect(size_)); |
- skia::AnalysisCanvas canvas(layer_rect.width(), layer_rect.height()); |
- canvas.translate(-layer_rect.x(), -layer_rect.y()); |
// Note that because no color conversion is applied to solid color analysis, |
// the resulting solid color will be known to be sRGB. |
RasterCommon(&canvas, &canvas); |