maintain RenderTask dependencies through merge
If they are not maintained, then the merge leaves links to
deleted RenderTarget nodes. This creates confusion while
trying to debug.
Change-Id: I9d98a4ed2887573ddc5dfa2bae1bb22d30879c5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/402641
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
diff --git a/src/gpu/GrRenderTask.cpp b/src/gpu/GrRenderTask.cpp
index 9c8e06a..eedb84e 100644
--- a/src/gpu/GrRenderTask.cpp
+++ b/src/gpu/GrRenderTask.cpp
@@ -220,6 +220,26 @@
}
}
+void GrRenderTask::replaceDependency(const GrRenderTask* toReplace, GrRenderTask* replaceWith) {
+ for (auto& target : fDependencies) {
+ if (target == toReplace) {
+ target = replaceWith;
+ replaceWith->fDependents.push_back(this);
+ break;
+ }
+ }
+}
+
+void GrRenderTask::replaceDependent(const GrRenderTask* toReplace, GrRenderTask* replaceWith) {
+ for (auto& target : fDependents) {
+ if (target == toReplace) {
+ target = replaceWith;
+ replaceWith->fDependencies.push_back(this);
+ break;
+ }
+ }
+}
+
bool GrRenderTask::dependsOn(const GrRenderTask* dependedOn) const {
for (int i = 0; i < fDependencies.count(); ++i) {
if (fDependencies[i] == dependedOn) {