Index: skia/ext/bitmap_platform_device_skia.cc |
diff --git a/skia/ext/bitmap_platform_device_skia.cc b/skia/ext/bitmap_platform_device_skia.cc |
index 5904d6f2b70d7e7eebd918e0d2cd9c9120cbfef9..a39e5d718579c1728c2b46f23f21aa12dbaad189 100644 |
--- a/skia/ext/bitmap_platform_device_skia.cc |
+++ b/skia/ext/bitmap_platform_device_skia.cc |
@@ -9,7 +9,15 @@ |
BitmapPlatformDevice* BitmapPlatformDevice::Create(int width, int height, |
bool is_opaque) { |
- return Create(width, height, is_opaque, nullptr); |
+ SkBitmap bitmap; |
+ if (bitmap.tryAllocN32Pixels(width, height, is_opaque)) { |
+ // Follow the logic in SkCanvas::createDevice(), initialize the bitmap if it |
+ // is not opaque. |
+ if (!is_opaque) |
+ bitmap.eraseARGB(0, 0, 0, 0); |
+ return new BitmapPlatformDevice(bitmap); |
+ } |
+ return NULL; |
} |
BitmapPlatformDevice* BitmapPlatformDevice::Create(int width, int height, |
@@ -18,17 +26,10 @@ |
SkBitmap bitmap; |
bitmap.setInfo(SkImageInfo::MakeN32(width, height, |
is_opaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType)); |
- |
- if (data) { |
+ if (data) |
bitmap.setPixels(data); |
- } else { |
- if (!bitmap.tryAllocPixels()) |
- return nullptr; |
- // Follow the logic in SkCanvas::createDevice(), initialize the bitmap if |
- // it is not opaque. |
- if (!is_opaque) |
- bitmap.eraseARGB(0, 0, 0, 0); |
- } |
+ else if (!bitmap.tryAllocPixels()) |
+ return NULL; |
return new BitmapPlatformDevice(bitmap); |
} |
@@ -48,6 +49,15 @@ |
info.fInfo.isOpaque()); |
} |
+NativeDrawingContext BitmapPlatformDevice::BeginPlatformPaint( |
+ const SkMatrix& transform, |
+ const SkIRect& clip_bounds) { |
+ // TODO(zhenghao): What should we return? The ptr to the address of the |
+ // pixels? Maybe this won't be called at all. |
+ SkPixmap pixmap; |
+ return accessPixels(&pixmap) ? pixmap.writable_addr() : nullptr; |
+} |
+ |
// PlatformCanvas impl |
std::unique_ptr<SkCanvas> CreatePlatformCanvasWithPixels( |