Enable move construction for OpChain and SkTArray<OpChain>.
OpChains contain an internal List which does bookkeeping/validation when
moved, but our SkTArray was skipping over this validation step because
MEM_MOVE was set to true.
Change-Id: I4a4f1f0dff96076dfa3719467f4393eb7e958c8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305958
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/GrOpsTask.h b/src/gpu/GrOpsTask.h
index edef6f6..e07286e 100644
--- a/src/gpu/GrOpsTask.h
+++ b/src/gpu/GrOpsTask.h
@@ -197,16 +197,18 @@
class OpChain {
public:
- OpChain(const OpChain&) = delete;
- OpChain& operator=(const OpChain&) = delete;
OpChain(std::unique_ptr<GrOp>, GrProcessorSet::Analysis, GrAppliedClip*,
const DstProxyView*);
-
~OpChain() {
// The ops are stored in a GrMemoryPool and must be explicitly deleted via the pool.
SkASSERT(fList.empty());
}
+ OpChain(const OpChain&) = delete;
+ OpChain& operator=(const OpChain&) = delete;
+ OpChain(OpChain&&) = default;
+ OpChain& operator=(OpChain&&) = default;
+
void visitProxies(const GrOp::VisitProxyFunc&) const;
GrOp* head() const { return fList.head(); }
@@ -320,7 +322,7 @@
bool fHasWaitOp = false;
// For ops/opsTask we have mean: 5 stdDev: 28
- SkSTArray<25, OpChain, true> fOpChains;
+ SkSTArray<25, OpChain> fOpChains;
// MDB TODO: 4096 for the first allocation of the clip space will be huge overkill.
// Gather statistics to determine the correct size.