Skip unnecessary copies in GrPaint operator ==

Review URL: http://codereview.appspot.com/5846046/



git-svn-id: http://skia.googlecode.com/svn/trunk@3417 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrPaint.h b/include/gpu/GrPaint.h
index 827b890..62ab164 100644
--- a/include/gpu/GrPaint.h
+++ b/include/gpu/GrPaint.h
@@ -131,20 +131,26 @@
 
         fColorFilterColor = paint.fColorFilterColor;
         fColorFilterXfermode = paint.fColorFilterXfermode;
-        memcpy(fColorMatrix, paint.fColorMatrix, sizeof(fColorMatrix));
         fColorMatrixEnabled = paint.fColorMatrixEnabled;
-
+        if (fColorMatrixEnabled) {
+            memcpy(fColorMatrix, paint.fColorMatrix, sizeof(fColorMatrix));
+        }
+        
         for (int i = 0; i < kMaxTextures; ++i) {
             GrSafeUnref(fTextures[i]);
-            fTextureSamplers[i] = paint.fTextureSamplers[i];
             fTextures[i] = paint.fTextures[i];
-            GrSafeRef(fTextures[i]);
+            if (NULL != fTextures[i]) {
+                fTextureSamplers[i] = paint.fTextureSamplers[i];
+                fTextures[i]->ref();
+            }
         }
         for (int i = 0; i < kMaxMasks; ++i) {
             GrSafeUnref(fMaskTextures[i]);
-            fMaskSamplers[i] = paint.fMaskSamplers[i];
             fMaskTextures[i] = paint.fMaskTextures[i];
-            GrSafeRef(fMaskTextures[i]);
+            if (NULL != fMaskTextures[i]) {
+                fMaskSamplers[i] = paint.fMaskSamplers[i];
+                fMaskTextures[i]->ref();
+            }
         }
         return *this;
     }