| Index: src/gpu/effects/GrCustomXfermode.cpp | 
| diff --git a/src/gpu/effects/GrCustomXfermode.cpp b/src/gpu/effects/GrCustomXfermode.cpp | 
| index 9aa71531096c0db3418626ba2c5e4c1d0890aab2..b77bf2fad174771a22f24ae2c00db09a50fed260 100644 | 
| --- a/src/gpu/effects/GrCustomXfermode.cpp | 
| +++ b/src/gpu/effects/GrCustomXfermode.cpp | 
| @@ -499,7 +499,15 @@ public: | 
| GLCustomXP(const GrXferProcessor&) {} | 
| ~GLCustomXP() SK_OVERRIDE {} | 
|  | 
| -    void emitCode(const EmitArgs& args) SK_OVERRIDE { | 
| +    static void GenKey(const GrXferProcessor& proc, const GrGLCaps&, GrProcessorKeyBuilder* b) { | 
| +        uint32_t key = proc.numTextures(); | 
| +        SkASSERT(key <= 1); | 
| +        key |= proc.cast<GrCustomXP>().mode() << 1; | 
| +        b->add32(key); | 
| +    } | 
| + | 
| +private: | 
| +    void onEmitCode(const EmitArgs& args) SK_OVERRIDE { | 
| SkXfermode::Mode mode = args.fXP.cast<GrCustomXP>().mode(); | 
| GrGLFPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); | 
| const char* dstColor = fsBuilder->dstColor(); | 
| @@ -511,28 +519,20 @@ public: | 
| args.fInputCoverage, dstColor); | 
| } | 
|  | 
| -    void setData(const GrGLProgramDataManager&, const GrXferProcessor&) SK_OVERRIDE {} | 
| +    void onSetData(const GrGLProgramDataManager&, const GrXferProcessor&) SK_OVERRIDE {} | 
|  | 
| -    static void GenKey(const GrXferProcessor& proc, const GrGLCaps&, GrProcessorKeyBuilder* b) { | 
| -        uint32_t key = proc.numTextures(); | 
| -        SkASSERT(key <= 1); | 
| -        key |= proc.cast<GrCustomXP>().mode() << 1; | 
| -        b->add32(key); | 
| -    } | 
| - | 
| -private: | 
| typedef GrGLFragmentProcessor INHERITED; | 
| }; | 
|  | 
| /////////////////////////////////////////////////////////////////////////////// | 
|  | 
| -GrCustomXP::GrCustomXP(SkXfermode::Mode mode) | 
| -    : fMode(mode) { | 
| +GrCustomXP::GrCustomXP(SkXfermode::Mode mode, const GrDeviceCoordTexture* dstCopy, | 
| +                       bool willReadDstColor) | 
| +    : INHERITED(dstCopy, willReadDstColor), fMode(mode) { | 
| this->initClassID<GrCustomXP>(); | 
| -    this->setWillReadDstColor(); | 
| } | 
|  | 
| -void GrCustomXP::getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { | 
| +void GrCustomXP::onGetGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { | 
| GLCustomXP::GenKey(*this, caps, b); | 
| } | 
|  | 
|  |