OSC: Further fixes so multiple controls can touch at once.
This commit is contained in:
parent
ab069b1372
commit
b3fb75fead
@ -2343,11 +2343,9 @@ OSC::touch_detect (const char *path, lo_arg **argv, int argc, lo_message msg)
|
|||||||
control->stop_touch (true, control->session().transport_frame());
|
control->stop_touch (true, control->session().transport_frame());
|
||||||
}
|
}
|
||||||
// just in case some crazy surface starts sending control values before touch
|
// just in case some crazy surface starts sending control values before touch
|
||||||
for (FakeTouchMap::iterator x = _touch_timeout.begin(); x != _touch_timeout.end(); x++) {
|
FakeTouchMap::iterator x = _touch_timeout.find(control);
|
||||||
if ((*x).first == control) {
|
if (x != _touch_timeout.end()) {
|
||||||
_touch_timeout.erase (x);
|
_touch_timeout.erase (x);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3975,14 +3973,15 @@ OSC::periodic (void)
|
|||||||
co->tick();
|
co->tick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (FakeTouchMap::iterator x = _touch_timeout.begin(); x != _touch_timeout.end(); x++) {
|
for (FakeTouchMap::iterator x = _touch_timeout.begin(); x != _touch_timeout.end();) {
|
||||||
_touch_timeout[(*x).first] = (*x).second - 1;
|
_touch_timeout[(*x).first] = (*x).second - 1;
|
||||||
if (!(*x).second) {
|
if (!(*x).second) {
|
||||||
boost::shared_ptr<ARDOUR::AutomationControl> ctrl = (*x).first;
|
boost::shared_ptr<ARDOUR::AutomationControl> ctrl = (*x).first;
|
||||||
// turn touch off
|
// turn touch off
|
||||||
ctrl->stop_touch (true, ctrl->session().transport_frame());
|
ctrl->stop_touch (true, ctrl->session().transport_frame());
|
||||||
_touch_timeout.erase (x);
|
_touch_timeout.erase (x++);
|
||||||
break;
|
} else {
|
||||||
|
x++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user