diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-21 16:36:08 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-31 15:30:44 -0400 |
commit | 482873760c11f4a69a7bcf0e014be91800e97f57 (patch) | |
tree | af830ade9bae6f72a7c20f0047ddbb5a80d617a0 /gtk2_ardour/route_ui.cc | |
parent | e626db22a0a1dffc60c0acd2d10ae00bc07468a3 (diff) |
initial implementation of VCA time axis views
Diffstat (limited to 'gtk2_ardour/route_ui.cc')
-rw-r--r-- | gtk2_ardour/route_ui.cc | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 0a1faeaa67..32218932b3 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -1116,13 +1116,20 @@ RouteUI::send_blink (bool onoff) Gtkmm2ext::ActiveState RouteUI::solo_active_state (boost::shared_ptr<Stripable> s) { - if (!s->solo_control()->can_solo()) { + boost::shared_ptr<SoloControl> sc = s->solo_control(); + + if (!sc) { return Gtkmm2ext::Off; } - if (s->solo_control()->self_soloed()) { + if (!sc->can_solo()) { + return Gtkmm2ext::Off; + } + + + if (sc->self_soloed()) { return Gtkmm2ext::ExplicitActive; - } else if (s->solo_control()->soloed_by_others()) { + } else if (sc->soloed_by_others()) { return Gtkmm2ext::ImplicitActive; } else { return Gtkmm2ext::Off; @@ -1130,13 +1137,19 @@ RouteUI::solo_active_state (boost::shared_ptr<Stripable> s) } Gtkmm2ext::ActiveState -RouteUI::solo_isolate_active_state (boost::shared_ptr<Stripable> r) +RouteUI::solo_isolate_active_state (boost::shared_ptr<Stripable> s) { - if (r->is_master() || r->is_monitor()) { + boost::shared_ptr<SoloIsolateControl> sc = s->solo_isolate_control(); + + if (!sc) { + return Gtkmm2ext::Off; + } + + if (s->is_master() || s->is_monitor()) { return Gtkmm2ext::Off; } - if (r->solo_isolate_control()->solo_isolated()) { + if (sc->solo_isolated()) { return Gtkmm2ext::ExplicitActive; } else { return Gtkmm2ext::Off; @@ -1144,13 +1157,19 @@ RouteUI::solo_isolate_active_state (boost::shared_ptr<Stripable> r) } Gtkmm2ext::ActiveState -RouteUI::solo_safe_active_state (boost::shared_ptr<Stripable> r) +RouteUI::solo_safe_active_state (boost::shared_ptr<Stripable> s) { - if (r->is_master() || r->is_monitor()) { + boost::shared_ptr<SoloSafeControl> sc = s->solo_safe_control(); + + if (!sc) { return Gtkmm2ext::Off; } - if (r->solo_safe_control()->solo_safe()) { + if (s->is_master() || s->is_monitor()) { + return Gtkmm2ext::Off; + } + + if (sc->solo_safe()) { return Gtkmm2ext::ExplicitActive; } else { return Gtkmm2ext::Off; @@ -1205,18 +1224,24 @@ RouteUI::solo_changed_so_update_mute () } ActiveState -RouteUI::mute_active_state (Session* s, boost::shared_ptr<Stripable> r) +RouteUI::mute_active_state (Session*, boost::shared_ptr<Stripable> s) { - if (r->is_monitor()) { - return ActiveState(0); + boost::shared_ptr<MuteControl> mc = s->mute_control(); + + if (s->is_monitor()) { + return Gtkmm2ext::Off; + } + + if (!mc) { + return Gtkmm2ext::Off; } if (Config->get_show_solo_mutes() && !Config->get_solo_control_is_listen_control ()) { - if (r->mute_control()->muted_by_self ()) { + if (mc->muted_by_self ()) { /* full mute */ return Gtkmm2ext::ExplicitActive; - } else if (r->mute_control()->muted_by_others_soloing () || r->mute_control()->muted_by_masters ()) { + } else if (mc->muted_by_others_soloing () || mc->muted_by_masters ()) { /* this will reflect both solo mutes AND master mutes */ return Gtkmm2ext::ImplicitActive; } else { @@ -1226,10 +1251,10 @@ RouteUI::mute_active_state (Session* s, boost::shared_ptr<Stripable> r) } else { - if (r->mute_control()->muted_by_self()) { + if (mc->muted_by_self()) { /* full mute */ return Gtkmm2ext::ExplicitActive; - } else if (r->mute_control()->muted_by_masters ()) { + } else if (mc->muted_by_masters ()) { /* this shows only master mutes, not mute-by-others-soloing */ return Gtkmm2ext::ImplicitActive; } else { |