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/bench/DeferredSurfaceCopyBench.cpp b/bench/DeferredSurfaceCopyBench.cpp
index ac58856..483507b 100644
--- a/bench/DeferredSurfaceCopyBench.cpp
+++ b/bench/DeferredSurfaceCopyBench.cpp
@@ -53,21 +53,26 @@
{
surface = SkSurface::NewRaster(info);
}
- SkDeferredCanvas drawingCanvas(surface);
+ SkAutoTUnref<SkDeferredCanvas> drawingCanvas(
+#if SK_DEFERRED_CANVAS_USES_FACTORIES
+ SkDeferredCanvas::Create(surface));
+#else
+ SkNEW_ARGS(SkDeferredCanvas, (surface)));
+#endif
surface->unref();
for (int iteration = 0; iteration < N; iteration++) {
- drawingCanvas.clear(0);
- SkAutoTUnref<SkImage> image(drawingCanvas.newImageSnapshot());
+ drawingCanvas->clear(0);
+ SkAutoTUnref<SkImage> image(drawingCanvas->newImageSnapshot());
SkPaint paint;
if (!fDiscardableContents) {
// If paint is not opaque, prior canvas contents are
// not discardable because they are needed for compositing.
paint.setAlpha(127);
}
- drawingCanvas.drawRect(fullCanvasRect, paint);
+ drawingCanvas->drawRect(fullCanvasRect, paint);
// Trigger copy on write, which should be faster in the discardable case.
- drawingCanvas.flush();
+ drawingCanvas->flush();
}
}