diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-11 18:38:46 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-11 18:38:46 +0000 |
commit | 515392df84309ea716d7af351aea1bde00bf058d (patch) | |
tree | 58dec45d356e1b5cc331d4214c470077f1da22d8 /images | |
parent | 786f86cea3fa73c8a640abb4643bcb29a65906eb (diff) | |
download | src-515392df84309ea716d7af351aea1bde00bf058d.tar.gz |
remvoe duplicate impl for SkImageInfo flattening
Revert "Revert "PixelRef now returns (nearly) everything that is currently in SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap.""""""
This reverts commit eabd6b2ed4e494b323c08f32358f45950a0368c3.
BUG=
Review URL: https://codereview.chromium.org/108773003
git-svn-id: http://skia.googlecode.com/svn/trunk/src@12624 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'images')
-rw-r--r-- | images/SkImageRef.cpp | 31 | ||||
-rw-r--r-- | images/SkImageRef_GlobalPool.cpp | 6 | ||||
-rw-r--r-- | images/SkImageRef_ashmem.cpp | 8 | ||||
-rw-r--r-- | images/SkImageRef_ashmem.h | 2 |
4 files changed, 19 insertions, 28 deletions
diff --git a/images/SkImageRef.cpp b/images/SkImageRef.cpp index 1a8284bd..99782c45 100644 --- a/images/SkImageRef.cpp +++ b/images/SkImageRef.cpp @@ -15,16 +15,14 @@ //#define DUMP_IMAGEREF_LIFECYCLE - /////////////////////////////////////////////////////////////////////////////// -SkImageRef::SkImageRef(SkStreamRewindable* stream, SkBitmap::Config config, +SkImageRef::SkImageRef(const SkImageInfo& info, SkStreamRewindable* stream, int sampleSize, SkBaseMutex* mutex) - : SkPixelRef(mutex), fErrorInDecoding(false) { + : INHERITED(info, mutex), fErrorInDecoding(false) { SkASSERT(stream); stream->ref(); fStream = stream; - fConfig = config; fSampleSize = sampleSize; fDoDither = true; fPrev = fNext = NULL; @@ -40,7 +38,7 @@ SkImageRef::~SkImageRef() { #ifdef DUMP_IMAGEREF_LIFECYCLE SkDebugf("delete ImageRef %p [%d] data=%d\n", - this, fConfig, (int)fStream->getLength()); + this, this->info().fColorType, (int)fStream->getLength()); #endif fStream->unref(); @@ -92,14 +90,6 @@ bool SkImageRef::prepareBitmap(SkImageDecoder::Mode mode) { return false; } - /* As soon as we really know our config, we record it, so that on - subsequent calls to the codec, we are sure we will always get the same - result. - */ - if (SkBitmap::kNo_Config != fBitmap.config()) { - fConfig = fBitmap.config(); - } - if (NULL != fBitmap.getPixels() || (SkBitmap::kNo_Config != fBitmap.config() && SkImageDecoder::kDecodeBounds_Mode == mode)) { @@ -125,7 +115,7 @@ bool SkImageRef::prepareBitmap(SkImageDecoder::Mode mode) { codec->setSampleSize(fSampleSize); codec->setDitherImage(fDoDither); - if (this->onDecode(codec, fStream, &fBitmap, fConfig, mode)) { + if (this->onDecode(codec, fStream, &fBitmap, fBitmap.config(), mode)) { return true; } } @@ -143,15 +133,18 @@ bool SkImageRef::prepareBitmap(SkImageDecoder::Mode mode) { return false; } -void* SkImageRef::onLockPixels(SkColorTable** ct) { +bool SkImageRef::onNewLockPixels(LockRec* rec) { if (NULL == fBitmap.getPixels()) { (void)this->prepareBitmap(SkImageDecoder::kDecodePixels_Mode); } - if (ct) { - *ct = fBitmap.getColorTable(); + if (NULL == fBitmap.getPixels()) { + return false; } - return fBitmap.getPixels(); + rec->fPixels = fBitmap.getPixels(); + rec->fColorTable = NULL; + rec->fRowBytes = fBitmap.rowBytes(); + return true; } size_t SkImageRef::ramUsed() const { @@ -170,7 +163,6 @@ size_t SkImageRef::ramUsed() const { SkImageRef::SkImageRef(SkFlattenableReadBuffer& buffer, SkBaseMutex* mutex) : INHERITED(buffer, mutex), fErrorInDecoding(false) { - fConfig = (SkBitmap::Config)buffer.readUInt(); fSampleSize = buffer.readInt(); fDoDither = buffer.readBool(); @@ -185,7 +177,6 @@ SkImageRef::SkImageRef(SkFlattenableReadBuffer& buffer, SkBaseMutex* mutex) void SkImageRef::flatten(SkFlattenableWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); - buffer.writeUInt(fConfig); buffer.writeInt(fSampleSize); buffer.writeBool(fDoDither); // FIXME: Consider moving this logic should go into writeStream itself. diff --git a/images/SkImageRef_GlobalPool.cpp b/images/SkImageRef_GlobalPool.cpp index 352dd42d..f91cebab 100644 --- a/images/SkImageRef_GlobalPool.cpp +++ b/images/SkImageRef_GlobalPool.cpp @@ -24,10 +24,10 @@ static SkImageRefPool* GetGlobalPool() { return gPool; } -SkImageRef_GlobalPool::SkImageRef_GlobalPool(SkStreamRewindable* stream, - SkBitmap::Config config, +SkImageRef_GlobalPool::SkImageRef_GlobalPool(const SkImageInfo& info, + SkStreamRewindable* stream, int sampleSize) - : SkImageRef(stream, config, sampleSize, &gGlobalPoolMutex) { + : SkImageRef(info, stream, sampleSize, &gGlobalPoolMutex) { SkASSERT(&gGlobalPoolMutex == this->mutex()); SkAutoMutexAcquire ac(gGlobalPoolMutex); GetGlobalPool()->addToHead(this); diff --git a/images/SkImageRef_ashmem.cpp b/images/SkImageRef_ashmem.cpp index 0dba1d11..383a487d 100644 --- a/images/SkImageRef_ashmem.cpp +++ b/images/SkImageRef_ashmem.cpp @@ -31,10 +31,10 @@ static size_t roundToPageSize(size_t size) { return newsize; } -SkImageRef_ashmem::SkImageRef_ashmem(SkStreamRewindable* stream, - SkBitmap::Config config, - int sampleSize) - : SkImageRef(stream, config, sampleSize) { +SkImageRef_ashmem::SkImageRef_ashmem(const SkImageInfo& info, + SkStreamRewindable* stream, + int sampleSize) + : SkImageRef(info, stream, sampleSize) { fRec.fFD = -1; fRec.fAddr = NULL; diff --git a/images/SkImageRef_ashmem.h b/images/SkImageRef_ashmem.h index efee5e75..a2652fbc 100644 --- a/images/SkImageRef_ashmem.h +++ b/images/SkImageRef_ashmem.h @@ -19,7 +19,7 @@ struct SkAshmemRec { class SkImageRef_ashmem : public SkImageRef { public: - SkImageRef_ashmem(SkStreamRewindable*, SkBitmap::Config, int sampleSize = 1); + SkImageRef_ashmem(const SkImageInfo&, SkStreamRewindable*, int sampleSize = 1); virtual ~SkImageRef_ashmem(); SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem) |