mirror of
https://github.com/overte-org/overte.git
synced 2025-04-08 07:12:40 +02:00
Fix ACs startup crash
This commit is contained in:
parent
e4377a6c95
commit
ba53e7add8
6 changed files with 19 additions and 5 deletions
|
@ -64,6 +64,7 @@ Agent::Agent(ReceivedMessage& message) :
|
|||
DependencyManager::get<EntityScriptingInterface>()->setPacketSender(&_entityEditSender);
|
||||
|
||||
DependencyManager::set<ResourceManager>();
|
||||
DependencyManager::set<PluginManager>();
|
||||
|
||||
DependencyManager::registerInheritance<SpatialParentFinder, AssignmentParentFinder>();
|
||||
|
||||
|
@ -833,6 +834,8 @@ void Agent::aboutToFinish() {
|
|||
|
||||
DependencyManager::get<ResourceManager>()->cleanup();
|
||||
|
||||
DependencyManager::destroy<PluginManager>();
|
||||
|
||||
// cleanup the AudioInjectorManager (and any still running injectors)
|
||||
DependencyManager::destroy<AudioInjectorManager>();
|
||||
|
||||
|
|
|
@ -65,7 +65,8 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
|||
|
||||
// hash the available codecs (on the mixer)
|
||||
_availableCodecs.clear(); // Make sure struct is clean
|
||||
auto codecPlugins = PluginManager::getInstance()->getCodecPlugins();
|
||||
auto pluginManager = DependencyManager::set<PluginManager>();
|
||||
auto codecPlugins = pluginManager->getCodecPlugins();
|
||||
std::for_each(codecPlugins.cbegin(), codecPlugins.cend(),
|
||||
[&](const CodecPluginPointer& codec) {
|
||||
_availableCodecs[codec->getName()] = codec;
|
||||
|
@ -106,6 +107,10 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
|||
connect(nodeList.data(), &NodeList::nodeKilled, this, &AudioMixer::handleNodeKilled);
|
||||
}
|
||||
|
||||
void AudioMixer::aboutToFinish() {
|
||||
DependencyManager::destroy<PluginManager>();
|
||||
}
|
||||
|
||||
void AudioMixer::queueAudioPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer node) {
|
||||
if (message->getType() == PacketType::SilentAudioFrame) {
|
||||
_numSilentPackets++;
|
||||
|
|
|
@ -58,6 +58,9 @@ public:
|
|||
to.getPublicSocket() != from.getPublicSocket() &&
|
||||
to.getLocalSocket() != from.getLocalSocket();
|
||||
}
|
||||
|
||||
virtual void aboutToFinish() override;
|
||||
|
||||
public slots:
|
||||
void run() override;
|
||||
void sendStatsPacket() override;
|
||||
|
|
|
@ -58,6 +58,7 @@ EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssig
|
|||
DependencyManager::get<EntityScriptingInterface>()->setPacketSender(&_entityEditSender);
|
||||
|
||||
DependencyManager::set<ResourceManager>();
|
||||
DependencyManager::set<PluginManager>();
|
||||
|
||||
DependencyManager::registerInheritance<SpatialParentFinder, AssignmentParentFinder>();
|
||||
|
||||
|
@ -572,6 +573,8 @@ void EntityScriptServer::aboutToFinish() {
|
|||
|
||||
DependencyManager::get<ResourceManager>()->cleanup();
|
||||
|
||||
DependencyManager::destroy<PluginManager>();
|
||||
|
||||
// cleanup the AudioInjectorManager (and any still running injectors)
|
||||
DependencyManager::destroy<AudioInjectorManager>();
|
||||
DependencyManager::destroy<ScriptEngines>();
|
||||
|
|
|
@ -135,9 +135,6 @@ const LoaderList& getLoadedPlugins() {
|
|||
return loadedPlugins;
|
||||
}
|
||||
|
||||
PluginManager::PluginManager() {
|
||||
}
|
||||
|
||||
const CodecPluginList& PluginManager::getCodecPlugins() {
|
||||
static CodecPluginList codecPlugins;
|
||||
static std::once_flag once;
|
||||
|
|
|
@ -18,9 +18,10 @@ class PluginManager;
|
|||
using PluginManagerPointer = QSharedPointer<PluginManager>;
|
||||
|
||||
class PluginManager : public QObject, public Dependency {
|
||||
SINGLETON_DEPENDENCY
|
||||
|
||||
public:
|
||||
static PluginManagerPointer getInstance();
|
||||
PluginManager();
|
||||
|
||||
const DisplayPluginList& getDisplayPlugins();
|
||||
const InputPluginList& getInputPlugins();
|
||||
|
@ -45,6 +46,8 @@ public:
|
|||
void setInputPluginSettingsPersister(const InputPluginSettingsPersister& persister);
|
||||
|
||||
private:
|
||||
PluginManager() = default;
|
||||
|
||||
DisplayPluginProvider _displayPluginProvider { []()->DisplayPluginList { return {}; } };
|
||||
InputPluginProvider _inputPluginProvider { []()->InputPluginList { return {}; } };
|
||||
CodecPluginProvider _codecPluginProvider { []()->CodecPluginList { return {}; } };
|
||||
|
|
Loading…
Reference in a new issue