summaryrefslogtreecommitdiff
path: root/libs/pbd/controllable.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-12-30 16:48:58 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-12-30 16:48:58 +0000
commit74933f58659051f6d4ef52d1103b2b7ba4643883 (patch)
tree93069fda3163dce2e97b61a845863b68b300200d /libs/pbd/controllable.cc
parent8a17b0fb9073bb21ef2c718113f9e41359faf4fe (diff)
restore excess calls to sync-order stuff (for now); allow MIDI controllers to use the same non-linear fader response as the gui; add various flags to PBD::Controllable and remove URI from that class
git-svn-id: svn://localhost/ardour2/branches/3.0@6414 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/controllable.cc')
-rw-r--r--libs/pbd/controllable.cc70
1 files changed, 12 insertions, 58 deletions
diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc
index be487a0a87..d5b81a73ed 100644
--- a/libs/pbd/controllable.cc
+++ b/libs/pbd/controllable.cc
@@ -18,6 +18,7 @@
*/
#include "pbd/controllable.h"
+#include "pbd/enumwriter.h"
#include "pbd/xml++.h"
#include "pbd/error.h"
@@ -34,13 +35,11 @@ PBD::Signal1<void,Controllable*> Controllable::DeleteBinding;
Glib::StaticRWLock Controllable::registry_lock = GLIBMM_STATIC_RW_LOCK_INIT;
Controllable::Controllables Controllable::registry;
-Controllable::ControllablesByURI Controllable::registry_by_uri;
PBD::ScopedConnectionList registry_connections;
-Controllable::Controllable (const string& name, const string& uri)
+Controllable::Controllable (const string& name, Flag f)
: _name (name)
- , _uri (uri)
- , _touching (false)
+ , _flags (f)
{
add (*this);
}
@@ -53,13 +52,6 @@ Controllable::add (Controllable& ctl)
Glib::RWLock::WriterLock lm (registry_lock);
registry.insert (&ctl);
- if (!ctl.uri().empty()) {
- pair<string,Controllable*> newpair;
- newpair.first = ctl.uri();
- newpair.second = &ctl;
- registry_by_uri.insert (newpair);
- }
-
/* Controllable::remove() is static - no need to manage this connection */
ctl.DropReferences.connect_same_thread (registry_connections, boost::bind (&Controllable::remove, &ctl));
@@ -76,35 +68,6 @@ Controllable::remove (Controllable* ctl)
break;
}
}
-
- if (!ctl->uri().empty()) {
- ControllablesByURI::iterator i = registry_by_uri.find (ctl->uri());
- if (i != registry_by_uri.end()) {
- registry_by_uri.erase (i);
- }
- }
-}
-
-void
-Controllable::set_uri (const string& new_uri)
-{
- Glib::RWLock::WriterLock lm (registry_lock);
-
- if (!_uri.empty()) {
- ControllablesByURI::iterator i = registry_by_uri.find (_uri);
- if (i != registry_by_uri.end()) {
- registry_by_uri.erase (i);
- }
- }
-
- _uri = new_uri;
-
- if (!_uri.empty()) {
- pair<string,Controllable*> newpair;
- newpair.first = _uri;
- newpair.second = this;
- registry_by_uri.insert (newpair);
- }
}
Controllable*
@@ -121,18 +84,6 @@ Controllable::by_id (const ID& id)
}
Controllable*
-Controllable::by_uri (const string& uri)
-{
- Glib::RWLock::ReaderLock lm (registry_lock);
- ControllablesByURI::iterator i;
-
- if ((i = registry_by_uri.find (uri)) != registry_by_uri.end()) {
- return i->second;
- }
- return 0;
-}
-
-Controllable*
Controllable::by_name (const string& str)
{
Glib::RWLock::ReaderLock lm (registry_lock);
@@ -154,11 +105,8 @@ Controllable::get_state ()
node->add_property (X_("name"), _name); // not reloaded from XML state, just there to look at
_id.print (buf, sizeof (buf));
node->add_property (X_("id"), buf);
+ node->add_property (X_("flags"), enum_2_string (_flags));
- if (!_uri.empty()) {
- node->add_property (X_("uri"), _uri);
- }
-
return *node;
}
@@ -175,7 +123,13 @@ Controllable::set_state (const XMLNode& node, int /*version*/)
return -1;
}
- if ((prop = node.property (X_("uri"))) != 0) {
- set_uri (prop->value());
+ if ((prop = node.property (X_("flags"))) != 0) {
+ _flags = (Flag) string_2_enum (prop->value(), _flags);
}
}
+
+void
+Controllable::set_flags (Flag f)
+{
+ _flags = f;
+}