diff options
Diffstat (limited to 'src/server/events/DisconnectAll.cpp')
-rw-r--r-- | src/server/events/DisconnectAll.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/events/DisconnectAll.cpp b/src/server/events/DisconnectAll.cpp index 0442ddd9..35254ba0 100644 --- a/src/server/events/DisconnectAll.cpp +++ b/src/server/events/DisconnectAll.cpp @@ -122,6 +122,18 @@ DisconnectAll::pre_process(PreProcessContext& ctx) dynamic_cast<InputPort*>(a->head()))); } + // Create disconnect events to erase adjacent arcs in parent's parent + if (_port && _parent->parent()) { + GraphImpl* parent_parent = dynamic_cast<GraphImpl*>(_parent->parent()); + for (const auto& a : adjacent_arcs(parent_parent)) { + _impls.push_back( + new Disconnect::Impl(_engine, + parent_parent, + dynamic_cast<PortImpl*>(a->tail()), + dynamic_cast<InputPort*>(a->head()))); + } + } + if (!_deleting && ctx.must_compile(*_parent)) { if (!(_compiled_graph = compile(*_engine.maid(), *_parent))) { return Event::pre_process_done(Status::COMPILATION_FAILED); |