| Index: src/utils/SkCanvasStateUtils.cpp
|
| diff --git a/src/utils/SkCanvasStateUtils.cpp b/src/utils/SkCanvasStateUtils.cpp
|
| index f7a9447de2efe53e6bf2b2765229a34b41b2d58b..759ba92fc835a18879bf2f4083acac294af1e290 100644
|
| --- a/src/utils/SkCanvasStateUtils.cpp
|
| +++ b/src/utils/SkCanvasStateUtils.cpp
|
| @@ -224,8 +224,8 @@ SkCanvasState* SkCanvasStateUtils::CaptureCanvasState(SkCanvas* canvas) {
|
| for (SkCanvas::LayerIter layer(canvas, true/*skipEmptyClips*/); !layer.done(); layer.next()) {
|
|
|
| // we currently only work for bitmap backed devices
|
| - const SkBitmap& bitmap = layer.device()->accessBitmap(true/*changePixels*/);
|
| - if (bitmap.empty() || bitmap.isNull() || !bitmap.lockPixelsAreWritable()) {
|
| + SkPixmap pmap;
|
| + if (!layer.device()->accessPixels(&pmap) || 0 == pmap.width() || 0 == pmap.height()) {
|
| return NULL;
|
| }
|
|
|
| @@ -234,10 +234,10 @@ SkCanvasState* SkCanvasStateUtils::CaptureCanvasState(SkCanvas* canvas) {
|
| layerState->type = kRaster_CanvasBackend;
|
| layerState->x = layer.x();
|
| layerState->y = layer.y();
|
| - layerState->width = bitmap.width();
|
| - layerState->height = bitmap.height();
|
| + layerState->width = pmap.width();
|
| + layerState->height = pmap.height();
|
|
|
| - switch (bitmap.colorType()) {
|
| + switch (pmap.colorType()) {
|
| case kN32_SkColorType:
|
| layerState->raster.config = kARGB_8888_RasterConfig;
|
| break;
|
| @@ -247,8 +247,8 @@ SkCanvasState* SkCanvasStateUtils::CaptureCanvasState(SkCanvas* canvas) {
|
| default:
|
| return NULL;
|
| }
|
| - layerState->raster.rowBytes = bitmap.rowBytes();
|
| - layerState->raster.pixels = bitmap.getPixels();
|
| + layerState->raster.rowBytes = pmap.rowBytes();
|
| + layerState->raster.pixels = pmap.writable_addr();
|
|
|
| setup_MC_state(&layerState->mcState, layer.matrix(), layer.clip());
|
| layerCount++;
|
|
|