summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-03-21 18:20:54 +0100
committerRobin Gareus <robin@gareus.org>2020-03-21 19:46:38 +0100
commitefb63e1bf29b131978b30b23304dfc276af70a8d (patch)
tree19e364723d92b1637ba8065201c462c38994ca6c
parent991f92c2c627ee79d8f5574b75e8cf28bb156936 (diff)
Pan: remove value-as-string indirection
-rw-r--r--libs/ardour/ardour/pannable.h1
-rw-r--r--libs/ardour/ardour/panner.h5
-rw-r--r--libs/ardour/pan_controllable.cc4
-rw-r--r--libs/ardour/pannable.cc12
-rw-r--r--libs/ardour/panner.cc6
5 files changed, 6 insertions, 22 deletions
diff --git a/libs/ardour/ardour/pannable.h b/libs/ardour/ardour/pannable.h
index d282ff7dde..417530e43f 100644
--- a/libs/ardour/ardour/pannable.h
+++ b/libs/ardour/ardour/pannable.h
@@ -64,7 +64,6 @@ public:
return ((_auto_state & Write) || ((_auto_state & (Touch | Latch)) && touching()));
}
- std::string value_as_string (boost::shared_ptr<const AutomationControl>) const;
void start_touch (double when);
void stop_touch (double when);
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index c2af287098..ad6977a480 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -57,6 +57,7 @@ class Pannable;
class BufferSet;
class AudioBuffer;
class Speakers;
+class PanControllable;
class LIBARDOUR_API Panner : public PBD::Stateful, public PBD::ScopedConnectionList
{
@@ -111,7 +112,6 @@ public:
virtual std::set<Evoral::Parameter> what_can_be_automated() const;
virtual std::string describe_parameter (Evoral::Parameter);
- virtual std::string value_as_string (boost::shared_ptr<const AutomationControl>) const;
bool touching() const;
@@ -145,8 +145,11 @@ public:
virtual void thaw ();
protected:
+ friend PanControllable;
boost::shared_ptr<Pannable> _pannable;
+ virtual std::string value_as_string (boost::shared_ptr<const AutomationControl>) const = 0;
+
virtual void distribute_one (AudioBuffer&, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which) = 0;
virtual void distribute_one_automated (AudioBuffer&, BufferSet& obufs,
samplepos_t start, samplepos_t end, pframes_t nframes,
diff --git a/libs/ardour/pan_controllable.cc b/libs/ardour/pan_controllable.cc
index 5b257158fe..2f9ca3e6a6 100644
--- a/libs/ardour/pan_controllable.cc
+++ b/libs/ardour/pan_controllable.cc
@@ -58,12 +58,12 @@ PanControllable::actually_set_value (double v, Controllable::GroupControlDisposi
std::string
PanControllable::get_user_string () const
{
- if (!owner) {
+ if (!owner || !owner->panner()) {
/* assume PanAzimuthAutomation, 0..1 */
float v = get_value ();
char buf[32];
snprintf(buf, sizeof(buf), "%.0f%%", 100.f * v);
return buf;
}
- return owner->value_as_string (boost::dynamic_pointer_cast<const AutomationControl>(shared_from_this()));
+ return owner->panner()->value_as_string (boost::dynamic_pointer_cast<const AutomationControl>(shared_from_this()));
}
diff --git a/libs/ardour/pannable.cc b/libs/ardour/pannable.cc
index 595c2f7ce9..f0ee102ec2 100644
--- a/libs/ardour/pannable.cc
+++ b/libs/ardour/pannable.cc
@@ -256,15 +256,3 @@ Pannable::set_state (const XMLNode& root, int version)
return 0;
}
-
-string
-Pannable::value_as_string (boost::shared_ptr<const AutomationControl> ac) const
-{
- boost::shared_ptr<Panner> p = panner ();
-
- if (p) {
- return p->value_as_string (ac);
- }
-
- return ARDOUR::value_as_string(ac->desc(), ac->get_value());
-}
diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc
index dd7576bb45..28d862d2db 100644
--- a/libs/ardour/panner.cc
+++ b/libs/ardour/panner.cc
@@ -98,12 +98,6 @@ Panner::describe_parameter (Evoral::Parameter p)
return _pannable->describe_parameter (p);
}
-string
-Panner::value_as_string (boost::shared_ptr<const AutomationControl> ac) const
-{
- return _pannable->value_as_string (ac);
-}
-
int
Panner::set_state (XMLNode const &, int)
{