Reflect the DDLTask's ref on its target in its factory
Change-Id: I8eec3b816ee422922f1205b0eb9dca30cd3d00c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/352119
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index c4ed592..ccc1ea7 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -616,7 +616,7 @@
}
void GrDrawingManager::createDDLTask(sk_sp<const SkDeferredDisplayList> ddl,
- GrRenderTargetProxy* newDest,
+ sk_sp<GrRenderTargetProxy> newDest,
SkIPoint offset) {
SkDEBUGCODE(this->validate());
@@ -641,7 +641,7 @@
// Here we jam the proxy that backs the current replay SkSurface into the LazyProxyData.
// The lazy proxy that references it (in the DDL opsTasks) will then steal its GrTexture.
- ddl->fLazyProxyData->fReplayDest = newDest;
+ ddl->fLazyProxyData->fReplayDest = newDest.get();
if (ddl->fPendingPaths.size()) {
GrCoverageCountingPathRenderer* ccpr = this->getCoverageCountingPathRenderer();
@@ -651,7 +651,7 @@
// Add a task to handle drawing and lifetime management of the DDL.
SkDEBUGCODE(auto ddlTask =) this->appendTask(sk_make_sp<GrDDLTask>(this,
- sk_ref_sp(newDest),
+ std::move(newDest),
std::move(ddl),
offset));
SkASSERT(ddlTask->isClosed());