Skip to content
Snippets Groups Projects
Commit 063d4c75 authored by Alexandre Savard's avatar Alexandre Savard
Browse files

[#2366] Set callback to null when deleting Pulseaudio streams

parent d815e361
Branches
Tags
No related merge requests found
...@@ -101,15 +101,22 @@ AudioStream::disconnectStream (void) ...@@ -101,15 +101,22 @@ AudioStream::disconnectStream (void)
{ {
_debug ("Destroy audio streams\n"); _debug ("Destroy audio streams\n");
// pa_threaded_mainloop_lock (_mainloop); pa_threaded_mainloop_lock (_mainloop);
if (_audiostream) { if (_audiostream) {
pa_stream_disconnect (_audiostream); pa_stream_disconnect (_audiostream);
// make sure we don't get any further callback
pa_stream_set_state_callback(_audiostream, NULL, NULL);
pa_stream_set_write_callback (_audiostream, NULL, NULL);
pa_stream_set_underflow_callback (_audiostream, NULL, NULL);
pa_stream_set_overflow_callback (_audiostream, NULL, NULL);
pa_stream_unref (_audiostream); pa_stream_unref (_audiostream);
_audiostream = NULL; _audiostream = NULL;
} }
// pa_threaded_mainloop_unlock (_mainloop); pa_threaded_mainloop_unlock (_mainloop);
return true; return true;
} }
......
...@@ -134,7 +134,7 @@ PulseLayer::closeLayer (void) ...@@ -134,7 +134,7 @@ PulseLayer::closeLayer (void)
// record->disconnectStream(); // record->disconnectStream();
// closeCaptureStream(); // closeCaptureStream();
disconnectAudioStream(); // disconnectAudioStream();
if (context) { if (context) {
pa_context_disconnect (context); pa_context_disconnect (context);
...@@ -294,9 +294,7 @@ void PulseLayer::closeCaptureStream (void) ...@@ -294,9 +294,7 @@ void PulseLayer::closeCaptureStream (void)
{ {
if (record) { if (record) {
pa_threaded_mainloop_lock (m);
delete record; delete record;
pa_threaded_mainloop_unlock (m);
record=NULL; record=NULL;
} }
} }
...@@ -305,9 +303,7 @@ void PulseLayer::closePlaybackStream (void) ...@@ -305,9 +303,7 @@ void PulseLayer::closePlaybackStream (void)
{ {
if (playback) { if (playback) {
pa_threaded_mainloop_lock (m);
delete playback; delete playback;
pa_threaded_mainloop_unlock (m);
playback=NULL; playback=NULL;
} }
} }
...@@ -662,7 +658,6 @@ void PulseLayer::readFromMic (void) ...@@ -662,7 +658,6 @@ void PulseLayer::readFromMic (void)
size_t r; size_t r;
// if (record->getStreamState() // if (record->getStreamState()
// pa_threaded_mainloop_lock (m);
int readableSize = pa_stream_readable_size (record->pulseStream()); int readableSize = pa_stream_readable_size (record->pulseStream());
...@@ -672,6 +667,7 @@ void PulseLayer::readFromMic (void) ...@@ -672,6 +667,7 @@ void PulseLayer::readFromMic (void)
_debug ("pa_stream_peek() failed: %s\n" , pa_strerror (pa_context_errno (context))); _debug ("pa_stream_peek() failed: %s\n" , pa_strerror (pa_context_errno (context)));
} }
if (data != 0) { if (data != 0) {
int _mainBufferSampleRate = getMainBuffer()->getInternalSamplingRate(); int _mainBufferSampleRate = getMainBuffer()->getInternalSamplingRate();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment