Changing SkDeferredCanvas to use factories for creation
The objective of this change is to remove all calls to
SkCanvas::setDevice. The factory API is hidden behind
a build flag in order to ease the roll into chromium.
A side-effect of the factory pattern is that it will
no longer be possible to allocate a SkDeferredCanvas on
the stack. This changes nothing for chrome, but it
impacts skia test programs.
Review URL: https://codereview.chromium.org/16040002
git-svn-id: http://skia.googlecode.com/svn/trunk@9298 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp
index 006c855..e692de1 100644
--- a/tests/CanvasTest.cpp
+++ b/tests/CanvasTest.cpp
@@ -777,24 +777,29 @@
SkBitmap deferredStore;
createBitmap(&deferredStore, SkBitmap::kARGB_8888_Config, 0xFFFFFFFF);
SkDevice deferredDevice(deferredStore);
- SkDeferredCanvas deferredCanvas(&deferredDevice);
+ SkAutoTUnref<SkDeferredCanvas> deferredCanvas(
+#if SK_DEFERRED_CANVAS_USES_FACTORIES
+ SkDeferredCanvas::Create(&deferredDevice));
+#else
+ SkNEW_ARGS(SkDeferredCanvas, (&deferredDevice)));
+#endif
testStep->setAssertMessageFormat(kDeferredDrawAssertMessageFormat);
- testStep->draw(&deferredCanvas, reporter);
+ testStep->draw(deferredCanvas, reporter);
testStep->setAssertMessageFormat(kDeferredPreFlushAssertMessageFormat);
- AssertCanvasStatesEqual(reporter, &deferredCanvas, &referenceCanvas,
+ AssertCanvasStatesEqual(reporter, deferredCanvas, &referenceCanvas,
testStep);
if (silent) {
- deferredCanvas.silentFlush();
+ deferredCanvas->silentFlush();
} else {
- deferredCanvas.flush();
+ deferredCanvas->flush();
}
testStep->setAssertMessageFormat(
silent ? kDeferredPostSilentFlushPlaybackAssertMessageFormat :
kDeferredPostFlushPlaybackAssertMessageFormat);
AssertCanvasStatesEqual(reporter,
- deferredCanvas.immediateCanvas(),
+ deferredCanvas->immediateCanvas(),
&referenceCanvas, testStep);
// Verified that deferred canvas state is not affected by flushing