diff --git a/mixer/src/Chain.C b/mixer/src/Chain.C index 2600037..58794e2 100644 --- a/mixer/src/Chain.C +++ b/mixer/src/Chain.C @@ -86,6 +86,7 @@ extern char *instance_name; Chain::Chain ( ) : Fl_Group( 0, 0, 100, 100, "") { + _deleting = false; _engine = NULL; int X = 0; @@ -171,6 +172,8 @@ Chain::~Chain ( ) log_destroy(); + _deleting = true; + engine()->lock(); /* 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 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... */ if ( jack_port_is_mine( engine()->jack_client(), jack_port_by_id( engine()->jack_client(), a ) ) || diff --git a/mixer/src/Chain.H b/mixer/src/Chain.H index 5c477bf..8638c00 100644 --- a/mixer/src/Chain.H +++ b/mixer/src/Chain.H @@ -54,6 +54,8 @@ class Chain : public Fl_Group, public Loggable { Fl_Callback *_configure_outputs_callback; void *_configure_outputs_userdata; + + bool _deleting; private: