mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 16:36:54 +02:00
Fix hang on new script on shutdown
This commit is contained in:
parent
22081a8606
commit
a0d80b9508
1 changed files with 5 additions and 8 deletions
|
@ -118,9 +118,9 @@ void ScriptEngines::registerScriptInitializer(ScriptInitializer initializer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEngines::addScriptEngine(ScriptEngine* engine) {
|
void ScriptEngines::addScriptEngine(ScriptEngine* engine) {
|
||||||
_allScriptsMutex.lock();
|
if (!_stoppingAllScripts) {
|
||||||
_allKnownScriptEngines.insert(engine);
|
_allKnownScriptEngines.insert(engine);
|
||||||
_allScriptsMutex.unlock();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEngines::removeScriptEngine(ScriptEngine* engine) {
|
void ScriptEngines::removeScriptEngine(ScriptEngine* engine) {
|
||||||
|
@ -128,16 +128,15 @@ void ScriptEngines::removeScriptEngine(ScriptEngine* engine) {
|
||||||
// from the list of running scripts. We don't do this if we're in the process of stopping all scripts
|
// from the list of running scripts. We don't do this if we're in the process of stopping all scripts
|
||||||
// because that method removes scripts from its list as it iterates them
|
// because that method removes scripts from its list as it iterates them
|
||||||
if (!_stoppingAllScripts) {
|
if (!_stoppingAllScripts) {
|
||||||
_allScriptsMutex.lock();
|
QMutexLocker locker(&_allScriptsMutex);
|
||||||
_allKnownScriptEngines.remove(engine);
|
_allKnownScriptEngines.remove(engine);
|
||||||
_allScriptsMutex.unlock();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEngines::shutdownScripting() {
|
void ScriptEngines::shutdownScripting() {
|
||||||
_allScriptsMutex.lock();
|
|
||||||
_stoppingAllScripts = true;
|
_stoppingAllScripts = true;
|
||||||
ScriptEngine::_stoppingAllScripts = true;
|
ScriptEngine::_stoppingAllScripts = true;
|
||||||
|
QMutexLocker locker(&_allScriptsMutex);
|
||||||
qCDebug(scriptengine) << "Stopping all scripts.... currently known scripts:" << _allKnownScriptEngines.size();
|
qCDebug(scriptengine) << "Stopping all scripts.... currently known scripts:" << _allKnownScriptEngines.size();
|
||||||
|
|
||||||
QMutableSetIterator<ScriptEngine*> i(_allKnownScriptEngines);
|
QMutableSetIterator<ScriptEngine*> i(_allKnownScriptEngines);
|
||||||
|
@ -173,8 +172,6 @@ void ScriptEngines::shutdownScripting() {
|
||||||
i.remove();
|
i.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_stoppingAllScripts = false;
|
|
||||||
_allScriptsMutex.unlock();
|
|
||||||
qCDebug(scriptengine) << "DONE Stopping all scripts....";
|
qCDebug(scriptengine) << "DONE Stopping all scripts....";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue