| Index: src/gpu/SkGr.cpp | 
| diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp | 
| index e81abdbae475c14a3d99a17afed4601b6cad2a53..262d339b6c673763236b66fb8a4e318c7e02fecd 100644 | 
| --- a/src/gpu/SkGr.cpp | 
| +++ b/src/gpu/SkGr.cpp | 
| @@ -372,7 +372,10 @@ bool GrIsBitmapInCache(const GrContext* ctx, | 
| GrTexture* GrLockAndRefCachedBitmapTexture(GrContext* ctx, | 
| const SkBitmap& bitmap, | 
| const GrTextureParams* params) { | 
| -    GrTexture* result = NULL; | 
| +    GrTexture* result = bitmap.getTexture(); | 
| +    if (result) { | 
| +        return SkRef(result); | 
| +    } | 
|  | 
| bool cache = !bitmap.isVolatile(); | 
|  | 
| @@ -400,7 +403,9 @@ GrTexture* GrLockAndRefCachedBitmapTexture(GrContext* ctx, | 
| void GrUnlockAndUnrefCachedBitmapTexture(GrTexture* texture) { | 
| SkASSERT(texture->getContext()); | 
|  | 
| -    texture->getContext()->unlockScratchTexture(texture); | 
| +    if (texture->getCacheEntry()) { | 
| +        texture->getContext()->unlockScratchTexture(texture); | 
| +    } | 
| texture->unref(); | 
| } | 
|  | 
|  |