Index: src/core/SkRecorder.cpp |
diff --git a/src/core/SkRecorder.cpp b/src/core/SkRecorder.cpp |
index 0605d17fc3563d3bd58f73fd9716ede17fd47b93..a3c9513168ec02f7d21b4dcf11d6c2c019c360b2 100644 |
--- a/src/core/SkRecorder.cpp |
+++ b/src/core/SkRecorder.cpp |
@@ -158,11 +158,16 @@ void SkRecorder::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, const |
} |
void SkRecorder::onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) { |
- if (!fDrawableList) { |
- fDrawableList.reset(new SkDrawableList); |
+ if (fDrawPictureMode == Record_DrawPictureMode) { |
+ if (!fDrawableList) { |
+ fDrawableList.reset(new SkDrawableList); |
+ } |
+ fDrawableList->append(drawable); |
+ APPEND(DrawDrawable, this->copy(matrix), drawable->getBounds(), fDrawableList->count() - 1); |
+ } else { |
+ SkASSERT(fDrawPictureMode == Playback_DrawPictureMode); |
+ drawable->draw(this, matrix); |
} |
- fDrawableList->append(drawable); |
- APPEND(DrawDrawable, this->copy(matrix), drawable->getBounds(), fDrawableList->count() - 1); |
} |
void SkRecorder::onDrawPath(const SkPath& path, const SkPaint& paint) { |