Index: src/core/SkRecordDraw.cpp |
diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp |
index 7e35d8a2c7da87867c84079fd19d72ef007c5cbb..a086197453d78e7a0c27b8c8a99a353f8f55deda 100644 |
--- a/src/core/SkRecordDraw.cpp |
+++ b/src/core/SkRecordDraw.cpp |
@@ -682,6 +682,11 @@ private: |
dst.fRestoreOpID = src.fRestoreOpID; |
dst.fHasNestedLayers = src.fHasNestedLayers; |
dst.fIsNested = fSaveLayersInStack > 0 || src.fIsNested; |
+ |
+ dst.fKeySize = fSaveLayerOpStack.count() + src.fKeySize; |
+ dst.fKey = SkNEW_ARRAY(int, dst.fKeySize); |
+ memcpy(dst.fKey, fSaveLayerOpStack.begin(), fSaveLayerOpStack.count() * sizeof(int)); |
+ memcpy(&dst.fKey[fSaveLayerOpStack.count()], src.fKey, src.fKeySize * sizeof(int)); |
} |
} |
@@ -737,12 +742,17 @@ private: |
block.fRestoreOpID = fFillBounds.currentOp(); |
block.fHasNestedLayers = sli.fHasNestedSaveLayer; |
block.fIsNested = fSaveLayersInStack > 0; |
+ |
+ block.fKeySize = fSaveLayerOpStack.count(); |
+ block.fKey = SkNEW_ARRAY(int, block.fKeySize); |
+ memcpy(block.fKey, fSaveLayerOpStack.begin(), block.fKeySize * sizeof(int)); |
} |
// Used to collect saveLayer information for layer hoisting |
- int fSaveLayersInStack; |
+ int fSaveLayersInStack; |
SkTDArray<SaveLayerInfo> fSaveLayerStack; |
- SkLayerInfo* fAccelData; |
+ SkTDArray<int> fSaveLayerOpStack; |
+ SkLayerInfo* fAccelData; |
SkRecords::FillBounds fFillBounds; |
}; |