diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-30 16:48:58 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-30 16:48:58 +0000 |
commit | 74933f58659051f6d4ef52d1103b2b7ba4643883 (patch) | |
tree | 93069fda3163dce2e97b61a845863b68b300200d /libs/pbd/controllable.cc | |
parent | 8a17b0fb9073bb21ef2c718113f9e41359faf4fe (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.cc | 70 |
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; +} |