mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 06:44:06 +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) {
|
||||
_allScriptsMutex.lock();
|
||||
_allKnownScriptEngines.insert(engine);
|
||||
_allScriptsMutex.unlock();
|
||||
if (!_stoppingAllScripts) {
|
||||
_allKnownScriptEngines.insert(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
|
||||
// because that method removes scripts from its list as it iterates them
|
||||
if (!_stoppingAllScripts) {
|
||||
_allScriptsMutex.lock();
|
||||
QMutexLocker locker(&_allScriptsMutex);
|
||||
_allKnownScriptEngines.remove(engine);
|
||||
_allScriptsMutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptEngines::shutdownScripting() {
|
||||
_allScriptsMutex.lock();
|
||||
_stoppingAllScripts = true;
|
||||
ScriptEngine::_stoppingAllScripts = true;
|
||||
QMutexLocker locker(&_allScriptsMutex);
|
||||
qCDebug(scriptengine) << "Stopping all scripts.... currently known scripts:" << _allKnownScriptEngines.size();
|
||||
|
||||
QMutableSetIterator<ScriptEngine*> i(_allKnownScriptEngines);
|
||||
|
@ -173,8 +172,6 @@ void ScriptEngines::shutdownScripting() {
|
|||
i.remove();
|
||||
}
|
||||
}
|
||||
_stoppingAllScripts = false;
|
||||
_allScriptsMutex.unlock();
|
||||
qCDebug(scriptengine) << "DONE Stopping all scripts....";
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue