Chromium Code Reviews| Index: tests/WritePixelsTest.cpp |
| diff --git a/tests/WritePixelsTest.cpp b/tests/WritePixelsTest.cpp |
| index 43d17e7cb5c14e2dc6cbcdda00f0965935245515..e2e4a0c802952f9e6f09cfe6ec772c387e645f7c 100644 |
| --- a/tests/WritePixelsTest.cpp |
| +++ b/tests/WritePixelsTest.cpp |
| @@ -136,8 +136,7 @@ static uint32_t getBitmapColor(int x, int y, int w, SkCanvas::Config8888 config8 |
| static void fillCanvas(SkCanvas* canvas) { |
| static SkBitmap bmp; |
| if (bmp.isNull()) { |
| - bmp.setConfig(SkBitmap::kARGB_8888_Config, DEV_W, DEV_H); |
| - SkDEBUGCODE(bool alloc = ) bmp.allocPixels(); |
| + SkDEBUGCODE(bool alloc = ) bmp.allocN32Pixels(DEV_W, DEV_H); |
| SkASSERT(alloc); |
| SkAutoLockPixels alp(bmp); |
| intptr_t pixels = reinterpret_cast<intptr_t>(bmp.getPixels()); |
| @@ -304,13 +303,28 @@ static const CanvasConfig gCanvasConfigs[] = { |
| #endif |
| }; |
| +#include "SkMallocPixelRef.h" |
| + |
| +// This is a tricky pattern, because we have to setConfig+rowBytes AND specify |
| +// a custom pixelRef (which also has to specify its rowBytes), so we have to be |
| +// sure that the two rowBytes match (and the infos match). |
| +// |
| +static bool allocRowBytes(SkBitmap* bm, const SkImageInfo& info, size_t rowBytes) { |
| + if (!bm->setConfig(info, rowBytes)) { |
| + return false; |
| + } |
| + SkPixelRef* pr = SkMallocPixelRef::NewAllocate(info, rowBytes, NULL); |
|
scroggo
2014/02/13 20:26:03
Won't allocPixels do this for you?
reed1
2014/02/13 20:48:37
allocPixels doesn't let me pass in a rowBytes, whi
scroggo
2014/02/13 21:01:15
The version of allocPixels that calls the standard
|
| + bm->setPixelRef(pr)->unref(); |
| + return true; |
| +} |
| + |
| static SkBaseDevice* createDevice(const CanvasConfig& c, GrContext* grCtx) { |
| switch (c.fDevType) { |
| case kRaster_DevType: { |
| SkBitmap bmp; |
| size_t rowBytes = c.fTightRowBytes ? 0 : 4 * DEV_W + 100; |
| - bmp.setConfig(SkBitmap::kARGB_8888_Config, DEV_W, DEV_H, rowBytes); |
| - if (!bmp.allocPixels()) { |
| + SkImageInfo info = SkImageInfo::MakeN32Premul(DEV_W, DEV_H); |
| + if (!allocRowBytes(&bmp, info, rowBytes)) { |
| sk_throw(); |
| return NULL; |
| } |
| @@ -344,8 +358,8 @@ static bool setupBitmap(SkBitmap* bitmap, |
| int w, int h, |
| bool tightRowBytes) { |
| size_t rowBytes = tightRowBytes ? 0 : 4 * w + 60; |
| - bitmap->setConfig(SkBitmap::kARGB_8888_Config, w, h, rowBytes); |
| - if (!bitmap->allocPixels()) { |
| + SkImageInfo info = SkImageInfo::MakeN32Premul(w, h); |
| + if (!allocRowBytes(bitmap, info, rowBytes)) { |
| return false; |
| } |
| SkAutoLockPixels alp(*bitmap); |