GstJackClientType type;
gboolean active;
gboolean deactivate;
+ gboolean server_down;
JackShutdownCallback shutdown;
JackProcessCallback process;
for (walk = conn->src_clients; walk; walk = g_list_next (walk)) {
GstJackAudioClient *client = (GstJackAudioClient *) walk->data;
+ client->server_down = TRUE;
+ g_cond_signal (&conn->flush_cond);
if (client->shutdown)
client->shutdown (client->user_data);
}
for (walk = conn->sink_clients; walk; walk = g_list_next (walk)) {
GstJackAudioClient *client = (GstJackAudioClient *) walk->data;
+ client->server_down = TRUE;
+ g_cond_signal (&conn->flush_cond);
if (client->shutdown)
client->shutdown (client->user_data);
}
client->buffer_size = buffer_size;
client->sample_rate = sample_rate;
client->user_data = user_data;
+ client->server_down = FALSE;
/* add the client to the connection */
gst_jack_audio_connection_add_client (conn, client);
client->deactivate = TRUE;
/* need to wait for process_cb run once more */
- while (client->deactivate)
+ while (client->deactivate && !client->server_down)
g_cond_wait (&client->conn->flush_cond, &client->conn->lock);
}
client->active = active;