Reland "Consolidate GrDrawingManager <-> GrRenderTask lifecycle"
This reverts commit 65888b81cf35503b148f7866224a74d1fef1508a.
Reason for revert: Fixed underlying issue http://crbug.com/1097620
Original change's description:
> Revert "Consolidate GrDrawingManager <-> GrRenderTask lifecycle"
>
> This reverts commit 6f1487fe80c19c7a18a41d5a738d7ba2301929a9.
>
> Reason for revert: http://crbug.com/1097620
>
> Original change's description:
> > Consolidate GrDrawingManager <-> GrRenderTask lifecycle
> >
> > This creates a funnel in the drawing manager (removeRenderTasks) that
> > opens the door for tighter integration between the two classes. Also we
> > add some assertions about the relationship and cut out duplicated code.
> >
> > Bug: skia:10372
> > Change-Id: I0781ba7d45ac090cf7f6d430f0d56afe0f98b7e0
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/297195
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > Commit-Queue: Adlai Holler <adlai@google.com>
>
> TBR=robertphillips@google.com,adlai@google.com
>
> Change-Id: I5d34ada1838d206d8a33294427d459c36ad6b740
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10372
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298137
> Auto-Submit: Adlai Holler <adlai@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,adlai@google.com
Bug: skia:10372
Change-Id: I9c83d4b2dc10b9db576d506b461b596b94afbc8d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298339
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
diff --git a/src/gpu/GrRenderTask.cpp b/src/gpu/GrRenderTask.cpp
index fece63f..7b294a4 100644
--- a/src/gpu/GrRenderTask.cpp
+++ b/src/gpu/GrRenderTask.cpp
@@ -27,9 +27,12 @@
}
void GrRenderTask::disown(GrDrawingManager* drawingMgr) {
+ SkASSERT(!fDrawingMgr || drawingMgr == fDrawingMgr);
+ SkASSERT(this->isClosed());
if (this->isSetFlag(kDisowned_Flag)) {
return;
}
+ SkDEBUGCODE(fDrawingMgr = nullptr);
this->setFlag(kDisowned_Flag);
for (const GrSurfaceProxyView& target : fTargets) {
@@ -274,6 +277,9 @@
void GrRenderTask::addTarget(GrDrawingManager* drawingMgr, GrSurfaceProxyView view) {
SkASSERT(view);
+ SkASSERT(!this->isClosed());
+ SkASSERT(!fDrawingMgr || drawingMgr == fDrawingMgr);
+ SkDEBUGCODE(fDrawingMgr = drawingMgr);
drawingMgr->setLastRenderTask(view.proxy(), this);
fTargets.push_back(std::move(view));
}