static void cbjack_stream_destroy(cubeb_stream * stream) { pthread_mutex_lock(&stream->mutex); stream->ports_ready = false; if (stream->devs == DUPLEX || stream->devs == OUT_ONLY) { for (unsigned int c = 0; c < stream->out_params.channels; c++) { if (stream->output_ports[c]) { api_jack_port_unregister (stream->context->jack_client, stream->output_ports[c]); stream->output_ports[c] = NULL; } } } if (stream->devs == DUPLEX || stream->devs == IN_ONLY) { for (unsigned int c = 0; c < stream->in_params.channels; c++) { if (stream->input_ports[c]) { api_jack_port_unregister (stream->context->jack_client, stream->input_ports[c]); stream->input_ports[c] = NULL; } } } if (stream->resampler) { cubeb_resampler_destroy(stream->resampler); stream->resampler = NULL; } stream->in_use = false; pthread_mutex_unlock(&stream->mutex); }
static void cbjack_stream_destroy(cubeb_stream * stream) { AutoLock lock(stream->context->mutex); stream->state = STATE_INACTIVE; stream->ports_ready = false; for (unsigned int c = 0; c < stream->params.channels; c++) { api_jack_port_unregister (stream->context->jack_client, stream->output_ports[c]); stream->output_ports[c] = NULL; api_jack_ringbuffer_reset(stream->ringbuffer[c]); } if (stream->resampler != NULL) { speex_resampler_destroy(stream->resampler); stream->resampler = NULL; } stream->in_use = false; }