diff options
author | David Robillard <d@drobilla.net> | 2021-04-01 16:46:05 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-04-01 16:46:05 -0400 |
commit | fef4ce2b39b1a00609122fe37e2378be2fa9319f (patch) | |
tree | be56791e34ed193e39ec574142a02c50f2add45c /src/server/events/DisconnectAll.cpp | |
parent | 7fcd07e25150bf5dbcded3334aff5c845926391e (diff) | |
download | ingen-fef4ce2b39b1a00609122fe37e2378be2fa9319f.tar.gz ingen-fef4ce2b39b1a00609122fe37e2378be2fa9319f.tar.bz2 ingen-fef4ce2b39b1a00609122fe37e2378be2fa9319f.zip |
Fix deleting connected ports in subgraphs
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); |