Don't take a ref on GP in AutoEffectRestore.

BUG=skia:2889
R=joshualitt@chromium.org, robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/546043002
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp
index 6acc202..f2028ea 100644
--- a/src/gpu/GrDrawState.cpp
+++ b/src/gpu/GrDrawState.cpp
@@ -300,12 +300,12 @@
 void GrDrawState::AutoRestoreEffects::set(GrDrawState* ds) {
     if (NULL != fDrawState) {
         // See the big comment on the class definition about GPs.
-        if (NULL != fOriginalGP) {
-            SkASSERT(fDrawState->getGeometryProcessor()->getEffect() == fOriginalGP);
-            fOriginalGP->unref();
-            fOriginalGP = NULL;
-        } else {
+        if (SK_InvalidUniqueID == fOriginalGPID) {
             fDrawState->fGeometryProcessor.reset(NULL);
+        } else {
+            SkASSERT(fDrawState->getGeometryProcessor()->getEffect()->getUniqueID() ==
+                     fOriginalGPID);
+            fOriginalGPID = SK_InvalidUniqueID;
         }
 
         int m = fDrawState->numColorStages() - fColorEffectCnt;
@@ -322,9 +322,9 @@
     }
     fDrawState = ds;
     if (NULL != ds) {
-        SkASSERT(NULL == fOriginalGP);
+        SkASSERT(SK_InvalidUniqueID == fOriginalGPID);
         if (NULL != ds->getGeometryProcessor()) {
-            fOriginalGP = SkRef(ds->getGeometryProcessor()->getEffect());
+            fOriginalGPID = ds->getGeometryProcessor()->getEffect()->getUniqueID();
         }
         fColorEffectCnt = ds->numColorStages();
         fCoverageEffectCnt = ds->numCoverageStages();