summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2021-07-29 12:45:16 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-29 13:37:03 +0000
commitd933fb3db7431b2b4fc2089480756848161259af (patch)
tree458d3d5000147bbf0d6330e7298c1697b0ef4fc5
parent187076d19a776320814f80cd7a24ee64001cb54e (diff)
Fix for QShaderNode fix that selected highest version number of a rule
The rule selection still has to be made from last added rule to first so that format.support works correctly. - Update QShaderNode unit tests Change-Id: I47af898ee0d82e91009efccf1dca9937feaca717 Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 21168905a7eda8806543b490a0fae5a5a0ec7cad) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/render/shadergraph/qshadernode.cpp3
-rw-r--r--tests/auto/render/shadergraph/qshadernodes/tst_qshadernodes.cpp4
2 files changed, 4 insertions, 3 deletions
diff --git a/src/render/shadergraph/qshadernode.cpp b/src/render/shadergraph/qshadernode.cpp
index b95a77b04..b06b9c84e 100644
--- a/src/render/shadergraph/qshadernode.cpp
+++ b/src/render/shadergraph/qshadernode.cpp
@@ -153,7 +153,8 @@ QList<QShaderFormat> QShaderNode::availableFormats() const
QShaderNode::Rule QShaderNode::rule(const QShaderFormat &format) const
{
const QPair<QShaderFormat, Rule> *selected = nullptr;
- for (const auto &entry : qAsConst(m_rules)) {
+ for (auto it = m_rules.crbegin(); it != m_rules.crend(); ++it) {
+ const auto &entry = *it;
if (format.supports(entry.first)) {
if (!selected || entry.first.version() > selected->first.version())
selected = &entry;
diff --git a/tests/auto/render/shadergraph/qshadernodes/tst_qshadernodes.cpp b/tests/auto/render/shadergraph/qshadernodes/tst_qshadernodes.cpp
index c0023049f..6409b7136 100644
--- a/tests/auto/render/shadergraph/qshadernodes/tst_qshadernodes.cpp
+++ b/tests/auto/render/shadergraph/qshadernodes/tst_qshadernodes.cpp
@@ -540,8 +540,8 @@ void tst_QShaderNodes::shouldHandleNodeRulesSupportAndOrder()
QCOMPARE(node.availableFormats().at(2), openGL3);
QCOMPARE(node.rule(openGLES2), es2Rule);
QCOMPARE(node.rule(openGL3), gl3bisRule);
- QCOMPARE(node.rule(openGL32), gl3bisRule);
- QCOMPARE(node.rule(openGL4), gl3bisRule);
+ QCOMPARE(node.rule(openGL32), gl32Rule);
+ QCOMPARE(node.rule(openGL4), gl32Rule);
}
QTEST_MAIN(tst_QShaderNodes)