static void rdpsnd_pulse_close(rdpsndDevicePlugin* device) { rdpsndPulsePlugin* pulse = (rdpsndPulsePlugin*)device; if (!pulse->context || !pulse->stream) return; pa_threaded_mainloop_lock(pulse->mainloop); rdpsnd_pulse_wait_for_operation(pulse, pa_stream_drain(pulse->stream, rdpsnd_pulse_stream_success_callback, pulse)); pa_stream_disconnect(pulse->stream); pa_stream_unref(pulse->stream); pulse->stream = NULL; pa_threaded_mainloop_unlock(pulse->mainloop); }
static int rdpsnd_pulse_close(rdpsndDevicePlugin * devplugin) { struct pulse_device_data * pulse_data; pulse_data = (struct pulse_device_data *) devplugin->device_data; if (!pulse_data->context || !pulse_data->stream) return 1; LLOGLN(0, ("rdpsnd_pulse_close:")); pa_threaded_mainloop_lock(pulse_data->mainloop); rdpsnd_pulse_wait_for_operation(devplugin, pa_stream_drain(pulse_data->stream, rdpsnd_pulse_stream_success_callback, devplugin)); pa_stream_disconnect(pulse_data->stream); pa_stream_unref(pulse_data->stream); pulse_data->stream = NULL; pa_threaded_mainloop_unlock(pulse_data->mainloop); return 0; }