X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=blobdiff_plain;f=libs%2Fardour%2Fsolo_control.cc;h=c31644b02665f57005e78d73b7c1945621507785;hp=9cf3c205994068240588ecc479f6f8cfb3e5cc76;hb=c8c6bca6587450ff64303dbc994a4cd28d6ce7aa;hpb=f022784014d4ae1b3bb75a1c02f206ba8a28d7d6 diff --git a/libs/ardour/solo_control.cc b/libs/ardour/solo_control.cc index 9cf3c20599..c31644b026 100644 --- a/libs/ardour/solo_control.cc +++ b/libs/ardour/solo_control.cc @@ -21,7 +21,7 @@ #include "ardour/session.h" #include "ardour/solo_control.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace ARDOUR; using namespace std; @@ -256,15 +256,22 @@ SoloControl::master_changed (bool /*from self*/, GroupControlDisposition, boost: _transition_into_solo = 0; + /* Notice that we call get_boolean_masters() BEFORE we call + * update_boolean_masters_records(), in order to know what + * our master state was BEFORE it gets changed. + */ + if (m->get_value()) { /* this master is now enabled */ if (!self_soloed() && get_boolean_masters() == 0) { + /* not self-soloed, wasn't soloed by masters before */ send_signal = true; _transition_into_solo = 1; } } else { if (!self_soloed() && get_boolean_masters() == 1) { + /* not self-soloed, soloed by just 1 master before */ _transition_into_solo = -1; send_signal = true; }