Wrap all GrCustomStage textures in GrTextureAccess, remove StageDesc::fInConfigFlags

Review URL: https://codereview.appspot.com/6494114



git-svn-id: http://skia.googlecode.com/svn/trunk@5485 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
index d7b4f13..f0dac4d 100644
--- a/src/effects/gradients/SkGradientShader.cpp
+++ b/src/effects/gradients/SkGradientShader.cpp
@@ -719,8 +719,7 @@
 GrGradientEffect::GrGradientEffect(GrContext* ctx,
                                    const SkGradientShaderBase& shader,
                                    GrSamplerState* sampler)
-    : fTexture (NULL)
-    , fUseTexture (true) {
+    : fUseTexture (true) {
     // TODO: check for simple cases where we don't need a texture:
     //GradientInfo info;
     //shader.asAGradient(&info);
@@ -742,35 +741,32 @@
     if (-1 != fRow) {
         fYCoord = fAtlas->getYOffset(fRow) + GR_ScalarHalf *
                   fAtlas->getVerticalScaleFactor();
-        fTexture = fAtlas->getTexture();
+        fTextureAccess.reset(fAtlas->getTexture());
     } else {
-        fTexture = GrLockCachedBitmapTexture(ctx, bitmap, sampler->textureParams());
-        SkSafeRef(fTexture);
+        GrTexture* texture = GrLockCachedBitmapTexture(ctx, bitmap, sampler->textureParams());
+        fTextureAccess.reset(texture);
         fYCoord = GR_ScalarHalf;
 
         // Unlock immediately, this is not great, but we don't have a way of
         // knowing when else to unlock it currently, so it may get purged from
         // the cache, but it'll still be ref'd until it's no longer being used.
-        GrUnlockCachedBitmapTexture(fTexture);
+        GrUnlockCachedBitmapTexture(texture);
     }
 }
 
 GrGradientEffect::~GrGradientEffect() {
     if (this->useAtlas()) {
         fAtlas->unlockRow(fRow);
-    } else {
-        SkSafeUnref(fTexture);
     }
 }
 
-unsigned int GrGradientEffect::numTextures() const {
+int GrGradientEffect::numTextures() const {
     return fUseTexture ? 1 : 0;
 }
 
-GrTexture* GrGradientEffect::texture(unsigned int index)
-                             const {
+const GrTextureAccess& GrGradientEffect::textureAccess(int index) const {
     GrAssert(fUseTexture && 0 == index);
-    return fTexture;
+    return fTextureAccess;
 }
 
 int GrGradientEffect::RandomGradientParams(SkRandom* random,