diff options
Diffstat (limited to 'tools/PictureRenderer.cpp')
-rw-r--r-- | tools/PictureRenderer.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp index 4142fa4294..84e7f85db3 100644 --- a/tools/PictureRenderer.cpp +++ b/tools/PictureRenderer.cpp @@ -54,10 +54,22 @@ void PictureRenderer::init(SkPicture* pict) { } void PictureRenderer::end() { + this->resetState(); fPicture = NULL; fCanvas.reset(NULL); } +void PictureRenderer::resetState() { + fCanvas->flush(); + + if (this->isUsingGpuDevice()) { + SkGLContext* glContext = fGrContextFactory.getGLContext( + GrContextFactory::kNative_GLContextType); + SK_GL(*glContext, Finish()); + fGrContext->freeGpuResources(); + } +} + void PipePictureRenderer::render() { SkASSERT(fCanvas.get() != NULL); SkASSERT(fPicture != NULL); |