diff options
Diffstat (limited to 'libs/ardour/panner.cc')
-rw-r--r-- | libs/ardour/panner.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc index 23c87f0a2e..83923a44d6 100644 --- a/libs/ardour/panner.cc +++ b/libs/ardour/panner.cc @@ -703,7 +703,7 @@ Multi2dPanner::set_state (const XMLNode& node) /*---------------------------------------------------------------------- */ Panner::Panner (string name, Session& s) - : Processor(s, name, PostFader) + : Processor(s, name) { //set_name_old_auto (name); set_name (name); @@ -1012,23 +1012,30 @@ Panner::set_automation_state (AutoState state) AutoState Panner::automation_state () const { + boost::shared_ptr<AutomationList> l; if (!empty()) { - return ((AutomationList*)_streampanners.front()->pan_control()->list().get())->automation_state (); - } else { - return Off; + boost::shared_ptr<AutomationControl> control = _streampanners.front()->pan_control(); + if (control) { + l = boost::dynamic_pointer_cast<AutomationList>(control->list()); + } } + + return l ? l->automation_state() : Off; } AutoStyle Panner::automation_style () const { + boost::shared_ptr<AutomationList> l; if (!empty()) { - return ((AutomationList*)_streampanners.front()->pan_control()->list().get())->automation_style (); - } else { - return Absolute; + boost::shared_ptr<AutomationControl> control = _streampanners.front()->pan_control(); + if (control) { + l = boost::dynamic_pointer_cast<AutomationList>(control->list()); + } } -} + return l ? l->automation_style() : Absolute; +} struct PanPlugins { string name; |