diff --git a/src/audio/alsalayer.cpp b/src/audio/alsalayer.cpp
index 9d4c70ca02dca747f5fc7d78ddef501fae1e4d59..084ab5b455effcf5caae08b669dce1c0004d0da4 100644
--- a/src/audio/alsalayer.cpp
+++ b/src/audio/alsalayer.cpp
@@ -59,6 +59,12 @@ AlsaLayer::closeLayer()
 AlsaLayer::openDevice (int indexIn, int indexOut, int sampleRate, int frameSize, int stream , std::string plugin) 
 {
 
+    // We don't accept that the audio plugin is changed during a conversation
+    if( _talk ){
+        _debug("can't switch audio plugin when talking\n. Please hang up and try again...\n");
+        return false;
+    }
+        
     if(deviceClosed == false)
     {
         if( stream == SFL_PCM_CAPTURE )
@@ -694,4 +700,4 @@ AlsaLayer::adjustVolume( void* buffer , int len, int stream )
     return src ; 
 }
 
-void AlsaLayer::setPlaybackVolume( double volume ){}
+void AlsaLayer::setPlaybackVolume( double volume UNUSED){}
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index 313079e3558aaa680c2751bb3b723baa39ecd20c..341e55f33b24a9872aed6a3386c6a07cd58c2b39 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -1274,10 +1274,12 @@ ManagerImpl::setInputAudioPlugin(const std::string& audioPlugin)
   void
 ManagerImpl::setOutputAudioPlugin(const std::string& audioPlugin)
 {
-  //int layer = _audiodriver -> getLayerType();
+
+    int res;
+
   _debug("Set output audio plugin\n");
   _audiodriver -> setErrorMessage( -1 );
-  _audiodriver -> openDevice( _audiodriver -> getIndexIn(),
+  res = _audiodriver -> openDevice( _audiodriver -> getIndexIn(),
 			      _audiodriver -> getIndexOut(),
 			      _audiodriver -> getSampleRate(),
 			      _audiodriver -> getFrameSize(),
@@ -1286,7 +1288,7 @@ ManagerImpl::setOutputAudioPlugin(const std::string& audioPlugin)
   if( _audiodriver -> getErrorMessage() != -1)
     notifyErrClient( _audiodriver -> getErrorMessage() );
   // set config
-  setConfig( AUDIO , ALSA_PLUGIN , audioPlugin );
+  if(res)   setConfig( AUDIO , ALSA_PLUGIN , audioPlugin );
 }
 
 /**