diff options
author | David Robillard <d@drobilla.net> | 2010-02-25 03:40:39 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-02-25 03:40:39 +0000 |
commit | e22984efe9b82ab006494aea93814a592cd44ece (patch) | |
tree | a9b1b317515b9fda4947d4fb9c2bc460e07b0c32 /src/engine/events/Connect.cpp | |
parent | 5d87212114e2df68a086eeb55829a70bed0940d3 (diff) | |
download | ingen-e22984efe9b82ab006494aea93814a592cd44ece.tar.gz ingen-e22984efe9b82ab006494aea93814a592cd44ece.tar.bz2 ingen-e22984efe9b82ab006494aea93814a592cd44ece.zip |
Store patch connections in a map using a lexicographic <Port*,Port*> key for
fast (logarathmic) connection searching.
Replaces all O(num_connections) searches with O(lg(num_connections))
searches.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2491 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/events/Connect.cpp')
-rw-r--r-- | src/engine/events/Connect.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/engine/events/Connect.cpp b/src/engine/events/Connect.cpp index fac11965..b4389438 100644 --- a/src/engine/events/Connect.cpp +++ b/src/engine/events/Connect.cpp @@ -52,7 +52,6 @@ Connect::Connect(Engine& engine, SharedPtr<Request> request, SampleCount timesta , _src_output_port(NULL) , _dst_input_port(NULL) , _compiled_patch(NULL) - , _patch_listnode(NULL) , _port_listnode(NULL) , _buffers(NULL) { @@ -149,8 +148,9 @@ Connect::pre_process() return; } - _connection = SharedPtr<ConnectionImpl>(new ConnectionImpl(*_engine.buffer_factory(), _src_port, _dst_port)); - _patch_listnode = new PatchImpl::Connections::Node(_connection); + _connection = SharedPtr<ConnectionImpl>( + new ConnectionImpl(*_engine.buffer_factory(), _src_port, _dst_port)); + _port_listnode = new InputPort::Connections::Node(_connection); // Need to be careful about patch port connections here and adding a node's @@ -160,7 +160,7 @@ Connect::pre_process() src_node->dependants()->push_back(new Raul::List<NodeImpl*>::Node(dst_node)); } - _patch->add_connection(_patch_listnode); + _patch->add_connection(_connection); _dst_input_port->increment_num_connections(); switch (_dst_input_port->num_connections()) { |