diff options
author | 2012-02-07 16:27:57 +0000 | |
---|---|---|
committer | 2012-02-07 16:27:57 +0000 | |
commit | 1f9767c03bad1ef85e5388d84e23e4b5dff4bc1a (patch) | |
tree | e6ea138a19024226eec416fec1959d8a16ed5c81 /src | |
parent | 4bcb0c6e0377557d326344f4bd2bbab4e8b1bc3a (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkDevice.cpp | 8 | ||||
-rw-r--r-- | src/utils/SkDeferredCanvas.cpp | 6 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp index dc7feaf402..34b5c4fbe1 100644 --- a/src/core/SkDevice.cpp +++ b/src/core/SkDevice.cpp @@ -77,11 +77,11 @@ void SkDevice::unlockPixels() { } const SkBitmap& SkDevice::accessBitmap(bool changePixels) { - this->onAccessBitmap(&fBitmap); + const SkBitmap& bitmap = this->onAccessBitmap(&fBitmap); if (changePixels) { - fBitmap.notifyPixelsChanged(); + bitmap.notifyPixelsChanged(); } - return fBitmap; + return bitmap; } void SkDevice::getGlobalBounds(SkIRect* bounds) const { @@ -95,7 +95,7 @@ void SkDevice::clear(SkColor color) { fBitmap.eraseColor(color); } -void SkDevice::onAccessBitmap(SkBitmap* bitmap) {} +const SkBitmap& SkDevice::onAccessBitmap(SkBitmap* bitmap) {return *bitmap;} void SkDevice::setMatrixClip(const SkMatrix& matrix, const SkRegion& region, const SkClipStack& clipStack) { diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp index 01ee73fc82..6988517fe6 100644 --- a/src/utils/SkDeferredCanvas.cpp +++ b/src/utils/SkDeferredCanvas.cpp @@ -471,10 +471,10 @@ SkDeferredCanvas::DeferredDevice::DeferredDevice( 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 @@ void SkDeferredCanvas::DeferredDevice::writePixels(const SkBitmap& bitmap, 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( |