Mixer: Don't process (dis)connection notifications from JACK while destroying chain.

This commit is contained in:
Jonathan Moore Liles 2013-05-02 20:02:17 -07:00
parent 973089890c
commit 3084956664
2 changed files with 8 additions and 0 deletions

View File

@ -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 ) ) ||

View File

@ -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 );