Make fewer copies when using GrDrawTarget::AutoStateRestore

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



git-svn-id: http://skia.googlecode.com/svn/trunk@3557 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp
index 3e5a1fa..3015674 100644
--- a/src/gpu/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp
@@ -609,17 +609,21 @@
         return false;
     }
 
-    GrDrawState* drawState = target->drawState();
-
     GrDrawTarget::AutoStateRestore asr;
+    GrDrawState* drawState = target->drawState();
     if (!drawState->getViewMatrix().hasPerspective()) {
-        asr.set(target);
+        // we are going to whack the view matrix to identity to remove
+        // perspective.
+        asr.set(target,
+                GrDrawTarget::kPreserve_ASRInit);
+        drawState = target->drawState();
         GrMatrix ivm;
         if (drawState->getViewInverse(&ivm)) {
             drawState->preConcatSamplerMatrices(stageMask, ivm);
         }
         drawState->viewMatrix()->reset();
     }
+    
 
     // TODO: See whether rendering lines as degenerate quads improves perf
     // when we have a mix