Don't use structured binding on the PathStroke struct
Change-Id: I6aa2890ac9790c41acf405f7b3f83c402479cdf4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372160
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/tessellate/GrStrokeHardwareTessellator.cpp b/src/gpu/tessellate/GrStrokeHardwareTessellator.cpp
index 099d83c..8211e8c 100644
--- a/src/gpu/tessellate/GrStrokeHardwareTessellator.cpp
+++ b/src/gpu/tessellate/GrStrokeHardwareTessellator.cpp
@@ -114,7 +114,8 @@
int capPreallocCount = 8;
this->allocPatchChunkAtLeast(strokePreallocCount + capPreallocCount);
- for (const auto& [path, stroke] : pathStrokeList) {
+ for (const auto& pathStroke : pathStrokeList) {
+ const SkStrokeRec& stroke = pathStroke.fStroke;
if (!fStroke || fStroke->getWidth() != stroke.getWidth() ||
fStroke->getJoin() != stroke.getJoin()) {
auto tolerances = Tolerances::MakePreTransform(matrixScales.data(), stroke.getWidth());
@@ -127,7 +128,7 @@
fHasLastControlPoint = false;
SkDEBUGCODE(fHasCurrentPoint = false;)
SkPathVerb previousVerb = SkPathVerb::kClose;
- for (auto [verb, p, w] : SkPathPriv::Iterate(path)) {
+ for (auto [verb, p, w] : SkPathPriv::Iterate(pathStroke.fPath)) {
switch (verb) {
case SkPathVerb::kMove:
// "A subpath ... consisting of a single moveto shall not be stroked."
diff --git a/src/gpu/tessellate/GrStrokeIndirectTessellator.cpp b/src/gpu/tessellate/GrStrokeIndirectTessellator.cpp
index cf5e91d..63fc2fb 100644
--- a/src/gpu/tessellate/GrStrokeIndirectTessellator.cpp
+++ b/src/gpu/tessellate/GrStrokeIndirectTessellator.cpp
@@ -468,7 +468,8 @@
float lastStrokeWidth = -1;
SkPoint lastControlPoint = {0,0};
- for (const auto& [path, stroke] : pathStrokeList) {
+ for (const auto& pathStroke : pathStrokeList) {
+ const SkStrokeRec& stroke = pathStroke.fStroke;
SkASSERT(stroke.getWidth() >= 0); // Otherwise we can't initialize lastStrokeWidth=-1.
if (stroke.getWidth() != lastStrokeWidth ||
(stroke.getJoin() == SkPaint::kRound_Join) != counter.isRoundJoin()) {
@@ -478,7 +479,7 @@
fMaxNumExtraEdgesInJoin = std::max(fMaxNumExtraEdgesInJoin,
GrStrokeTessellateShader::NumExtraEdgesInIndirectJoin(stroke.getJoin()));
// Iterate through each verb in the stroke, counting its resolveLevel(s).
- GrStrokeIterator iter(path, &stroke, &viewMatrix);
+ GrStrokeIterator iter(pathStroke.fPath, &stroke, &viewMatrix);
while (iter.next()) {
using Verb = GrStrokeIterator::Verb;
Verb verb = iter.verb();
@@ -778,12 +779,13 @@
int8_t resolveLevel;
// Now write out each instance to its resolveLevel's designated location in the instance buffer.
- for (const auto& [path, stroke] : pathStrokeList) {
+ for (const auto& pathStroke : pathStrokeList) {
+ const SkStrokeRec& stroke = pathStroke.fStroke;
bool isRoundJoin = (stroke.getJoin() == SkPaint::kRound_Join);
if (fShaderFlags & ShaderFlags::kDynamicStroke) {
binningWriter.updateDynamicStroke(stroke);
}
- GrStrokeIterator iter(path, &stroke, &viewMatrix);
+ GrStrokeIterator iter(pathStroke.fPath, &stroke, &viewMatrix);
bool hasLastControlPoint = false;
while (iter.next()) {
using Verb = GrStrokeIterator::Verb;