History

rework ScriptEngine lifetimes using 'smart' pointers

Seth Alves committed 9 years ago

Commit d89f2b71 parent 49ab8af18 files · +135 −146Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 18 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+7−5
@@ -415,8 +415,7 @@ void EntityScriptServer::selectAudioFormat(const QString& selectedCodecName) { · 414 unmodified lines
415 415
416void EntityScriptServer::resetEntitiesScriptEngine() {416void EntityScriptServer::resetEntitiesScriptEngine() {
417 auto engineName = QString("about:Entities %1").arg(++_entitiesScriptEngineCount);417 auto engineName = QString("about:Entities %1").arg(++_entitiesScriptEngineCount);
418 auto newEngine = QSharedPointer<ScriptEngine>(new ScriptEngine(ScriptEngine::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName),418 auto newEngine = scriptEngineFactory(ScriptEngine::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
419 &ScriptEngine::deleteLater);
420 419
421 auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);420 auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);
422 newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);421 newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
@@ -437,11 +436,14 @@ void EntityScriptServer::resetEntitiesScriptEngine() { · 14 unmodified lines
437 436
438 437
439 newEngine->runInThread();438 newEngine->runInThread();
440 DependencyManager::get<EntityScriptingInterface>()->setEntitiesScriptEngine(newEngine.data());439 auto newEngineSP = qSharedPointerCast<EntitiesScriptEngineProvider>(newEngine);
440 DependencyManager::get<EntityScriptingInterface>()->setEntitiesScriptEngine(newEngineSP);
441 441
442 disconnect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated, this, &EntityScriptServer::updateEntityPPS);442 disconnect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
443 this, &EntityScriptServer::updateEntityPPS);
443 _entitiesScriptEngine.swap(newEngine);444 _entitiesScriptEngine.swap(newEngine);
444 connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated, this, &EntityScriptServer::updateEntityPPS);445 connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
446 this, &EntityScriptServer::updateEntityPPS);
445}447}
446 448
447 449