Fixing backing store access in SkDeferredCanvas.
Chromium CL required for rolling skia DEPS past this change is posted here: https://chromiumcodereview.appspot.com/9341003/
BUG=http://code.google.com/p/skia/issues/detail?id=475
REVIEW=http://codereview.appspot.com/5626047/
TEST=DeferredCanvas unit test
git-svn-id: http://skia.googlecode.com/svn/trunk@3147 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index 01ee73f..6988517 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -471,10 +471,10 @@
SkSafeRef(fDeviceContext);
fImmediateDevice = immediateDevice; // ref counted via fImmediateCanvas
fImmediateCanvas = SkNEW_ARGS(SkCanvas, (fImmediateDevice));
- SkSafeRef(fImmediateCanvas);
fRecordingCanvas = fPicture.beginRecording(fImmediateDevice->width(),
fImmediateDevice->height(),
SkPicture::kUsePathBoundsForClip_RecordingFlag);
+ fBitmapInitialized = false;
}
SkDeferredCanvas::DeferredDevice::~DeferredDevice()
@@ -593,10 +593,10 @@
flushIfNeeded(bitmap);
}
-void SkDeferredCanvas::DeferredDevice::onAccessBitmap(SkBitmap* bitmap)
+const SkBitmap& SkDeferredCanvas::DeferredDevice::onAccessBitmap(SkBitmap*)
{
- SkASSERT(bitmap);
flushPending();
+ return fImmediateDevice->accessBitmap(false);
}
SkDevice* SkDeferredCanvas::DeferredDevice::onCreateCompatibleDevice(