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,9 +4437,14 @@ 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
if (old_sel && sur->expand_enable) {
s = old_sel;
} else {
sur->expand = 0; sur->expand = 0;
sur->expand_enable = false; sur->expand_enable = false;
if (ControlProtocol::first_selected_stripable()) { if (ControlProtocol::first_selected_stripable()) {
@ -4449,6 +4454,7 @@ OSC::_strip_select (boost::shared_ptr<Stripable> s, lo_address addr)
} }
_select = s; _select = s;
} }
}
if (s != old_sel) { if (s != old_sel) {
sur->select = s; sur->select = s;
if (sur->custom_mode >= GroupOnly) { if (sur->custom_mode >= GroupOnly) {