pass surface to device-manager

Bug: skia:3216
Change-Id: I8e00e9eca3763593a4071c16a3ab04c46bf83a3e
Reviewed-on: https://skia-review.googlesource.com/26020
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 1676fc3..102c67a 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -332,8 +332,8 @@
         return nullptr;
     }
 
-    void publishCanvas(SampleWindow::DeviceType dType,
-                       SkCanvas* renderingCanvas, SampleWindow* win) override {
+    void publishCanvas(SampleWindow::DeviceType dType, SkSurface* surface,
+                       SampleWindow* win) override {
 #if SK_SUPPORT_GPU
         if (!IsGpuDeviceType(dType) ||
             kRGBA_F16_SkColorType == win->info().colorType() ||
@@ -345,7 +345,7 @@
             auto data = SkData::MakeUninitialized(size);
             SkASSERT(data);
 
-            if (!renderingCanvas->readPixels(info, data->writable_data(), rowBytes, 0, 0)) {
+            if (!surface->readPixels(info, data->writable_data(), rowBytes, 0, 0)) {
                 SkDEBUGFAIL("Failed to read canvas pixels");
                 return;
             }
@@ -1091,6 +1091,14 @@
 #include "SkDeferredCanvas.h"
 #include "SkDumpCanvas.h"
 
+void SampleWindow::drawIntoSurface() {
+    auto surf = this->makeSurface();
+
+    this->draw(surf->getCanvas());
+
+    fDevManager->publishCanvas(fDeviceType, surf.get(), this);
+}
+
 void SampleWindow::draw(SkCanvas* canvas) {
     std::unique_ptr<SkThreadedBMPDevice> tDev;
     std::unique_ptr<SkCanvas> tCanvas;
@@ -1164,9 +1172,6 @@
     }
 
     canvas->flush();
-
-    // do this last
-    fDevManager->publishCanvas(fDeviceType, canvas, this);
 }
 
 static float clipW = 200;