Fixing deferred canvases so that they do not return deferred devices on createCompatibleDevice
TEST= DeferredCanvas unit test.
Review URL: https://codereview.chromium.org/15594004
git-svn-id: http://skia.googlecode.com/svn/trunk@9224 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index c181818..f2aae06 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -475,12 +475,11 @@
// Save layer usage not supported, and not required by SkDeferredCanvas.
SkASSERT(usage != kSaveLayer_Usage);
// Create a compatible non-deferred device.
- SkAutoTUnref<SkDevice> compatibleDevice
- (immediateDevice()->createCompatibleDevice(config, width, height,
- isOpaque));
- DeferredDevice* device = SkNEW_ARGS(DeferredDevice, (compatibleDevice));
- device->setNotificationClient(fNotificationClient);
- return device;
+ // We do not create a deferred device because we know the new device
+ // will not be used with a deferred canvas (there is no API for that).
+ // And connecting a DeferredDevice to non-deferred canvas can result
+ // in unpredictable behavior.
+ return immediateDevice()->createCompatibleDevice(config, width, height, isOpaque);
}
bool DeferredDevice::onReadPixels(