diff options
author | David Robillard <d@drobilla.net> | 2017-03-26 14:58:59 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2017-03-26 17:02:09 +0200 |
commit | 6268bb2accfdc0dcad6cb8b54ba56ec64609d474 (patch) | |
tree | bac1e45ab9e31c8cb1e3949b35e13ba03effd8f4 /src/server/events/DisconnectAll.cpp | |
parent | 470936f0bf3535c688df5551025265916a5dee06 (diff) | |
download | ingen-6268bb2accfdc0dcad6cb8b54ba56ec64609d474.tar.gz ingen-6268bb2accfdc0dcad6cb8b54ba56ec64609d474.tar.bz2 ingen-6268bb2accfdc0dcad6cb8b54ba56ec64609d474.zip |
Remove NodeImpl class
Diffstat (limited to 'src/server/events/DisconnectAll.cpp')
-rw-r--r-- | src/server/events/DisconnectAll.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/server/events/DisconnectAll.cpp b/src/server/events/DisconnectAll.cpp index 45fec243..4d5a0958 100644 --- a/src/server/events/DisconnectAll.cpp +++ b/src/server/events/DisconnectAll.cpp @@ -88,23 +88,22 @@ DisconnectAll::pre_process(PreProcessContext& ctx) _parent_path); } - NodeImpl* const object = dynamic_cast<NodeImpl*>( - _engine.store()->get(_path)); - if (!object) { + Node* const node = _engine.store()->get(_path); + if (!node) { return Event::pre_process_done(Status::NOT_FOUND, _path); } - if (object->parent_graph() != _parent - && object->parent()->parent_graph() != _parent) { - return Event::pre_process_done(Status::INVALID_PARENT, _parent_path); + BlockImpl* parent = nullptr; + if ((_block = dynamic_cast<BlockImpl*>(node))) { + parent = _block->parent(); + } else if ((_port = dynamic_cast<PortImpl*>(node))) { + parent = _port->parent(); + } else { + return Event::pre_process_done(Status::INTERNAL_ERROR, _path); } - // Only one of these will succeed - _block = dynamic_cast<BlockImpl*>(object); - _port = dynamic_cast<PortImpl*>(object); - - if (!_block && !_port) { - return Event::pre_process_done(Status::INTERNAL_ERROR, _path); + if (parent != _parent && parent->parent() != _parent) { + return Event::pre_process_done(Status::INVALID_PARENT, _parent_path); } } |