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); |
+ 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); |