Index: src/core/SkPaint.cpp |
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp |
index 2449ed6793c241fa55ce5c0dfccc77ec72a34a7a..22f0dada7c93d0189ab06ec989ffc2460b5c5361 100644 |
--- a/src/core/SkPaint.cpp |
+++ b/src/core/SkPaint.cpp |
@@ -108,18 +108,30 @@ SkPaint::SkPaint() { |
} |
SkPaint::SkPaint(const SkPaint& src) { |
- memcpy(this, &src, sizeof(src)); |
- |
- SkSafeRef(fTypeface); |
- SkSafeRef(fPathEffect); |
- SkSafeRef(fShader); |
- SkSafeRef(fXfermode); |
- SkSafeRef(fMaskFilter); |
- SkSafeRef(fColorFilter); |
- SkSafeRef(fRasterizer); |
- SkSafeRef(fLooper); |
- SkSafeRef(fImageFilter); |
- SkSafeRef(fAnnotation); |
+#define COPY(field) field = src.field |
+#define REF_COPY(field) field = SkSafeRef(src.field) |
+ COPY(fTextSize); |
+ COPY(fTextScaleX); |
+ COPY(fTextSkewX); |
+ COPY(fColor); |
+ COPY(fWidth); |
+ COPY(fMiterLimit); |
+ |
+ REF_COPY(fTypeface); |
+ REF_COPY(fPathEffect); |
+ REF_COPY(fShader); |
+ REF_COPY(fXfermode); |
+ REF_COPY(fMaskFilter); |
+ REF_COPY(fColorFilter); |
+ REF_COPY(fRasterizer); |
+ REF_COPY(fLooper); |
+ REF_COPY(fImageFilter); |
+ REF_COPY(fAnnotation); |
+ |
+ COPY(fBitfields); |
+ COPY(fDirtyBits); |
+#undef COPY |
+#undef REF_COPY |
#ifdef SK_BUILD_FOR_ANDROID |
new (&fPaintOptionsAndroid) SkPaintOptionsAndroid(src.fPaintOptionsAndroid); |