clear the kHasSpan16 bit for two-point-radial, since we don't implement that
fix perspective loop x (dstX)



git-svn-id: http://skia.googlecode.com/svn/trunk@364 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index 502e9cc..a30de6a 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -1296,9 +1296,11 @@
         }
         else    // perspective case
         {
+            SkScalar dstX = SkIntToScalar(x);
+            SkScalar dstY = SkIntToScalar(y);
             for (; count > 0; --count) {
                 SkPoint             srcPt;
-                dstProc(fDstToIndex, SkIntToScalar(x), SkIntToScalar(y), &srcPt);
+                dstProc(fDstToIndex, dstX, dstY, &srcPt);
                 SkFixed fx = SkScalarToFixed(srcPt.fX);
                 SkFixed fy = SkScalarToFixed(srcPt.fY);
                 SkFixed b = (SkFixedMul(diffx, fx) +
@@ -1307,11 +1309,23 @@
                 SkFixed index = proc(t);
                 SkASSERT(index <= 0xFFFF);
                 *dstC++ = cache[index >> (16 - kCache32Bits)];
-                x += SK_Scalar1;
+                dstX += SK_Scalar1;
             }
         }
     }
 
+    virtual bool setContext(const SkBitmap& device,
+                            const SkPaint& paint,
+                            const SkMatrix& matrix) {
+        if (!this->INHERITED::setContext(device, paint, matrix)) {
+            return false;
+        }
+
+        // we don't have a span16 proc
+        fFlags &= ~kHasSpan16_Flag;
+        return true;
+    }
+
     static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) { 
         return SkNEW_ARGS(Two_Point_Radial_Gradient, (buffer));
     }