Mixer: Don't process (dis)connection notifications from JACK while destroying chain.
This commit is contained in:
parent
973089890c
commit
3084956664
|
@ -86,6 +86,7 @@ extern char *instance_name;
|
||||||
Chain::Chain ( ) : Fl_Group( 0, 0, 100, 100, "")
|
Chain::Chain ( ) : Fl_Group( 0, 0, 100, 100, "")
|
||||||
|
|
||||||
{
|
{
|
||||||
|
_deleting = false;
|
||||||
_engine = NULL;
|
_engine = NULL;
|
||||||
|
|
||||||
int X = 0;
|
int X = 0;
|
||||||
|
@ -171,6 +172,8 @@ Chain::~Chain ( )
|
||||||
|
|
||||||
log_destroy();
|
log_destroy();
|
||||||
|
|
||||||
|
_deleting = true;
|
||||||
|
|
||||||
engine()->lock();
|
engine()->lock();
|
||||||
|
|
||||||
/* if we leave this up to FLTK, it will happen after we've
|
/* if we leave this up to FLTK, it will happen after we've
|
||||||
|
@ -836,6 +839,9 @@ Chain::port_connect ( jack_port_id_t a, jack_port_id_t b, int connect, void *v )
|
||||||
void
|
void
|
||||||
Chain::port_connect ( jack_port_id_t a, jack_port_id_t b, int connect )
|
Chain::port_connect ( jack_port_id_t a, jack_port_id_t b, int connect )
|
||||||
{
|
{
|
||||||
|
if ( _deleting )
|
||||||
|
return;
|
||||||
|
|
||||||
/* this is called from JACK non-RT thread... */
|
/* this is called from JACK non-RT thread... */
|
||||||
|
|
||||||
if ( jack_port_is_mine( engine()->jack_client(), jack_port_by_id( engine()->jack_client(), a ) ) ||
|
if ( jack_port_is_mine( engine()->jack_client(), jack_port_by_id( engine()->jack_client(), a ) ) ||
|
||||||
|
|
|
@ -55,6 +55,8 @@ class Chain : public Fl_Group, public Loggable {
|
||||||
Fl_Callback *_configure_outputs_callback;
|
Fl_Callback *_configure_outputs_callback;
|
||||||
void *_configure_outputs_userdata;
|
void *_configure_outputs_userdata;
|
||||||
|
|
||||||
|
bool _deleting;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static void snapshot ( void *v );
|
static void snapshot ( void *v );
|
||||||
|
|
Loading…
Reference in New Issue