diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/audio_time_axis.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/panner2d.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/panner_ui.cc | 20 | ||||
-rw-r--r-- | gtk2_ardour/panner_ui.h | 6 | ||||
-rw-r--r-- | gtk2_ardour/send_ui.cc | 2 |
6 files changed, 27 insertions, 17 deletions
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 33ad517952..f43d3739cc 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -42,6 +42,7 @@ #include "ardour/location.h" #include "ardour/pannable.h" #include "ardour/panner.h" +#include "ardour/panner_shell.h" #include "ardour/playlist.h" #include "ardour/processor.h" #include "ardour/profile.h" @@ -108,8 +109,8 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session* sess, boost::sh } if (_route->panner()) { - _route->panner()->Changed.connect (*this, invalidator (*this), - boost::bind (&AudioTimeAxisView::ensure_pan_views, this, false), gui_context()); + _route->panner_shell()->Changed.connect (*this, invalidator (*this), + boost::bind (&AudioTimeAxisView::ensure_pan_views, this, false), gui_context()); } /* map current state of the route */ diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index f754ef2863..cb159e46da 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -42,6 +42,7 @@ #include "ardour/audio_track.h" #include "ardour/pannable.h" #include "ardour/panner.h" +#include "ardour/panner_shell.h" #include "ardour/send.h" #include "ardour/processor.h" #include "ardour/profile.h" @@ -436,7 +437,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) _route->route_group_changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::route_group_changed, this), gui_context()); if (_route->panner()) { - _route->panner()->Changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::connect_to_pan, this), gui_context()); + _route->panner_shell()->Changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::connect_to_pan, this), gui_context()); } if (is_audio_track()) { @@ -457,7 +458,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) route_group_changed (); connect_to_pan (); - panners.setup_pan (); update_diskstream_display (); @@ -929,7 +929,7 @@ MixerStrip::connect_to_pan () p->automation_state_changed.connect (panstate_connection, invalidator (*this), boost::bind (&PannerUI::pan_automation_state_changed, &panners), gui_context()); p->automation_style_changed.connect (panstyle_connection, invalidator (*this), boost::bind (&PannerUI::pan_automation_style_changed, &panners), gui_context()); - panners.panner_changed (this); + panners.panshell_changed (); } @@ -1689,7 +1689,7 @@ MixerStrip::show_send (boost::shared_ptr<Send> send) gain_meter().set_controls (_route, send->meter(), send->amp()); gain_meter().setup_meters (); - panner_ui().set_panner (_current_delivery->panner()); + panner_ui().set_panner (_current_delivery->panner_shell(), _current_delivery->panner()); panner_ui().setup_pan (); input_button.set_sensitive (false); @@ -1723,7 +1723,7 @@ MixerStrip::revert_to_default_display () gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp()); gain_meter().setup_meters (); - panner_ui().set_panner (_route->main_outs()->panner()); + panner_ui().set_panner (_route->main_outs()->panner_shell(), _route->main_outs()->panner()); panner_ui().setup_pan (); reset_strip_style (); diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index 857c067ef5..f662463aed 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -65,7 +65,6 @@ Panner2d::Panner2d (boost::shared_ptr<Panner> p, int32_t h) : panner (p), width (0), height (h) { panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context()); - panner->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); panner->pannable()->pan_azimuth_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); panner->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index cd35bc2d88..2a69d73251 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -37,6 +37,7 @@ #include "ardour/session.h" #include "ardour/panner.h" #include "ardour/pannable.h" +#include "ardour/panner_shell.h" #include "ardour/route.h" #include "i18n.h" @@ -91,8 +92,11 @@ PannerUI::PannerUI (Session* s) } void -PannerUI::set_panner (boost::shared_ptr<Panner> p) +PannerUI::set_panner (boost::shared_ptr<PannerShell> ps, boost::shared_ptr<Panner> p) { + /* note that the panshell might not change here (i.e. ps == _panshell) + */ + connections.drop_connections (); delete pan_astyle_menu; @@ -101,6 +105,7 @@ PannerUI::set_panner (boost::shared_ptr<Panner> p) delete pan_astate_menu; pan_astate_menu = 0; + _panshell = ps; _panner = p; delete twod_panner; @@ -113,7 +118,7 @@ PannerUI::set_panner (boost::shared_ptr<Panner> p) return; } - _panner->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panner_changed, this, this), gui_context()); + _panshell->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panshell_changed, this), gui_context()); _panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_state, this), gui_context()); /* new panner object, force complete reset of panner GUI @@ -122,10 +127,9 @@ PannerUI::set_panner (boost::shared_ptr<Panner> p) _current_nouts = 0; _current_nins = 0; - panner_changed (0); + setup_pan (); update_pan_sensitive (); pan_automation_state_changed (); - } void @@ -206,8 +210,9 @@ PannerUI::~PannerUI () void -PannerUI::panner_changed (void* src) +PannerUI::panshell_changed () { + set_panner (_panshell, _panshell->panner()); setup_pan (); } @@ -231,13 +236,16 @@ PannerUI::setup_pan () return; } + _current_nins = nins; + _current_nouts = nouts; + container_clear (pan_vbox); delete twod_panner; twod_panner = 0; delete _stereo_panner; _stereo_panner = 0; - + if (nouts == 0 || nouts == 1) { delete _stereo_panner; diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index b62bcefa36..a18e22ec56 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -44,6 +44,7 @@ class MonoPanner; namespace ARDOUR { class Session; class Panner; + class PannerShell; class Delivery; class AutomationControl; } @@ -63,9 +64,9 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr PannerUI (ARDOUR::Session*); ~PannerUI (); - virtual void set_panner (boost::shared_ptr<ARDOUR::Panner>); + virtual void set_panner (boost::shared_ptr<ARDOUR::PannerShell>, boost::shared_ptr<ARDOUR::Panner>); - void panner_changed (void *); + void panshell_changed (); void update_pan_sensitive (); void update_gain_sensitive (); @@ -85,6 +86,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr private: friend class MixerStrip; + boost::shared_ptr<ARDOUR::PannerShell> _panshell; boost::shared_ptr<ARDOUR::Panner> _panner; PBD::ScopedConnectionList connections; PBD::ScopedConnectionList _pan_control_connections; diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index 14068bbc5b..7cf8228ffe 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -43,7 +43,7 @@ SendUI::SendUI (Gtk::Window* parent, boost::shared_ptr<Send> s, Session* session { assert (_send); - _panners.set_panner (s->panner()); + _panners.set_panner (s->panner_shell(), s->panner()); _gpm.set_controls (boost::shared_ptr<Route>(), s->meter(), s->amp()); _hbox.pack_start (_gpm, true, true); |