Fix concurrency issues for bools in ScriptEngine

Several member variables were unsafely being accessed from multiple threads. Making these variables std::atomic makes this safe.
This commit is contained in:
Ryan Huffman 2015-12-08 10:49:10 -08:00
parent d12fdb9726
commit 4dbfd3bfd9
2 changed files with 4 additions and 4 deletions

View file

@ -183,7 +183,7 @@ void ScriptEngine::runInThread() {
QSet<ScriptEngine*> ScriptEngine::_allKnownScriptEngines;
QMutex ScriptEngine::_allScriptsMutex;
bool ScriptEngine::_stoppingAllScripts = false;
std::atomic<bool> ScriptEngine::_stoppingAllScripts = false;
void ScriptEngine::stopAllScripts(QObject* application) {
_allScriptsMutex.lock();

View file

@ -166,8 +166,8 @@ signals:
protected:
QString _scriptContents;
QString _parentURL;
bool _isFinished { false };
bool _isRunning { false };
std::atomic<bool> _isFinished { false };
std::atomic<bool> _isRunning { false };
int _evaluatesPending { 0 };
bool _isInitialized { false };
QHash<QTimer*, QScriptValue> _timerFunctionMap;
@ -206,7 +206,7 @@ protected:
static QSet<ScriptEngine*> _allKnownScriptEngines;
static QMutex _allScriptsMutex;
static bool _stoppingAllScripts;
static std::atomic<bool> _stoppingAllScripts;
};
#endif // hifi_ScriptEngine_h