diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-28 12:19:02 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-28 12:19:02 +0000 |
commit | 2ffcbf828d03b8e32ffc93b1b0ee8a98faeaa51e (patch) | |
tree | 57832147d5e270328e92aec74baf1246fb62b4a5 /image/SkImage_Raster.cpp | |
parent | 2076a5c617c87bb09b4fb452848d2981f167aa0f (diff) | |
download | src-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.cpp | 8 |
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(); +} + |