summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/ClientBroadcaster.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-09-09 14:24:56 +0000
committerDavid Robillard <d@drobilla.net>2006-09-09 14:24:56 +0000
commitfca95e5d454d37bd74b98f5bce35cfcbaee86c3f (patch)
tree97fcf6e8afaf4356d46a24236e9aa2451ab55698 /src/libs/engine/ClientBroadcaster.cpp
parentb853b3dde1f7028dd275f78433a6ad9b5b9f61c7 (diff)
downloadingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.tar.gz
ingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.tar.bz2
ingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.zip
Drove 'er home! Working monolothic Ingenuity (ie. in-process engine).
Countless bugfixes. git-svn-id: http://svn.drobilla.net/lad/ingen@123 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/ClientBroadcaster.cpp')
-rw-r--r--src/libs/engine/ClientBroadcaster.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/libs/engine/ClientBroadcaster.cpp b/src/libs/engine/ClientBroadcaster.cpp
index 355d4232..181e5a2c 100644
--- a/src/libs/engine/ClientBroadcaster.cpp
+++ b/src/libs/engine/ClientBroadcaster.cpp
@@ -42,9 +42,6 @@ namespace Ingen {
void
ClientBroadcaster::register_client(const ClientKey key, CountedPtr<ClientInterface> client)
{
- assert(key.type() == ClientKey::OSC_URL);
- assert(key.uri() != "");
-
bool found = false;
for (ClientList::iterator i = _clients.begin(); i != _clients.end(); ++i)
if ((*i).first == key)
@@ -126,12 +123,10 @@ ClientBroadcaster::send_error(const string& msg)
(*i).second->error(msg);
}
-
-/* FIXME: Make a copy method for list and just make a copy and pass it here
- * instead of this global+locking mess */
void
-ClientBroadcaster::send_plugins_to(ClientInterface* client, const list<Plugin*>& plugin_list)
+ClientBroadcaster::send_plugins_to(CountedPtr<ClientInterface> client, const list<Plugin*>& plugin_list)
{
+#if 0
// FIXME: This probably isn't actually thread safe
const list<Plugin*> plugs = plugin_list; // make a copy
@@ -175,6 +170,23 @@ ClientBroadcaster::send_plugins_to(ClientInterface* client, const list<Plugin*>&
}
for (list<lo_bundle>::const_iterator i = msgs.begin(); i != msgs.end(); ++i)
lo_message_free(*i);
+#endif
+ client->transfer_begin();
+
+ for (list<Plugin*>::const_iterator i = plugin_list.begin(); i != plugin_list.end(); ++i) {
+ const Plugin* const plugin = *i;
+ client->new_plugin(plugin->type_string(), plugin->uri(), plugin->name());
+ }
+
+ client->transfer_end();
+}
+
+
+void
+ClientBroadcaster::send_plugins(const list<Plugin*>& plugin_list)
+{
+ for (ClientList::const_iterator c = _clients.begin(); c != _clients.end(); ++c)
+ send_plugins_to((*c).second, plugin_list);
}