summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-12-11 03:18:17 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-12-11 03:18:17 +0000
commit53bbac4eb676e27e001caf60b36a8f33e5aa9553 (patch)
tree4502631d4f49068a0d88b8157c223082dcd8a6f3 /libs
parent2983f8de97412b4887394747abed59fa11a11cff (diff)
fix compilation breakages from the last commit
git-svn-id: svn://localhost/ardour2/branches/3.0@6347 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/automation_control.cc2
-rw-r--r--libs/ardour/track.cc2
-rw-r--r--libs/pbd/controllable.cc25
-rw-r--r--libs/pbd/pbd/controllable.h12
-rw-r--r--libs/surfaces/generic_midi/generic_midi_control_protocol.cc10
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc41
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.h1
7 files changed, 51 insertions, 42 deletions
diff --git a/libs/ardour/automation_control.cc b/libs/ardour/automation_control.cc
index 1460c42c7b..cad3ef57e8 100644
--- a/libs/ardour/automation_control.cc
+++ b/libs/ardour/automation_control.cc
@@ -34,7 +34,7 @@ AutomationControl::AutomationControl(
const Evoral::Parameter& parameter,
boost::shared_ptr<ARDOUR::AutomationList> list,
const string& name)
- : Controllable((name != "") ? name : EventTypeMap::instance().to_symbol(parameter))
+ : Controllable((name != "") ? name : EventTypeMap::instance().to_symbol(parameter), string("") /* XXX missing URI */)
, Evoral::Control(parameter, list)
, _session(session)
{
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 373829413c..acfc9258b4 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -127,7 +127,7 @@ Track::freeze_state() const
}
Track::RecEnableControllable::RecEnableControllable (Track& s)
- : Controllable (X_("recenable")), track (s)
+ : Controllable (X_("recenable"), string() /* XXX missing URI */), track (s)
{
}
diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc
index fbbb4d6f25..35f7605541 100644
--- a/libs/pbd/controllable.cc
+++ b/libs/pbd/controllable.cc
@@ -24,6 +24,7 @@
#include "i18n.h"
using namespace PBD;
+using namespace std;
sigc::signal<void,Controllable*> Controllable::Destroyed;
sigc::signal<bool,Controllable*> Controllable::StartLearning;
@@ -35,7 +36,7 @@ Glib::StaticRWLock Controllable::registry_lock = GLIBMM_STATIC_RW_LOCK_INIT;
Controllable::Controllables Controllable::registry;
Controllable::ControllablesByURI Controllable::registry_by_uri;
-Controllable::Controllable (const std::string& name, const std::string& uri)
+Controllable::Controllable (const string& name, const string& uri)
: _name (name)
, _uri (uri)
, _touching (false)
@@ -46,7 +47,7 @@ Controllable::Controllable (const std::string& name, const std::string& uri)
void
Controllable::add ()
{
- Glib::RWLock::WriterLock lm (*registry_lock);
+ Glib::RWLock::WriterLock lm (registry_lock);
registry.insert (this);
if (!_uri.empty()) {
@@ -62,7 +63,7 @@ Controllable::add ()
void
Controllable::remove ()
{
- Glib::RWLock::WriterLock lm (*registry_lock);
+ Glib::RWLock::WriterLock lm (registry_lock);
for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) {
if ((*i) == this) {
@@ -71,7 +72,7 @@ Controllable::remove ()
}
}
- if (_uri) {
+ if (!_uri.empty()) {
ControllablesByURI::iterator i = registry_by_uri.find (_uri);
if (i != registry_by_uri.end()) {
registry_by_uri.erase (i);
@@ -82,11 +83,11 @@ Controllable::remove ()
}
void
-Controllable::set_uri (const std::string& new_uri)
+Controllable::set_uri (const string& new_uri)
{
- Glib::RWLock::WriterLock lm (*registry_lock);
+ Glib::RWLock::WriterLock lm (registry_lock);
- if (_uri) {
+ if (!_uri.empty()) {
ControllablesByURI::iterator i = registry_by_uri.find (_uri);
if (i != registry_by_uri.end()) {
registry_by_uri.erase (i);
@@ -106,7 +107,7 @@ Controllable::set_uri (const std::string& new_uri)
Controllable*
Controllable::by_id (const ID& id)
{
- Glib::RWLock::ReaderLock lm (*registry_lock);
+ Glib::RWLock::ReaderLock lm (registry_lock);
for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) {
if ((*i)->id() == id) {
@@ -119,19 +120,19 @@ Controllable::by_id (const ID& id)
Controllable*
Controllable::by_uri (const string& uri)
{
- Glib::RWLock::ReaderLock lm (*registry_lock);
+ Glib::RWLock::ReaderLock lm (registry_lock);
ControllablesByURI::iterator i;
- if ((i = registry_by_ui.find (uri)) != registry_by_uri.end()) {
+ if ((i = registry_by_uri.find (uri)) != registry_by_uri.end()) {
return i->second;
}
return 0;
}
Controllable*
-Controllable::by_name (const std::string& str)
+Controllable::by_name (const string& str)
{
- Glib::RWLock::ReaderLock lm (*registry_lock);
+ Glib::RWLock::ReaderLock lm (registry_lock);
for (Controllables::iterator i = registry.begin(); i != registry.end(); ++i) {
if ((*i)->_name == str) {
diff --git a/libs/pbd/pbd/controllable.h b/libs/pbd/pbd/controllable.h
index 76202d7bdb..9750ebe56e 100644
--- a/libs/pbd/pbd/controllable.h
+++ b/libs/pbd/pbd/controllable.h
@@ -22,9 +22,11 @@ v it under the terms of the GNU General Public License as published by
#include <string>
#include <set>
+#include <map>
#include <sigc++/trackable.h>
#include <sigc++/signal.h>
+#include <glibmm/thread.h>
#include "pbd/statefuldestructible.h"
@@ -34,7 +36,7 @@ namespace PBD {
class Controllable : public PBD::StatefulDestructible {
public:
- Controllable (std::string name, const std::string& uri);
+ Controllable (const std::string& name, const std::string& uri);
virtual ~Controllable() { Destroyed (this); }
void set_uri (const std::string&);
@@ -88,11 +90,11 @@ class Controllable : public PBD::StatefulDestructible {
class IgnorableControllable : public Controllable
{
public:
- IgnorableControllable () : PBD::Controllable ("ignoreMe") {}
- ~IgnorableControllable () {}
+ IgnorableControllable () : PBD::Controllable ("ignoreMe", std::string()) {}
+ ~IgnorableControllable () {}
- void set_value (float /*v*/) {}
- float get_value () const { return 0.0; }
+ void set_value (float /*v*/) {}
+ float get_value () const { return 0.0; }
};
}
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
index 86bf90ee3f..097dbc3aec 100644
--- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
+++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
@@ -139,7 +139,7 @@ GenericMidiControlProtocol::start_learning (Controllable* c)
for (MIDIControllables::iterator i = controllables.begin(); i != controllables.end(); ) {
tmp = i;
++tmp;
- if (&(*i)->get_controllable() == c) {
+ if ((*i)->get_controllable() == c) {
delete (*i);
controllables.erase (i);
}
@@ -150,7 +150,7 @@ GenericMidiControlProtocol::start_learning (Controllable* c)
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ) {
ptmp = i;
++ptmp;
- if (&((*i).first)->get_controllable() == c) {
+ if (((*i).first)->get_controllable() == c) {
(*i).second.disconnect();
delete (*i).first;
pending_controllables.erase (i);
@@ -162,7 +162,7 @@ GenericMidiControlProtocol::start_learning (Controllable* c)
MIDIControllable* mc = 0;
for (MIDIControllables::iterator i = controllables.begin(); i != controllables.end(); ++i) {
- if ((*i)->get_controllable().id() == c->id()) {
+ if ((*i)->get_controllable()->id() == c->id()) {
mc = *i;
break;
}
@@ -221,7 +221,7 @@ GenericMidiControlProtocol::stop_learning (Controllable* c)
*/
for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ++i) {
- if (&((*i).first)->get_controllable() == c) {
+ if (((*i).first)->get_controllable() == c) {
(*i).first->stop_learning ();
dptr = (*i).first;
(*i).second.disconnect();
@@ -243,7 +243,7 @@ GenericMidiControlProtocol::delete_binding (PBD::Controllable* control)
for (MIDIControllables::iterator iter = controllables.begin(); iter != controllables.end(); ++iter) {
MIDIControllable* existingBinding = (*iter);
- if (control == &(existingBinding->get_controllable())) {
+ if (control == (existingBinding->get_controllable())) {
delete existingBinding;
controllables.erase (iter);
}
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc
index 8b2077fb5b..124ef95615 100644
--- a/libs/surfaces/generic_midi/midicontrollable.cc
+++ b/libs/surfaces/generic_midi/midicontrollable.cc
@@ -28,12 +28,13 @@
#include "midicontrollable.h"
using namespace sigc;
+using namespace std;
using namespace MIDI;
using namespace PBD;
using namespace ARDOUR;
MIDIControllable::MIDIControllable (Port& p, const string& c, bool is_bistate)
- : controllable (0), _port (p), bistate (is_bistate)
+ : controllable (0), _current_uri (c), _port (p), bistate (is_bistate)
{
init ();
}
@@ -88,7 +89,11 @@ MIDIControllable::midi_forget ()
void
MIDIControllable::reacquire_controllable ()
{
- _controllable = Controllable::controllable_by_uri (current_uri);
+ if (!_current_uri.empty()) {
+ controllable = Controllable::by_uri (_current_uri);
+ } else {
+ controllable = 0;
+ }
}
void
@@ -136,7 +141,7 @@ MIDIControllable::control_to_midi(float val)
{
float control_min = 0.0f;
float control_max = 1.0f;
- ARDOUR::AutomationControl* ac = dynamic_cast<ARDOUR::AutomationControl*>(&controllable);
+ ARDOUR::AutomationControl* ac = dynamic_cast<ARDOUR::AutomationControl*>(controllable);
if (ac) {
control_min = ac->parameter().min();
control_max = ac->parameter().max();
@@ -153,7 +158,7 @@ MIDIControllable::midi_to_control(float val)
{
float control_min = 0.0f;
float control_max = 1.0f;
- ARDOUR::AutomationControl* ac = dynamic_cast<ARDOUR::AutomationControl*>(&controllable);
+ ARDOUR::AutomationControl* ac = dynamic_cast<ARDOUR::AutomationControl*>(controllable);
if (ac) {
control_min = ac->parameter().min();
control_max = ac->parameter().max();
@@ -194,7 +199,7 @@ MIDIControllable::midi_sense_note (Parser &, EventTwoBytes *msg, bool is_on)
*/
if (msg->note_number == control_additional) {
- controllable.set_value (is_on ? 1 : 0);
+ controllable->set_value (is_on ? 1 : 0);
}
}
@@ -434,21 +439,21 @@ MIDIControllable::set_state (const XMLNode& node, int /*version*/)
XMLNode&
MIDIControllable::get_state ()
{
- if (!controllable) {
- return XXX !what!;
- }
-
char buf[32];
- XMLNode& node (controllable->get_state ());
- snprintf (buf, sizeof(buf), "0x%x", (int) control_type);
- node.add_property ("event", buf);
- snprintf (buf, sizeof(buf), "%d", (int) control_channel);
- node.add_property ("channel", buf);
- snprintf (buf, sizeof(buf), "0x%x", (int) control_additional);
- node.add_property ("additional", buf);
- node.add_property ("feedback", (feedback ? "yes" : "no"));
+ XMLNode* node = new XMLNode ("MIDIControllable");
+
+ if (controllable) {
+ node->add_property ("uri", controllable->uri());
+ snprintf (buf, sizeof(buf), "0x%x", (int) control_type);
+ node->add_property ("event", buf);
+ snprintf (buf, sizeof(buf), "%d", (int) control_channel);
+ node->add_property ("channel", buf);
+ snprintf (buf, sizeof(buf), "0x%x", (int) control_additional);
+ node->add_property ("additional", buf);
+ node->add_property ("feedback", (feedback ? "yes" : "no"));
+ }
- return node;
+ return *node;
}
diff --git a/libs/surfaces/generic_midi/midicontrollable.h b/libs/surfaces/generic_midi/midicontrollable.h
index 7b84c9b60a..a9a40944d8 100644
--- a/libs/surfaces/generic_midi/midicontrollable.h
+++ b/libs/surfaces/generic_midi/midicontrollable.h
@@ -91,6 +91,7 @@ class MIDIControllable : public PBD::Stateful
std::string _control_description;
bool feedback;
+ void init ();
void reacquire_controllable ();
void midi_receiver (MIDI::Parser &p, MIDI::byte *, size_t);