diff options
author | David Robillard <d@drobilla.net> | 2007-10-11 17:24:49 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-10-11 17:24:49 +0000 |
commit | 5791d19a0f56c65ef7b89da80f4bcc3e1cee0c93 (patch) | |
tree | de0a795658df184d29e4ed795c6b6b15c6e0454d /src/libs/engine/events | |
parent | 058174f81f325521957cc6927667dfcf0d7346b4 (diff) | |
download | ingen-5791d19a0f56c65ef7b89da80f4bcc3e1cee0c93.tar.gz ingen-5791d19a0f56c65ef7b89da80f4bcc3e1cee0c93.tar.bz2 ingen-5791d19a0f56c65ef7b89da80f4bcc3e1cee0c93.zip |
Fix awful plugin loading situation.
Don't double-lookup plugins on discovery/load.
O(log(n)) plugin searching instead of 2*O(n).
Don't keep discovered LADSPA plugins loaded (until a node is instantiated).
git-svn-id: http://svn.drobilla.net/lad/ingen@876 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/events')
-rw-r--r-- | src/libs/engine/events/CreateNodeEvent.cpp | 6 | ||||
-rw-r--r-- | src/libs/engine/events/RequestPluginsEvent.cpp | 2 | ||||
-rw-r--r-- | src/libs/engine/events/RequestPluginsEvent.hpp | 11 |
3 files changed, 6 insertions, 13 deletions
diff --git a/src/libs/engine/events/CreateNodeEvent.cpp b/src/libs/engine/events/CreateNodeEvent.cpp index a0a8d08f..dea1024b 100644 --- a/src/libs/engine/events/CreateNodeEvent.cpp +++ b/src/libs/engine/events/CreateNodeEvent.cpp @@ -78,9 +78,9 @@ CreateNodeEvent::pre_process() _patch = _engine.object_store()->find_patch(_path.parent()); - const PluginImpl* plugin = (_plugin_uri != "") - ? _engine.node_factory()->plugin(_plugin_uri) - : _engine.node_factory()->plugin(_plugin_type, _plugin_lib, _plugin_label); + PluginImpl* const plugin = (_plugin_uri != "") + ? _engine.node_factory()->plugin(_plugin_uri) + : _engine.node_factory()->plugin(_plugin_type, _plugin_lib, _plugin_label); if (_patch && plugin) { diff --git a/src/libs/engine/events/RequestPluginsEvent.cpp b/src/libs/engine/events/RequestPluginsEvent.cpp index 005048ea..8d7fc1ba 100644 --- a/src/libs/engine/events/RequestPluginsEvent.cpp +++ b/src/libs/engine/events/RequestPluginsEvent.cpp @@ -34,7 +34,7 @@ void RequestPluginsEvent::pre_process() { // Take a copy to send in the post processing thread (to avoid problems - // because std::list isn't thread safe) + // because std::map isn't thread safe) _plugins = _engine.node_factory()->plugins(); QueuedEvent::pre_process(); diff --git a/src/libs/engine/events/RequestPluginsEvent.hpp b/src/libs/engine/events/RequestPluginsEvent.hpp index ae6a77a9..f6b41d7a 100644 --- a/src/libs/engine/events/RequestPluginsEvent.hpp +++ b/src/libs/engine/events/RequestPluginsEvent.hpp @@ -18,19 +18,12 @@ #ifndef REQUESTPLUGINSEVENT_H #define REQUESTPLUGINSEVENT_H -#include <string> -#include <list> #include "QueuedEvent.hpp" -using std::string; +#include "NodeFactory.hpp" namespace Ingen { -class PluginImpl; class Responder; -namespace Shared { - class ClientInterface; -} using Shared::ClientInterface; - /** A request from a client to send notification of all objects (ie refresh). * @@ -45,7 +38,7 @@ public: void post_process(); private: - std::list<PluginImpl*> _plugins; + NodeFactory::Plugins _plugins; }; |