diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 5fdb6263b0..a397ed232b 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -270,9 +270,32 @@ void MeterStrip::set_button_names() { mute_button->set_text (_("M")); - solo_button->set_text (_("S")); rec_enable_button->set_text (""); rec_enable_button->set_image (::get_icon (X_("record_normal_red"))); + + if (_route && _route->solo_safe()) { + solo_button->remove (); + if (solo_safe_pixbuf == 0) { + solo_safe_pixbuf =::get_icon("solo-safe-icon"); + } + solo_button->set_image (solo_safe_pixbuf); + solo_button->set_text (string()); + } else { + solo_button->set_image (Glib::RefPtr()); + if (!Config->get_solo_control_is_listen_control()) { + solo_button->set_text (_("S")); + } else { + switch (Config->get_listen_position()) { + case AfterFaderListen: + solo_button->set_text (_("A")); + break; + case PreFaderListen: + solo_button->set_text (_("P")); + break; + } + } + } + } void