Index: src/core/SkPictureShader.cpp |
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp |
index 1f32a7ecdfd5c8a99b0e39046c10756b600213b0..1596fb3abb92e9a4df698f7d3fb7ab22463ea6bc 100644 |
--- a/src/core/SkPictureShader.cpp |
+++ b/src/core/SkPictureShader.cpp |
@@ -77,7 +77,14 @@ struct BitmapShaderRec : public SkResourceCache::Rec { |
SkAutoTUnref<SkShader>* result = reinterpret_cast<SkAutoTUnref<SkShader>*>(contextShader); |
result->reset(SkRef(rec.fShader.get())); |
- return true; |
+ |
+ SkBitmap tile; |
+ rec.fShader.get()->asABitmap(&tile, NULL, NULL); |
+ // FIXME: this doesn't protect the pixels from being discarded as soon as we unlock. |
+ // Should be handled via a pixel ref generator instead |
+ // (https://code.google.com/p/skia/issues/detail?id=3220). |
+ SkAutoLockPixels alp(tile, true); |
+ return tile.getPixels() != NULL; |
} |
}; |