summaryrefslogtreecommitdiffstats
path: root/src/server/Broadcaster.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-02-02 02:16:23 +0000
committerDavid Robillard <d@drobilla.net>2013-02-02 02:16:23 +0000
commitd049b582e1db60ee0f6fd02a40202145488c7288 (patch)
tree4b30ba2522a14863ce76f672f537dcca0c14c34e /src/server/Broadcaster.cpp
parent73a01c1bd8d6cf92522a433cd2b0bd491f2af99a (diff)
downloadingen-d049b582e1db60ee0f6fd02a40202145488c7288.tar.gz
ingen-d049b582e1db60ee0f6fd02a40202145488c7288.tar.bz2
ingen-d049b582e1db60ee0f6fd02a40202145488c7288.zip
Add option to enable/disable canvas animation (fix/avoid #879).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5016 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/Broadcaster.cpp')
-rw-r--r--src/server/Broadcaster.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/Broadcaster.cpp b/src/server/Broadcaster.cpp
index f3bc96f7..8e53164f 100644
--- a/src/server/Broadcaster.cpp
+++ b/src/server/Broadcaster.cpp
@@ -26,10 +26,16 @@
namespace Ingen {
namespace Server {
+Broadcaster::Broadcaster()
+ : _must_broadcast(false)
+ , _bundle_depth(0)
+{}
+
Broadcaster::~Broadcaster()
{
Glib::Mutex::Lock lock(_clients_mutex);
_clients.clear();
+ _broadcastees.clear();
}
/** Register a client to receive messages over the notification band.
@@ -51,9 +57,21 @@ Broadcaster::unregister_client(const Raul::URI& uri)
{
Glib::Mutex::Lock lock(_clients_mutex);
const size_t erased = _clients.erase(uri);
+ _broadcastees.erase(uri);
return (erased > 0);
}
+void
+Broadcaster::set_broadcast(const Raul::URI& client, bool broadcast)
+{
+ if (broadcast) {
+ _broadcastees.insert(client);
+ } else {
+ _broadcastees.erase(client);
+ }
+ _must_broadcast.store(!_broadcastees.empty());
+}
+
/** Looks up the client with the given source @a uri (which is used as the
* unique identifier for registered clients).
*/