aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/PictureRenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/PictureRenderer.cpp')
-rw-r--r--tools/PictureRenderer.cpp12
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);