diff --git a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
index c1ffa9c9c0ce9836b3366a2acdec810291586baf..4000b727b677ac63a505f14dc0bde009875d8aae 100644
--- a/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
+++ b/sflphone-common/src/audio/pulseaudio/pulselayer.cpp
@@ -405,12 +405,19 @@ PulseLayer::stopStream (void)
 
 	// pa_threaded_mainloop_unlock (m);
 
+	_debug("Disconnecting PulseAudio context\n");
+
 	if (context) {
+
+	    pa_threaded_mainloop_lock (m);
 	    pa_context_disconnect (context);
 	    pa_context_unref (context);
+	    pa_threaded_mainloop_unlock (m);
 	    context = NULL;
 	}
 
+	_debug("Freeing Pulseaudio mainloop\n");
+
 	if (m) {
 	    pa_threaded_mainloop_free (m);
 	    m = NULL;