History

Fix ScriptEngine not being destroyed on its own thread

Ryan Huffman committed 7 years ago

Commit cf3a9b11 parent 1bfa0391 file · +3 −3Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+3−3
@@ -163,7 +163,7 @@ ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context, · 162 unmodified lines
163163 const QString& scriptContents,
164164 const QString& fileNameString) {
165165 ScriptEngine* engine = new ScriptEngine(context, scriptContents, fileNameString);
166− ScriptEnginePointer engineSP = ScriptEnginePointer(engine);
166+ ScriptEnginePointer engineSP = ScriptEnginePointer(engine, &QObject::deleteLater);
167167 auto scriptEngines = DependencyManager::get<ScriptEngines>();
168168 scriptEngines->addScriptEngine(qSharedPointerCast<ScriptEngine>(engineSP));
169169 engine->setScriptEngines(scriptEngines);
@@ -267,7 +267,7 @@ void ScriptEngine::disconnectNonEssentialSignals() { · 97 unmodified lines
267267 QThread* workerThread;
268268 // Ensure the thread should be running, and does exist
269269 if (_isRunning && _isThreaded && (workerThread = thread())) {
270− connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit);
270+ connect(this, &QObject::destroyed, workerThread, &QThread::quit);
271271 connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater);
272272 }
273273 }
@@ -381,7 +381,7 @@ void ScriptEngine::runInThread() { · 107 unmodified lines
381381 // the script engine, make sure to add code to "reconnect" them to the
382382 // disconnectNonEssentialSignals() method
383383 connect(workerThread, &QThread::started, this, &ScriptEngine::run);
384− connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit);
384+ connect(this, &QObject::destroyed, workerThread, &QThread::quit);
385385 connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater);
386386
387387 workerThread->start();