Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 3 files). Show all
Unified · Split
| @@ -94,6 +94,7 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam · 93 unmodified lines | ||
| 94 | 94 | _isUserLoaded(false), |
| 95 | 95 | _arrayBufferClass(new ArrayBufferClass(this)) |
| 96 | 96 | { |
| 97 | + qDebug() << "[" << QThread::currentThread() << "]" << "ScriptEngine::ScriptEngine() " << getFilename() << "[" << this << "]"; | |
| 97 | 98 | _allKnownScriptEngines.insert(this); |
| 98 | 99 | } |
| 99 | 100 | |
| @@ -104,28 +105,31 @@ ScriptEngine::~ScriptEngine() { · 4 unmodified lines | ||
| 104 | 105 | |
| 105 | 106 | QSet<ScriptEngine*> ScriptEngine::_allKnownScriptEngines; |
| 106 | 107 | |
| 107 | −void ScriptEngine::gracefullyStopAllScripts() { | |
| 108 | +void ScriptEngine::gracefullyStopAllScripts(QObject* application) { | |
| 108 | 109 | qDebug() << "[" << QThread::currentThread() << "]" << "ScriptEngine::gracefullyStopAllScripts() ----------- START ------------------"; |
| 109 | 110 | |
| 110 | − QSet<ScriptEngine*>::const_iterator i = _allKnownScriptEngines.constBegin(); | |
| 111 | − while (i != _allKnownScriptEngines.constEnd()) { | |
| 112 | − ScriptEngine* scriptEngine = *i; | |
| 113 | − qDebug() << scriptEngine; | |
| 111 | + | |
| 112 | + QSetIterator<ScriptEngine*> i(_allKnownScriptEngines); | |
| 113 | + while (i.hasNext()) { | |
| 114 | + ScriptEngine* scriptEngine = i.next(); | |
| 115 | + qDebug() << (void*)scriptEngine; | |
| 114 | 116 | |
| 115 | 117 | if (scriptEngine->isRunning()) { |
| 116 | 118 | qDebug() << "scriptEngine still alive:" << scriptEngine->getFilename() << "[" << scriptEngine << "]"; |
| 117 | 119 | |
| 118 | 120 | QEventLoop loop; |
| 119 | 121 | QObject::connect(scriptEngine, &ScriptEngine::doneRunning, &loop, &QEventLoop::quit); |
| 122 | + | |
| 123 | + scriptEngine->disconnect(application); | |
| 120 | 124 | |
| 121 | 125 | scriptEngine->stop(); |
| 122 | 126 | |
| 123 | 127 | qDebug() << "waiting on script to stop... "; |
| 124 | 128 | loop.exec(); |
| 125 | 129 | qDebug() << "done waiting... "; |
| 130 | + } else { | |
| 131 | + qDebug() << "WARNING! scriptEngine [" << (void*)scriptEngine << "] still in _allKnownScriptEngines but not running??? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"; | |
| 126 | 132 | } |
| 127 | − | |
| 128 | − ++i; | |
| 129 | 133 | } |
| 130 | 134 | qDebug() << "[" << QThread::currentThread() << "]" << "ScriptEngine::gracefullyStopAllScripts() ----------- DONE ------------------"; |
| 131 | 135 | } |