| Index: src/core/SkPictureRecord.cpp
|
| diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
|
| index 72c537bd755b9f1f8e9cdc035323dfa91089365f..2006e5ebb50299ecdfb7f2a632b0f6066c2b0d18 100644
|
| --- a/src/core/SkPictureRecord.cpp
|
| +++ b/src/core/SkPictureRecord.cpp
|
| @@ -1400,7 +1400,8 @@ void SkPictureRecord::onDrawTextOnPath(const void* text, size_t byteLength, cons
|
| this->validate(initialOffset, size);
|
| }
|
|
|
| -void SkPictureRecord::onDrawPicture(const SkPicture* picture) {
|
| +void SkPictureRecord::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix,
|
| + const SkPaint* paint) {
|
|
|
| #ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
|
| fMCMgr.call(SkMatrixClipStateMgr::kOther_CallType);
|
| @@ -1408,8 +1409,20 @@ void SkPictureRecord::onDrawPicture(const SkPicture* picture) {
|
|
|
| // op + picture index
|
| size_t size = 2 * kUInt32Size;
|
| - size_t initialOffset = this->addDraw(DRAW_PICTURE, &size);
|
| - this->addPicture(picture);
|
| + size_t initialOffset;
|
| +
|
| + if (NULL == matrix && NULL == paint) {
|
| + initialOffset = this->addDraw(DRAW_PICTURE, &size);
|
| + this->addPicture(picture);
|
| + } else {
|
| + const SkMatrix& m = matrix ? *matrix : SkMatrix::I();
|
| + size += m.writeToMemory(NULL) + kUInt32Size; // matrix + paint
|
| + initialOffset = this->addDraw(DRAW_PICTURE_MATRIX_PAINT, &size);
|
| + this->addPicture(picture);
|
| + this->addMatrix(m);
|
| + this->addPaintPtr(paint);
|
| + this->validate(initialOffset, size);
|
| + }
|
| this->validate(initialOffset, size);
|
| }
|
|
|
|
|