, solo_in_place_button (_("SiP"), ArdourButton::led_default_elements)
, afl_button (_("AFL"), ArdourButton::led_default_elements)
, pfl_button (_("PFL"), ArdourButton::led_default_elements)
- , cut_all_button (ArdourButton::led_default_elements)
- , dim_all_button (ArdourButton::led_default_elements)
- , mono_button (ArdourButton::led_default_elements)
, exclusive_solo_button (ArdourButton::led_default_elements)
, solo_mute_override_button (ArdourButton::led_default_elements)
+ , _inhibit_solo_model_update (false)
{
Glib::RefPtr<Action> act;
Label* l1 = manage (new Label (X_("out")));
l1->set_name (X_("MonitorSectionLabel"));
channel_table_header.attach (*l1, 0, 1, 0, 1, EXPAND|FILL);
- l1 = manage (new Label (X_("cut")));
+ l1 = manage (new Label (X_("mute")));
l1->set_name (X_("MonitorSectionLabel"));
channel_table_header.attach (*l1, 1, 2, 0, 1, EXPAND|FILL);
l1 = manage (new Label (X_("dim")));
}
MonitorSection::ChannelButtonSet::ChannelButtonSet ()
- : cut (ArdourButton::just_led_default_elements)
- , dim (ArdourButton::just_led_default_elements)
- , solo (ArdourButton::just_led_default_elements)
- , invert (ArdourButton::just_led_default_elements)
{
cut.set_diameter (3);
dim.set_diameter (3);
if (act) {
Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic (act);
if (ract) {
+ if (!ract->get_active ()) {
+ /* We are turning SiP off, which means that AFL or PFL will be turned on
+ shortly; don't update the solo model in the mean time, as if the currently
+ configured listen position is not the one that is about to be turned on,
+ things will go wrong.
+ */
+ _inhibit_solo_model_update = true;
+ }
Config->set_solo_control_is_listen_control (!ract->get_active());
+ _inhibit_solo_model_update = false;
}
}
}
void
MonitorSection::update_solo_model ()
{
+ if (_inhibit_solo_model_update) {
+ return;
+ }
+
const char* action_name = 0;
Glib::RefPtr<Action> act;