Chromium Code Reviews| Index: cc/playback/display_list_raster_source.cc |
| diff --git a/cc/playback/display_list_raster_source.cc b/cc/playback/display_list_raster_source.cc |
| index fe707ec978e2ee6d99b63cb8435c916b5565c4ff..a6d2c841b6a3b6bf7db3c554a1b3979c5a6d6f5e 100644 |
| --- a/cc/playback/display_list_raster_source.cc |
| +++ b/cc/playback/display_list_raster_source.cc |
| @@ -14,6 +14,7 @@ |
| #include "cc/debug/debug_colors.h" |
| #include "cc/playback/display_item_list.h" |
| #include "cc/playback/image_hijack_canvas.h" |
| +#include "cc/playback/skip_image_canvas.h" |
| #include "skia/ext/analysis_canvas.h" |
| #include "third_party/skia/include/core/SkCanvas.h" |
| #include "third_party/skia/include/core/SkPictureRecorder.h" |
| @@ -96,11 +97,15 @@ DisplayListRasterSource::~DisplayListRasterSource() { |
| void DisplayListRasterSource::PlaybackToSharedCanvas( |
| SkCanvas* raster_canvas, |
| const gfx::Rect& canvas_rect, |
| - float contents_scale) const { |
| + float contents_scale, |
| + bool include_images) const { |
| // TODO(vmpstr): This can be improved by plumbing whether the tile itself has |
| // discardable images. This way we would only pay for the hijack canvas if the |
|
ericrk
2016/03/14 21:40:13
nit: comment probably applies to both cases - not
|
| // tile actually needed it. |
| - if (display_list_->MayHaveDiscardableImages()) { |
| + if (!include_images) { |
| + SkipImageCanvas canvas(raster_canvas); |
| + RasterCommon(&canvas, nullptr, canvas_rect, canvas_rect, contents_scale); |
| + } else if (display_list_->MayHaveDiscardableImages()) { |
| const SkImageInfo& info = raster_canvas->imageInfo(); |
| ImageHijackCanvas canvas(info.width(), info.height(), |
| image_decode_controller_); |
| @@ -123,11 +128,16 @@ void DisplayListRasterSource::PlaybackToCanvas( |
| SkCanvas* raster_canvas, |
| const gfx::Rect& canvas_bitmap_rect, |
| const gfx::Rect& canvas_playback_rect, |
| - float contents_scale) const { |
| + float contents_scale, |
| + bool include_images) const { |
| PrepareForPlaybackToCanvas(raster_canvas, canvas_bitmap_rect, |
| canvas_playback_rect, contents_scale); |
| - if (display_list_->MayHaveDiscardableImages()) { |
| + if (!include_images) { |
| + SkipImageCanvas canvas(raster_canvas); |
| + RasterCommon(&canvas, nullptr, canvas_bitmap_rect, canvas_playback_rect, |
| + contents_scale); |
| + } else if (display_list_->MayHaveDiscardableImages()) { |
| const SkImageInfo& info = raster_canvas->imageInfo(); |
| ImageHijackCanvas canvas(info.width(), info.height(), |
| image_decode_controller_); |