Index: src/core/SkCanvas.cpp |
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp |
index 2308151b40f55b422f131ac027f784e1349d7945..5f01bb5422033f9991ee247690f7f9f92fb8ea15 100644 |
--- a/src/core/SkCanvas.cpp |
+++ b/src/core/SkCanvas.cpp |
@@ -2744,6 +2744,19 @@ void SkCanvas::drawPicture(const SkPicture* picture, const SkMatrix* matrix, con |
void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, |
const SkPaint* paint) { |
+ if (!paint || paint->canComputeFastBounds()) { |
+ SkRect bounds = picture->cullRect(); |
+ if (paint) { |
+ paint->computeFastBounds(bounds, &bounds); |
+ } |
+ if (matrix) { |
+ matrix->mapRect(&bounds); |
+ } |
+ if (this->quickReject(bounds)) { |
+ return; |
+ } |
+ } |
+ |
SkBaseDevice* device = this->getTopDevice(); |
if (device) { |
// Canvas has to first give the device the opportunity to render |