Index: src/core/SkCanvas.cpp |
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
index af25b46f3f808f386a04387a14eb78a36fe418bd..a5f5440c2c048dda74247d7689a31995b6fded9c 100644 |
--- a/src/core/SkCanvas.cpp |
+++ b/src/core/SkCanvas.cpp |
@@ -2475,7 +2475,7 @@ void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, |
} |
} |
- SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->width(), picture->height()); |
+ SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect()); |
picture->draw(this); |
} |
@@ -2579,16 +2579,16 @@ SkCanvas* SkCanvas::NewRasterDirect(const SkImageInfo& info, void* pixels, size_ |
/////////////////////////////////////////////////////////////////////////////// |
SkAutoCanvasMatrixPaint::SkAutoCanvasMatrixPaint(SkCanvas* canvas, const SkMatrix* matrix, |
- const SkPaint* paint, int width, int height) |
+ const SkPaint* paint, const SkRect& bounds) |
: fCanvas(canvas) |
, fSaveCount(canvas->getSaveCount()) |
{ |
if (NULL != paint) { |
- SkRect bounds = SkRect::MakeWH(SkIntToScalar(width), SkIntToScalar(height)); |
+ SkRect newBounds = bounds; |
if (matrix) { |
- matrix->mapRect(&bounds); |
+ matrix->mapRect(&newBounds); |
} |
- canvas->saveLayer(&bounds, paint); |
+ canvas->saveLayer(&newBounds, paint); |
} else if (NULL != matrix) { |
canvas->save(); |
} |