summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/events
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-11 17:24:49 +0000
committerDavid Robillard <d@drobilla.net>2007-10-11 17:24:49 +0000
commit5791d19a0f56c65ef7b89da80f4bcc3e1cee0c93 (patch)
treede0a795658df184d29e4ed795c6b6b15c6e0454d /src/libs/engine/events
parent058174f81f325521957cc6927667dfcf0d7346b4 (diff)
downloadingen-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.cpp6
-rw-r--r--src/libs/engine/events/RequestPluginsEvent.cpp2
-rw-r--r--src/libs/engine/events/RequestPluginsEvent.hpp11
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;
};