Make procedural userData thread-safe

This commit is contained in:
Zach Pomerantz 2016-03-10 10:12:55 -08:00
parent 1640314076
commit 9b89e46e65
2 changed files with 3 additions and 0 deletions

View file

@ -75,6 +75,7 @@ void Procedural::parse(const QString& userDataJson) {
auto proceduralData = getProceduralData(userDataJson);
// Instead of parsing, prep for a parse on the rendering thread
// This will be called by Procedural::ready
std::lock_guard<std::mutex> lock(_proceduralDataMutex);
_proceduralData = proceduralData.toObject();
_proceduralDataDirty = true;
}
@ -165,6 +166,7 @@ void Procedural::parse(QJsonObject proceduralData) {
bool Procedural::ready() {
// Load any changes to the procedural
if (_proceduralDataDirty) {
std::lock_guard<std::mutex> lock(_proceduralDataMutex);
parse(_proceduralData);
_proceduralDataDirty = false;
}

View file

@ -65,6 +65,7 @@ protected:
// Rendering object descriptions, from userData
QJsonObject _proceduralData;
std::mutex _proceduralDataMutex;
QString _shaderSource;
QString _shaderPath;
QUrl _shaderUrl;