some more attempted cleanup

This commit is contained in:
SamGondelman 2018-07-05 15:44:05 -07:00
parent 7954865141
commit d2699e8e5b
4 changed files with 7 additions and 5 deletions

View file

@ -2474,6 +2474,8 @@ void Application::cleanupBeforeQuit() {
DependencyManager::destroy<EntityTreeRenderer>(); DependencyManager::destroy<EntityTreeRenderer>();
} }
// FIXME: Something is still holding on to the ScriptEnginePointers contained in ScriptEngines, and they hold backpointers to ScriptEngines,
// so this doesn't shut down properly
DependencyManager::get<ScriptEngines>()->shutdownScripting(); // stop all currently running global scripts DependencyManager::get<ScriptEngines>()->shutdownScripting(); // stop all currently running global scripts
DependencyManager::destroy<ScriptEngines>(); DependencyManager::destroy<ScriptEngines>();

View file

@ -312,7 +312,7 @@ JSConsole::~JSConsole() {
delete _ui; delete _ui;
} }
void JSConsole::setScriptEngine(const ScriptEnginePointer& scriptEngine) { void JSConsole::setScriptEngine(const ScriptEnginePointer& scriptEngine) {
if (_scriptEngine == scriptEngine && scriptEngine != nullptr) { if (_scriptEngine == scriptEngine && scriptEngine != nullptr) {
return; return;
} }

View file

@ -133,7 +133,7 @@ QUrl expandScriptUrl(const QUrl& rawScriptURL) {
QObject* scriptsModel(); QObject* scriptsModel();
bool NativeScriptInitializers::registerNativeScriptInitializer(NativeScriptInitializer initializer) { bool NativeScriptInitializers::registerNativeScriptInitializer(NativeScriptInitializer initializer) {
return registerScriptInitializer([=](ScriptEnginePointer engine) { return registerScriptInitializer([initializer](ScriptEnginePointer engine) {
initializer(qobject_cast<QScriptEngine*>(engine.data())); initializer(qobject_cast<QScriptEngine*>(engine.data()));
}); });
} }
@ -563,10 +563,10 @@ int ScriptEngines::runScriptInitializers(ScriptEnginePointer scriptEngine) {
void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) { void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) {
connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection); connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection);
connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) { connect(scriptEngine.data(), &ScriptEngine::loadScript, [this](const QString& scriptName, bool userLoaded) {
loadScript(scriptName, userLoaded); loadScript(scriptName, userLoaded);
}); });
connect(scriptEngine.data(), &ScriptEngine::reloadScript, [&](const QString& scriptName, bool userLoaded) { connect(scriptEngine.data(), &ScriptEngine::reloadScript, [this](const QString& scriptName, bool userLoaded) {
loadScript(scriptName, userLoaded, false, false, true); loadScript(scriptName, userLoaded, false, false, true);
}); });

View file

@ -144,7 +144,7 @@ void DependencyManager::destroy() {
shared.clear(); shared.clear();
// Check that the dependency was actually destroyed. If it wasn't, it was improperly captured somewhere // Check that the dependency was actually destroyed. If it wasn't, it was improperly captured somewhere
if (weak.lock()) { if (weak.lock()) {
qWarning() << "DependencyManager::destroy(): Dependency was not properly destroyed!"; qWarning() << "DependencyManager::destroy():" << typeid(T).name() << "was not properly destroyed!";
} }
} }