13
0

OSC do not recalc select if still valid

This commit is contained in:
Len Ovens 2018-04-07 10:42:11 -07:00
parent 3a6d7ba321
commit 293326cd94

View File

@ -4437,17 +4437,23 @@ OSC::_strip_select (boost::shared_ptr<Stripable> s, lo_address addr)
return -1; return -1;
} }
OSCSurface *sur = get_surface(addr, true); OSCSurface *sur = get_surface(addr, true);
boost::shared_ptr<Stripable> old_sel = sur->select; boost::weak_ptr<Stripable> o_sel = sur->select;
boost::shared_ptr<Stripable> old_sel= o_sel.lock ();
if (!s) { if (!s) {
// expand doesn't point to a stripable, turn it off and use select // we got a null strip check that old strip is valid
sur->expand = 0; if (old_sel && sur->expand_enable) {
sur->expand_enable = false; s = old_sel;
if (ControlProtocol::first_selected_stripable()) {
s = ControlProtocol::first_selected_stripable();
} else { } else {
s = session->master_out (); sur->expand = 0;
} sur->expand_enable = false;
if (ControlProtocol::first_selected_stripable()) {
s = ControlProtocol::first_selected_stripable();
} else {
s = session->master_out ();
}
_select = s; _select = s;
}
} }
if (s != old_sel) { if (s != old_sel) {
sur->select = s; sur->select = s;