| Index: src/utils/SkDeferredCanvas.cpp
|
| ===================================================================
|
| --- src/utils/SkDeferredCanvas.cpp (revision 9282)
|
| +++ src/utils/SkDeferredCanvas.cpp (working copy)
|
| @@ -527,6 +527,8 @@
|
| SkDeferredCanvas* fCanvas;
|
| };
|
|
|
| +#if !SK_DEFERRED_CANVAS_USES_FACTORIES
|
| +
|
| SkDeferredCanvas::SkDeferredCanvas() {
|
| this->init();
|
| }
|
| @@ -541,6 +543,23 @@
|
| this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (surface)))->unref();
|
| }
|
|
|
| +#else // SK_DEFERRED_CANVAS_USES_FACTORIES
|
| +
|
| +SkDeferredCanvas* SkDeferredCanvas::create(SkDevice* device) {
|
| + SkAutoTUnref<DeferredDevice> deferredDevice(SkNEW_ARGS(DeferredDevice, (device)));
|
| + return SkNEW_ARGS(SkDeferredCanvas, (deferredDevice));
|
| +}
|
| +
|
| +SkDeferredCanvas* SkDeferredCanvas::create(SkSurface* surface) {
|
| + SkAutoTUnref<DeferredDevice> deferredDevice(SkNEW_ARGS(DeferredDevice, (surface)));
|
| + return SkNEW_ARGS(SkDeferredCanvas, (deferredDevice));
|
| +}
|
| +
|
| +SkDeferredCanvas::SkDeferredCanvas(DeferredDevice* device) : SkCanvas (device) {
|
| + this->init();
|
| +}
|
| +#endif
|
| +
|
| void SkDeferredCanvas::init() {
|
| fDeferredDrawing = true; // On by default
|
| }
|
| @@ -622,20 +641,21 @@
|
| }
|
|
|
| SkDevice* SkDeferredCanvas::setDevice(SkDevice* device) {
|
| +#if SK_DEFERRED_CANVAS_USES_FACTORIES
|
| + SkASSERT(0); // setDevice is deprecated
|
| +#else
|
| this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (device)))->unref();
|
| +#endif
|
| return device;
|
| }
|
|
|
| SkSurface* SkDeferredCanvas::setSurface(SkSurface* surface) {
|
| DeferredDevice* deferredDevice = this->getDeferredDevice();
|
| - if (NULL != deferredDevice) {
|
| - // By swapping the surface into the existing device, we preserve
|
| - // all pending commands, which can help to seamlessly recover from
|
| - // a lost accelerated graphics context.
|
| - deferredDevice->setSurface(surface);
|
| - } else {
|
| - this->INHERITED::setDevice(SkNEW_ARGS(DeferredDevice, (surface)))->unref();
|
| - }
|
| + SkASSERT(NULL != deferredDevice);
|
| + // By swapping the surface into the existing device, we preserve
|
| + // all pending commands, which can help to seamlessly recover from
|
| + // a lost accelerated graphics context.
|
| + deferredDevice->setSurface(surface);
|
| return surface;
|
| }
|
|
|
|
|