| Index: src/core/SkBitmap.cpp
|
| diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp
|
| index b52961794fb1e226cfa16284115bcbeb9ed146b2..25a6b1dba44790ce0bee01bb22f4b92bfd54c426 100644
|
| --- a/src/core/SkBitmap.cpp
|
| +++ b/src/core/SkBitmap.cpp
|
| @@ -453,20 +453,10 @@ void SkBitmap::setPixels(void* p, SkColorTable* ctable) {
|
| return;
|
| }
|
|
|
| - SkImageInfo info;
|
| - if (!this->asImageInfo(&info)) {
|
| - this->setPixelRef(NULL, 0);
|
| - return;
|
| - }
|
| -
|
| - SkPixelRef* pr = SkMallocPixelRef::NewDirect(info, p, fRowBytes, ctable);
|
| - if (NULL == pr) {
|
| - this->setPixelRef(NULL, 0);
|
| - return;
|
| - }
|
| -
|
| - this->setPixelRef(pr)->unref();
|
| + Sk64 size = this->getSize64();
|
| + SkASSERT(!size.isNeg() && size.is32());
|
|
|
| + this->setPixelRef(new SkMallocPixelRef(p, size.get32(), ctable, false))->unref();
|
| // since we're already allocated, we lockPixels right away
|
| this->lockPixels();
|
| SkDEBUGCODE(this->validate();)
|
| @@ -531,19 +521,17 @@ GrTexture* SkBitmap::getTexture() const {
|
| */
|
| bool SkBitmap::HeapAllocator::allocPixelRef(SkBitmap* dst,
|
| SkColorTable* ctable) {
|
| - SkImageInfo info;
|
| - if (!dst->asImageInfo(&info)) {
|
| -// SkDebugf("unsupported config for info %d\n", dst->config());
|
| + Sk64 size = dst->getSize64();
|
| + if (size.isNeg() || !size.is32()) {
|
| return false;
|
| }
|
| -
|
| - SkPixelRef* pr = SkMallocPixelRef::NewAllocate(info, dst->rowBytes(),
|
| - ctable);
|
| - if (NULL == pr) {
|
| +
|
| + void* addr = sk_malloc_flags(size.get32(), 0); // returns NULL on failure
|
| + if (NULL == addr) {
|
| return false;
|
| }
|
|
|
| - dst->setPixelRef(pr, 0)->unref();
|
| + dst->setPixelRef(new SkMallocPixelRef(addr, size.get32(), ctable))->unref();
|
| // since we're already allocated, we lockPixels right away
|
| dst->lockPixels();
|
| return true;
|
| @@ -1653,28 +1641,6 @@ SkBitmap::RLEPixels::~RLEPixels() {
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -void SkImageInfo::unflatten(SkFlattenableReadBuffer& buffer) {
|
| - fWidth = buffer.read32();
|
| - fHeight = buffer.read32();
|
| -
|
| - uint32_t packed = buffer.read32();
|
| - SkASSERT(0 == (packed >> 16));
|
| - fAlphaType = (SkAlphaType)((packed >> 8) & 0xFF);
|
| - fColorType = (SkColorType)((packed >> 0) & 0xFF);
|
| -}
|
| -
|
| -void SkImageInfo::flatten(SkFlattenableWriteBuffer& buffer) const {
|
| - buffer.write32(fWidth);
|
| - buffer.write32(fHeight);
|
| -
|
| - SkASSERT(0 == (fAlphaType & ~0xFF));
|
| - SkASSERT(0 == (fColorType & ~0xFF));
|
| - uint32_t packed = (fAlphaType << 8) | fColorType;
|
| - buffer.write32(packed);
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -
|
| #ifdef SK_DEBUG
|
| void SkBitmap::validate() const {
|
| SkASSERT(fConfig < kConfigCount);
|
|
|