summaryrefslogtreecommitdiffstats
path: root/src/server/Broadcaster.hpp
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.hpp
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.hpp')
-rw-r--r--src/server/Broadcaster.hpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/server/Broadcaster.hpp b/src/server/Broadcaster.hpp
index 3162742b..5de5ec8f 100644
--- a/src/server/Broadcaster.hpp
+++ b/src/server/Broadcaster.hpp
@@ -17,8 +17,10 @@
#ifndef INGEN_ENGINE_CLIENTBROADCASTER_HPP
#define INGEN_ENGINE_CLIENTBROADCASTER_HPP
+#include <atomic>
#include <list>
#include <map>
+#include <set>
#include <string>
#include <glibmm/thread.h>
@@ -41,12 +43,21 @@ namespace Server {
class Broadcaster : public Interface
{
public:
- Broadcaster() : _bundle_depth(0) {}
+ Broadcaster();
~Broadcaster();
void register_client(const Raul::URI& uri, SPtr<Interface> client);
bool unregister_client(const Raul::URI& uri);
+ void set_broadcast(const Raul::URI& client, bool broadcast);
+
+ /** Return true iff there are any clients with broadcasting enabled.
+ *
+ * This is used in the audio thread to decide whether or not notifications
+ * should be calculated and emitted.
+ */
+ bool must_broadcast() const { return _must_broadcast; }
+
/** A handle that represents a transfer of possibly several changes.
*
* This object going out of scope signifies the transfer is completed.
@@ -135,9 +146,11 @@ private:
typedef std::map< Raul::URI, SPtr<Interface> > Clients;
- Glib::Mutex _clients_mutex;
- Clients _clients;
- unsigned _bundle_depth;
+ Glib::Mutex _clients_mutex;
+ Clients _clients;
+ std::set<Raul::URI> _broadcastees;
+ std::atomic<bool> _must_broadcast;
+ unsigned _bundle_depth;
};
} // namespace Server