Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(393)

Unified Diff: cc/playback/display_list_raster_source.cc

Issue 1799883002: cc: Refactor SkipImageCanvas and create it during playback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/playback/display_list_raster_source.h ('k') | cc/playback/display_list_raster_source_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_);
« no previous file with comments | « cc/playback/display_list_raster_source.h ('k') | cc/playback/display_list_raster_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698