| Index: src/lazy/SkLazyPixelRef.cpp
|
| diff --git a/src/lazy/SkLazyPixelRef.cpp b/src/lazy/SkLazyPixelRef.cpp
|
| index c2ca041b41da71e372be13cbc9c0cc4591440046..6dd5470227f096c155077da877a6e3f7636f1ba4 100644
|
| --- a/src/lazy/SkLazyPixelRef.cpp
|
| +++ b/src/lazy/SkLazyPixelRef.cpp
|
| @@ -118,14 +118,17 @@ static void* decode_into_bitmap(SkImageInfo* info,
|
| return target.fAddr;
|
| }
|
|
|
| -void* SkLazyPixelRef::lockScaledImageCachePixels() {
|
| +void* SkLazyPixelRef::lockScaledImageCachePixels(SkImageInfo* info,
|
| + size_t* rowBytes) {
|
| SkASSERT(!fErrorInDecoding);
|
| SkASSERT(NULL == fImageCache);
|
| SkBitmap bitmap;
|
| - const SkImageInfo* info = this->getCachedInfo();
|
| - if (info == NULL) {
|
| + const SkImageInfo* cachedInfo = this->getCachedInfo();
|
| + if (cachedInfo == NULL) {
|
| return NULL;
|
| }
|
| + *info = *cachedInfo;
|
| +
|
| // If this is the first time though, this is guaranteed to fail.
|
| // Maybe we should have a flag that says "don't even bother looking"
|
| fScaledCacheId = SkScaledImageCache::FindAndLock(this->getGenerationID(),
|
| @@ -144,6 +147,7 @@ void* SkLazyPixelRef::lockScaledImageCachePixels() {
|
| // bitmap (SkScaledImageCache::Rec.fBitmap) that holds a
|
| // reference to the concrete PixelRef while this record is
|
| // locked.
|
| + *rowBytes = bitmap.rowBytes();
|
| return pixels;
|
| } else {
|
| // Cache has been purged, must re-decode.
|
| @@ -159,22 +163,24 @@ void* SkLazyPixelRef::lockScaledImageCachePixels() {
|
| info->fHeight,
|
| bitmap);
|
| SkASSERT(fScaledCacheId != NULL);
|
| + *rowBytes = bitmap.rowBytes();
|
| return pixels;
|
| }
|
| }
|
|
|
| -void* SkLazyPixelRef::onLockPixels(SkColorTable**) {
|
| +void* SkLazyPixelRef::onLockPixels(SkImageInfo* info, size_t* rowBytes,
|
| + SkColorTable**) {
|
| if (fErrorInDecoding) {
|
| return NULL;
|
| }
|
| if (NULL == fImageCache) {
|
| - return this->lockScaledImageCachePixels();
|
| + return this->lockScaledImageCachePixels(info, rowBytes);
|
| } else {
|
| - return this->lockImageCachePixels();
|
| + return this->lockImageCachePixels(info, rowBytes);
|
| }
|
| }
|
|
|
| -void* SkLazyPixelRef::lockImageCachePixels() {
|
| +void* SkLazyPixelRef::lockImageCachePixels(SkImageInfo* info, size_t* rowBytes) {
|
| SkASSERT(fImageCache != NULL);
|
| SkASSERT(!fErrorInDecoding);
|
| SkBitmapFactory::Target target;
|
|
|