Fix crash on updating route IOs, and clean up confusing method names slightly.

git-svn-id: svn://localhost/ardour2/branches/3.0@8058 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2010-11-19 16:34:50 +00:00
parent 3aa8ff4a5e
commit b5fcd80ed6
3 changed files with 42 additions and 50 deletions

View File

@ -974,7 +974,7 @@ MixerStrip::connect_to_pan ()
pan_control->alist()->automation_style_changed.connect (panstyle_connection, invalidator (*this), boost::bind (&PannerUI::pan_automation_style_changed, &panners), gui_context());
}
panners.pan_changed (this);
panners.panner_changed (this);
}

View File

@ -150,13 +150,11 @@ PannerUI::set_panner (boost::shared_ptr<Panner> p)
return;
}
_panner->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panner_changed, this), gui_context());
_panner->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::panner_changed, this, this), gui_context());
_panner->LinkStateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_linkage, this), gui_context());
_panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_state, this), gui_context());
setup_pan ();
pan_changed (0);
panner_changed (0);
update_pan_sensitive ();
update_pan_linkage ();
pan_automation_state_changed ();
@ -301,11 +299,47 @@ PannerUI::~PannerUI ()
void
PannerUI::panner_changed ()
PannerUI::panner_changed (void* src)
{
ENSURE_GUI_THREAD (*this, &PannerUI::panner_changed)
setup_pan ();
pan_changed (0);
if (src == this) {
return;
}
switch (_panner->npanners()) {
case 0:
panning_link_direction_button.set_sensitive (false);
panning_link_button.set_sensitive (false);
return;
case 1:
panning_link_direction_button.set_sensitive (false);
panning_link_button.set_sensitive (false);
break;
default:
panning_link_direction_button.set_sensitive (_panner->linked ());
panning_link_button.set_sensitive (true);
}
uint32_t const nouts = _panner->nouts();
switch (nouts) {
case 0:
case 1:
/* relax */
break;
case 2:
/* bring pan bar state up to date */
update_pan_bars (false);
break;
default:
// panner->move_puck (pan_value (pans[0], pans[1]), 0.5);
break;
}
}
void
@ -590,46 +624,6 @@ PannerUI::effective_pan_display ()
}
}
void
PannerUI::pan_changed (void *src)
{
if (src == this) {
return;
}
switch (_panner->npanners()) {
case 0:
panning_link_direction_button.set_sensitive (false);
panning_link_button.set_sensitive (false);
return;
case 1:
panning_link_direction_button.set_sensitive (false);
panning_link_button.set_sensitive (false);
break;
default:
panning_link_direction_button.set_sensitive (_panner->linked ());
panning_link_button.set_sensitive (true);
}
uint32_t const nouts = _panner->nouts();
switch (nouts) {
case 0:
case 1:
/* relax */
break;
case 2:
/* bring pan bar state up to date */
update_pan_bars (false);
break;
default:
// panner->move_puck (pan_value (pans[0], pans[1]), 0.5);
break;
}
}
void
PannerUI::pan_adjustment_changed (uint32_t which)
{

View File

@ -65,7 +65,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
virtual void set_panner (boost::shared_ptr<ARDOUR::Panner>);
void pan_changed (void *);
void panner_changed (void *);
void update_pan_sensitive ();
void update_gain_sensitive ();
@ -134,8 +134,6 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
void build_astate_menu ();
void build_astyle_menu ();
void panner_changed ();
void hide_pans ();
void panner_moved (int which);