From a20a62649d5044a7a3efff1533176fb9940e5b03 Mon Sep 17 00:00:00 2001 From: Reinder Feenstra Date: Sat, 12 Feb 2022 23:13:20 +0100 Subject: [PATCH] dcc++: fix: added missing registration of input/output controller --- .../interface/dccplusplusinterface.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/server/src/hardware/interface/dccplusplusinterface.cpp b/server/src/hardware/interface/dccplusplusinterface.cpp index b9b6df74..8e19091c 100644 --- a/server/src/hardware/interface/dccplusplusinterface.cpp +++ b/server/src/hardware/interface/dccplusplusinterface.cpp @@ -239,7 +239,10 @@ bool DCCPlusPlusInterface::setOnline(bool& value, bool simulation) void DCCPlusPlusInterface::addToWorld() { Interface::addToWorld(); + m_world.decoderControllers->add(std::dynamic_pointer_cast(shared_from_this())); + m_world.inputControllers->add(std::dynamic_pointer_cast(shared_from_this())); + m_world.outputControllers->add(std::dynamic_pointer_cast(shared_from_this())); } void DCCPlusPlusInterface::loaded() @@ -257,7 +260,22 @@ void DCCPlusPlusInterface::destroying() decoder->interface = nullptr; } + for(const auto& input : *inputs) + { + assert(input->interface.value() == std::dynamic_pointer_cast(shared_from_this())); + input->interface = nullptr; + } + + for(const auto& output : *outputs) + { + assert(output->interface.value() == std::dynamic_pointer_cast(shared_from_this())); + output->interface = nullptr; + } + m_world.decoderControllers->remove(std::dynamic_pointer_cast(shared_from_this())); + m_world.inputControllers->remove(std::dynamic_pointer_cast(shared_from_this())); + m_world.outputControllers->remove(std::dynamic_pointer_cast(shared_from_this())); + Interface::destroying(); }