diff options
Diffstat (limited to 'samplecode/SampleApp.cpp')
| -rw-r--r-- | samplecode/SampleApp.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 1676fc3b13..102c67a90b 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -332,8 +332,8 @@ public: 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 @@ public: 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 @@ static void drawText(SkCanvas* canvas, SkString str, SkScalar left, SkScalar top #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 @@ void SampleWindow::draw(SkCanvas* canvas) { } canvas->flush(); - - // do this last - fDevManager->publishCanvas(fDeviceType, canvas, this); } static float clipW = 200; |
