13
0

OSC: take care of track order changes too. Deal with mixer topology changes one time.

This commit is contained in:
Len Ovens 2016-06-16 19:41:39 -07:00
parent 3754859f2f
commit f4047b9a26
2 changed files with 15 additions and 1 deletions

View File

@ -257,6 +257,9 @@ OSC::start ()
session->RouteAdded.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSC::notify_routes_added, this, _1), this);
// receive VCAs added
session->vca_manager().VCAAdded.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSC::notify_vca_added, this, _1), this);
// order changed
PresentationInfo::Change.connect (session_connections, MISSING_INVALIDATOR, boost::bind (&OSC::recalcbanks, this), this);
return 0;
}
@ -1283,6 +1286,13 @@ OSC::notify_vca_added (ARDOUR::VCAList &)
void
OSC::recalcbanks ()
{
tick = false;
bank_dirty = true;
}
void
OSC::_recalcbanks ()
{
for (uint32_t it = 0; it < _surface.size(); ++it) {
OSCSurface* sur = &_surface[it];
@ -2389,8 +2399,11 @@ bool
OSC::periodic (void)
{
if (!tick) {
usleep(100); // let flurry of signals subside
if (bank_dirty) {
recalcbanks ();
_recalcbanks ();
bank_dirty = false;
tick = true;
}
}

View File

@ -495,6 +495,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
void route_name_changed (const PBD::PropertyChange&, boost::weak_ptr<ARDOUR::Route> r, lo_address addr);
void recalcbanks ();
void _recalcbanks ();
void notify_routes_added (ARDOUR::RouteList &);
void notify_vca_added (ARDOUR::VCAList &);