forked from qt-creator/qt-creator
EffectComposer: Relax code change requirements for "in use" update
In use update is now forced after property edit or add is finished. Also, a change to either fragment or vertex shader triggers checking in use state in both shaders to get the complete picture. Fixes: QDS-14240 Fixes: QDS-14239 Change-Id: Id2853440080a935a99b7945bcda20c7ade499aab Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Ali Kianian <ali.kianian@qt.io>
This commit is contained in:
@@ -240,7 +240,7 @@ void CompositionNode::setFragmentCode(const QString &fragmentCode)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_fragmentCode = fragmentCode;
|
m_fragmentCode = fragmentCode;
|
||||||
m_fragInUseCheckNeeded = true;
|
m_InUseCheckNeeded = true;
|
||||||
emit fragmentCodeChanged();
|
emit fragmentCodeChanged();
|
||||||
|
|
||||||
requestRebakeIfLiveUpdateMode();
|
requestRebakeIfLiveUpdateMode();
|
||||||
@@ -252,7 +252,7 @@ void CompositionNode::setVertexCode(const QString &vertexCode)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
m_vertexCode = vertexCode;
|
m_vertexCode = vertexCode;
|
||||||
m_vertInUseCheckNeeded = true;
|
m_InUseCheckNeeded = true;
|
||||||
emit vertexCodeChanged();
|
emit vertexCodeChanged();
|
||||||
|
|
||||||
requestRebakeIfLiveUpdateMode();
|
requestRebakeIfLiveUpdateMode();
|
||||||
@@ -271,6 +271,7 @@ void CompositionNode::addUniform(const QVariantMap &data)
|
|||||||
const auto uniform = new Uniform({}, QJsonObject::fromVariantMap(data), {});
|
const auto uniform = new Uniform({}, QJsonObject::fromVariantMap(data), {});
|
||||||
g_propertyData.insert(uniform->name(), uniform->value());
|
g_propertyData.insert(uniform->name(), uniform->value());
|
||||||
m_uniformsModel.addUniform(uniform);
|
m_uniformsModel.addUniform(uniform);
|
||||||
|
updateAreUniformsInUse(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompositionNode::updateUniform(int index, const QVariantMap &data)
|
void CompositionNode::updateUniform(int index, const QVariantMap &data)
|
||||||
@@ -281,11 +282,12 @@ void CompositionNode::updateUniform(int index, const QVariantMap &data)
|
|||||||
|
|
||||||
g_propertyData.insert(uniform->name(), uniform->value());
|
g_propertyData.insert(uniform->name(), uniform->value());
|
||||||
m_uniformsModel.updateUniform(index, uniform);
|
m_uniformsModel.updateUniform(index, uniform);
|
||||||
|
updateAreUniformsInUse(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompositionNode::updateAreUniformsInUse()
|
void CompositionNode::updateAreUniformsInUse(bool force)
|
||||||
{
|
{
|
||||||
if (m_fragInUseCheckNeeded || m_vertInUseCheckNeeded) {
|
if (force || m_InUseCheckNeeded) {
|
||||||
const QString matchTemplate("\\b%1\\b");
|
const QString matchTemplate("\\b%1\\b");
|
||||||
const QList<Uniform *> uniList = uniforms();
|
const QList<Uniform *> uniList = uniforms();
|
||||||
for (int i = 0; i < uniList.size(); ++i) {
|
for (int i = 0; i < uniList.size(); ++i) {
|
||||||
@@ -293,15 +295,13 @@ void CompositionNode::updateAreUniformsInUse()
|
|||||||
QString pattern = matchTemplate.arg(QRegularExpression::escape(u->name()));
|
QString pattern = matchTemplate.arg(QRegularExpression::escape(u->name()));
|
||||||
QRegularExpression regex(pattern);
|
QRegularExpression regex(pattern);
|
||||||
bool found = false;
|
bool found = false;
|
||||||
if (m_fragInUseCheckNeeded)
|
found = regex.match(m_fragmentCode).hasMatch();
|
||||||
found = regex.match(m_fragmentCode).hasMatch();
|
if (!found)
|
||||||
if (m_vertInUseCheckNeeded && !found)
|
|
||||||
found = regex.match(m_vertexCode).hasMatch();
|
found = regex.match(m_vertexCode).hasMatch();
|
||||||
m_uniformsModel.setData(m_uniformsModel.index(i), found,
|
m_uniformsModel.setData(m_uniformsModel.index(i), found,
|
||||||
EffectComposerUniformsModel::IsInUse);
|
EffectComposerUniformsModel::IsInUse);
|
||||||
}
|
}
|
||||||
m_vertInUseCheckNeeded = false;
|
m_InUseCheckNeeded = false;
|
||||||
m_fragInUseCheckNeeded = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -77,7 +77,7 @@ public:
|
|||||||
void openCodeEditor();
|
void openCodeEditor();
|
||||||
void addUniform(const QVariantMap &data);
|
void addUniform(const QVariantMap &data);
|
||||||
void updateUniform(int index, const QVariantMap &data);
|
void updateUniform(int index, const QVariantMap &data);
|
||||||
void updateAreUniformsInUse();
|
void updateAreUniformsInUse(bool force = false);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void uniformsModelChanged();
|
void uniformsModelChanged();
|
||||||
@@ -104,8 +104,7 @@ private:
|
|||||||
bool m_isCustom = false;
|
bool m_isCustom = false;
|
||||||
int m_refCount = 0;
|
int m_refCount = 0;
|
||||||
int m_extraMargin = 0;
|
int m_extraMargin = 0;
|
||||||
bool m_vertInUseCheckNeeded = false;
|
bool m_InUseCheckNeeded = false;
|
||||||
bool m_fragInUseCheckNeeded = false;
|
|
||||||
|
|
||||||
EffectComposerUniformsModel m_uniformsModel;
|
EffectComposerUniformsModel m_uniformsModel;
|
||||||
std::unique_ptr<ShaderEditorData> m_shaderEditorData;
|
std::unique_ptr<ShaderEditorData> m_shaderEditorData;
|
||||||
|
Reference in New Issue
Block a user