summaryrefslogtreecommitdiff
path: root/image/SkImage_Raster.cpp
diff options
context:
space:
mode:
authorreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-28 12:19:02 +0000
committerreed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-28 12:19:02 +0000
commit2ffcbf828d03b8e32ffc93b1b0ee8a98faeaa51e (patch)
tree57832147d5e270328e92aec74baf1246fb62b4a5 /image/SkImage_Raster.cpp
parent2076a5c617c87bb09b4fb452848d2981f167aa0f (diff)
downloadsrc-2ffcbf828d03b8e32ffc93b1b0ee8a98faeaa51e.tar.gz
Add caching of the snapshot image form a surface
Notify the surface when the canvas draws into it, so it can invalidate the cached image, and (if needed) perform a copy-on-write on the surface if it was being shared with the image. Review URL: https://codereview.appspot.com/6441115 git-svn-id: http://skia.googlecode.com/svn/trunk/src@5306 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'image/SkImage_Raster.cpp')
-rw-r--r--image/SkImage_Raster.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/image/SkImage_Raster.cpp b/image/SkImage_Raster.cpp
index 216f0945..daed2413 100644
--- a/image/SkImage_Raster.cpp
+++ b/image/SkImage_Raster.cpp
@@ -59,6 +59,8 @@ public:
// exposed for SkSurface_Raster via SkNewImageFromPixelRef
SkImage_Raster(const SkImage::Info&, SkPixelRef*, size_t rowBytes);
+ SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); }
+
private:
SkImage_Raster() : INHERITED(0, 0) {}
@@ -93,8 +95,6 @@ SkImage_Raster::SkImage_Raster(const Info& info, SkColorSpace* cs,
SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes)
: INHERITED(info.fWidth, info.fHeight) {
- SkASSERT(pr->isImmutable());
-
bool isOpaque;
SkBitmap::Config config = SkImageInfoToBitmapConfig(info, &isOpaque);
@@ -159,3 +159,7 @@ SkImage* SkNewImageFromPixelRef(const SkImage::Info& info, SkPixelRef* pr,
return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes));
}
+SkPixelRef* SkBitmapImageGetPixelRef(SkImage* image) {
+ return ((SkImage_Raster*)image)->getPixelRef();
+}
+