| Index: cc/playback/drawing_display_item.cc
|
| diff --git a/cc/playback/drawing_display_item.cc b/cc/playback/drawing_display_item.cc
|
| index 569030b9a118cd7db74d243ffb2002bcd7f80d3a..6cebed2ae005fd3767a7af3f4cfb576cd3b0abb2 100644
|
| --- a/cc/playback/drawing_display_item.cc
|
| +++ b/cc/playback/drawing_display_item.cc
|
| @@ -13,6 +13,7 @@
|
| #include "third_party/skia/include/core/SkMatrix.h"
|
| #include "third_party/skia/include/core/SkPicture.h"
|
| #include "third_party/skia/include/utils/SkPictureUtils.h"
|
| +#include "ui/gfx/skia_util.h"
|
|
|
| namespace cc {
|
|
|
| @@ -30,7 +31,18 @@ void DrawingDisplayItem::SetNew(skia::RefPtr<SkPicture> picture) {
|
| }
|
|
|
| void DrawingDisplayItem::Raster(SkCanvas* canvas,
|
| + const gfx::Rect& canvas_target_playback_rect,
|
| SkPicture::AbortCallback* callback) const {
|
| + // The canvas_playback_rect can be empty to signify no culling is desired.
|
| + if (!canvas_target_playback_rect.IsEmpty()) {
|
| + const SkMatrix& matrix = canvas->getTotalMatrix();
|
| + const SkRect& cull_rect = picture_->cullRect();
|
| + SkRect target_rect;
|
| + matrix.mapRect(&target_rect, cull_rect);
|
| + if (!target_rect.intersect(gfx::RectToSkRect(canvas_target_playback_rect)))
|
| + return;
|
| + }
|
| +
|
| // SkPicture always does a wrapping save/restore on the canvas, so it is not
|
| // necessary here.
|
| if (callback)
|
|
|