History

fix a crash in ESS from missing dependency

Stephen Birarda committed 8 years ago

Commit 3b5ba711 parent 04d72ea1 file · +17 −9Browse files

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

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+17−9
@@ -24,6 +24,7 @@ · 23 unmodified lines
2424 #include <plugins/CodecPlugin.h>
2525 #include <plugins/PluginManager.h>
2626 #include <ResourceManager.h>
27+#include <ResourceScriptingInterface.h>
2728 #include <ScriptCache.h>
2829 #include <ScriptEngines.h>
2930 #include <SoundCacheScriptingInterface.h>
@@ -55,7 +56,8 @@ int EntityScriptServer::_entitiesScriptEngineCount = 0; · 25 unmodified lines
5556 EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssignment(message) {
5657 qInstallMessageHandler(messageHandler);
5758
58− DependencyManager::get<EntityScriptingInterface>()->setPacketSender(&_entityEditSender);
59+ DependencyManager::set<EntityScriptingInterface>(false)->setPacketSender(&_entityEditSender);
60+ DependencyManager::set<ResourceScriptingInterface>();
5961
6062 DependencyManager::set<ResourceManager>();
6163 DependencyManager::set<PluginManager>();
@@ -559,14 +561,16 @@ void EntityScriptServer::handleOctreePacket(QSharedPointer<ReceivedMessage> mess · 497 unmodified lines
559561 void EntityScriptServer::aboutToFinish() {
560562 shutdownScriptEngine();
561563
562− auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
563− // our entity tree is going to go away so tell that to the EntityScriptingInterface
564− entityScriptingInterface->setEntityTree(nullptr);
565−
566− // Should always be true as they are singletons.
567− if (entityScriptingInterface->getPacketSender() == &_entityEditSender) {
568− // The packet sender is about to go away.
569− entityScriptingInterface->setPacketSender(nullptr);
564+ {
565+ auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
566+ // our entity tree is going to go away so tell that to the EntityScriptingInterface
567+ entityScriptingInterface->setEntityTree(nullptr);
568+
569+ // Should always be true as they are singletons.
570+ if (entityScriptingInterface->getPacketSender() == &_entityEditSender) {
571+ // The packet sender is about to go away.
572+ entityScriptingInterface->setPacketSender(nullptr);
573+ }
570574 }
571575
572576 DependencyManager::destroy<AssignmentParentFinder>();
@@ -575,8 +579,12 @@ void EntityScriptServer::aboutToFinish() { · 2 unmodified lines
575579
576580 DependencyManager::destroy<PluginManager>();
577581
582+ DependencyManager::destroy<ResourceScriptingInterface>();
583+ DependencyManager::destroy<EntityScriptingInterface>();
584+
578585 // cleanup the AudioInjectorManager (and any still running injectors)
579586 DependencyManager::destroy<AudioInjectorManager>();
587+
580588 DependencyManager::destroy<ScriptEngines>();
581589 DependencyManager::destroy<EntityScriptServerServices>();
582590