trigger_ui: better connection management: watch both the Trigger and the Box
This commit is contained in:
parent
192d513cba
commit
07738e815b
@ -110,7 +110,7 @@ TriggerUI::TriggerUI ()
|
|||||||
TriggerUI::~TriggerUI()
|
TriggerUI::~TriggerUI()
|
||||||
{
|
{
|
||||||
trigger_swap_connection.disconnect ();
|
trigger_swap_connection.disconnect ();
|
||||||
trigger_connections.disconnect ();
|
trigger_connections.drop_connections ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -120,8 +120,11 @@ TriggerUI::trigger_swap (uint32_t n)
|
|||||||
/* some other slot in the same box got swapped. we don't care */
|
/* some other slot in the same box got swapped. we don't care */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
trigger_connections.disconnect ();
|
trigger_connections.drop_connections ();
|
||||||
|
|
||||||
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context ());
|
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context ());
|
||||||
|
tref.box->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context ());
|
||||||
|
|
||||||
trigger_changed (Properties::name);
|
trigger_changed (Properties::name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -812,7 +815,7 @@ TriggerUI::trigger_changed (PropertyChange const& what)
|
|||||||
void
|
void
|
||||||
TriggerUI::set_trigger (ARDOUR::TriggerReference tr)
|
TriggerUI::set_trigger (ARDOUR::TriggerReference tr)
|
||||||
{
|
{
|
||||||
trigger_connections.disconnect();
|
trigger_connections.drop_connections();
|
||||||
trigger_swap_connection.disconnect();
|
trigger_swap_connection.disconnect();
|
||||||
|
|
||||||
tref = tr;
|
tref = tr;
|
||||||
@ -834,5 +837,7 @@ TriggerUI::set_trigger (ARDOUR::TriggerReference tr)
|
|||||||
trigger_changed (pc);
|
trigger_changed (pc);
|
||||||
|
|
||||||
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context());
|
trigger()->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context());
|
||||||
|
tref.box->PropertyChanged.connect (trigger_connections, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_changed, this, _1), gui_context ());
|
||||||
|
|
||||||
tref.box->TriggerSwapped.connect (trigger_swap_connection, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_swap, this, _1), gui_context ());
|
tref.box->TriggerSwapped.connect (trigger_swap_connection, MISSING_INVALIDATOR, boost::bind (&TriggerUI::trigger_swap, this, _1), gui_context ());
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ protected:
|
|||||||
PBD::ScopedConnection trigger_swap_connection;
|
PBD::ScopedConnection trigger_swap_connection;
|
||||||
|
|
||||||
ARDOUR::TriggerReference tref;
|
ARDOUR::TriggerReference tref;
|
||||||
PBD::ScopedConnection trigger_connections;
|
PBD::ScopedConnectionList trigger_connections;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user