From cf3a9b1d485c7463c64d610cd7c8068abfc77031 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 3 Apr 2019 20:10:11 -0700 Subject: [PATCH] Fix ScriptEngine not being destroyed on its own thread --- libraries/script-engine/src/ScriptEngine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index a4fd2540d4..873e04dd0a 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -163,7 +163,7 @@ ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context, const QString& scriptContents, const QString& fileNameString) { ScriptEngine* engine = new ScriptEngine(context, scriptContents, fileNameString); - ScriptEnginePointer engineSP = ScriptEnginePointer(engine); + ScriptEnginePointer engineSP = ScriptEnginePointer(engine, &QObject::deleteLater); auto scriptEngines = DependencyManager::get(); scriptEngines->addScriptEngine(qSharedPointerCast(engineSP)); engine->setScriptEngines(scriptEngines); @@ -267,7 +267,7 @@ void ScriptEngine::disconnectNonEssentialSignals() { QThread* workerThread; // Ensure the thread should be running, and does exist if (_isRunning && _isThreaded && (workerThread = thread())) { - connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit); + connect(this, &QObject::destroyed, workerThread, &QThread::quit); connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater); } } @@ -381,7 +381,7 @@ void ScriptEngine::runInThread() { // the script engine, make sure to add code to "reconnect" them to the // disconnectNonEssentialSignals() method connect(workerThread, &QThread::started, this, &ScriptEngine::run); - connect(this, &ScriptEngine::doneRunning, workerThread, &QThread::quit); + connect(this, &QObject::destroyed, workerThread, &QThread::quit); connect(workerThread, &QThread::finished, workerThread, &QObject::deleteLater); workerThread->start();