diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index b87329d5b6..eab28f500a 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -71,8 +71,8 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf } EntityTreeRenderer::~EntityTreeRenderer() { - // NOTE: we don't need to delete _entitiesScriptEngine because it is registered with the application and has a - // signal tied to call it's deleteLater on doneRunning + // NOTE: We don't need to delete _entitiesScriptEngine because + // it is registered with ScriptEngines, which will call deleteLater for us. } void EntityTreeRenderer::clear() { diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 663ad51dbf..ef0ff02eec 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -154,7 +154,11 @@ ScriptEngine::~ScriptEngine() { void ScriptEngine::disconnectNonEssentialSignals() { disconnect(); - connect(this, &ScriptEngine::doneRunning, thread(), &QThread::quit); + QThread* receiver; + // Ensure the thread should be running, and does exist + if (_isRunning && _isThreaded && (receiver = thread())) { + connect(this, &ScriptEngine::doneRunning, receiver, &QThread::quit); + } } void ScriptEngine::runInThread() {