aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/skiaserve/Request.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/skiaserve/Request.cpp')
-rw-r--r--tools/skiaserve/Request.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/tools/skiaserve/Request.cpp b/tools/skiaserve/Request.cpp
index 4d256d56d8..bcaebde01f 100644
--- a/tools/skiaserve/Request.cpp
+++ b/tools/skiaserve/Request.cpp
@@ -138,6 +138,28 @@ bool Request::enableGPU(bool enable) {
return true;
}
+GrAuditTrail* Request::getAuditTrail(SkCanvas* canvas) {
+ GrAuditTrail* at = nullptr;
+#if SK_SUPPORT_GPU
+ GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
+ if (rt) {
+ GrContext* ctx = rt->getContext();
+ if (ctx) {
+ at = ctx->getAuditTrail();
+ }
+ }
+#endif
+ return at;
+}
+
+void Request::cleanupAuditTrail(SkCanvas* canvas) {
+ GrAuditTrail* at = this->getAuditTrail(canvas);
+ if (at) {
+ GrAuditTrail::AutoEnable ae(at);
+ at->fullReset();
+ }
+}
+
SkData* Request::getJsonOps(int n) {
SkCanvas* canvas = this->getCanvas();
Json::Value root = fDebugCanvas->toJSON(fUrlDataManager, n, canvas);
@@ -145,6 +167,8 @@ SkData* Request::getJsonOps(int n) {
SkDynamicMemoryWStream stream;
stream.writeText(Json::FastWriter().write(root).c_str());
+ this->cleanupAuditTrail(canvas);
+
return stream.copyToData();
}
@@ -156,11 +180,7 @@ SkData* Request::getJsonBatchList(int n) {
// a Json::Value and is only compiled in this file
Json::Value parsedFromString;
#if SK_SUPPORT_GPU
- GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
- SkASSERT(rt);
- GrContext* ctx = rt->getContext();
- SkASSERT(ctx);
- GrAuditTrail* at = ctx->getAuditTrail();
+ GrAuditTrail* at = this->getAuditTrail(canvas);
GrAuditTrail::AutoManageBatchList enable(at);
fDebugCanvas->drawTo(canvas, n);