diff --git a/sflphone-gtk/src/audioconf.c b/sflphone-gtk/src/audioconf.c
index d71b4a2bd8525b1d47e0c532c870ac3551683222..d7b20f282fcfab2da6a407aaaa9fc9a2ff1e570a 100644
--- a/sflphone-gtk/src/audioconf.c
+++ b/sflphone-gtk/src/audioconf.c
@@ -604,6 +604,7 @@ select_audio_manager( void )
   
   if( !SHOW_ALSA_CONF && !gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ) )
   {
+    dbus_set_audio_manager( ALSA );
     g_print(" display alsa conf panel\n");
     alsabox = alsa_box();
     gtk_container_add( GTK_CONTAINER(alsa_conf ) , alsabox);
@@ -611,13 +612,14 @@ select_audio_manager( void )
   }
   else if( SHOW_ALSA_CONF && gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) ))
   {
+    dbus_set_audio_manager( PULSEAUDIO );
     g_print(" remove alsa conf panel\n");
     gtk_container_remove( GTK_CONTAINER(alsa_conf) , alsabox );
   }
   else
     g_print("alsa conf panel...nothing\n");
 
-  gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) )? dbus_set_audio_manager( PULSEAUDIO ):dbus_set_audio_manager( ALSA );
+  //gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(pulse) )? dbus_set_audio_manager( PULSEAUDIO ):dbus_set_audio_manager( ALSA );
 }
 
 GtkWidget* api_box()
diff --git a/src/audio/pulselayer.cpp b/src/audio/pulselayer.cpp
index aeedc33a4badc4f508140493a826c27bee8209a3..a2da80d467f095d9cfbd318e81349f05292ab8a2 100644
--- a/src/audio/pulselayer.cpp
+++ b/src/audio/pulselayer.cpp
@@ -52,6 +52,7 @@ PulseLayer::closeLayer( void )
   record->disconnect();
   pa_context_disconnect( context ); 
   pa_context_unref( context );
+  sleep(2);
 }
 
   void
diff --git a/src/useragent.cpp b/src/useragent.cpp
index cc9d8c1e5adf351cb2e26c8cecbe7ac1cc02b87b..75cf6418c12154c405f1152219364fa7be4b11db 100644
--- a/src/useragent.cpp
+++ b/src/useragent.cpp
@@ -368,7 +368,7 @@ bool UserAgent::addAccount(AccountID id, pjsip_regc **regc2, const std::string&
     pj_str_t aor;
     pj_str_t contact;
 
-    pj_mutex_lock(_mutex);
+    //pj_mutex_lock(_mutex);
     std::string tmp;
 
     SIPAccount *account;
@@ -394,6 +394,7 @@ bool UserAgent::addAccount(AccountID id, pjsip_regc **regc2, const std::string&
     status = pjsip_regc_init(regc, &svr, &aor, &aor, 1, &contact, 600); //timeout);
     if (status != PJ_SUCCESS) {
         _debug("UserAgent: Unable to initialize regc. %d\n", status); //, regc->str_srv_url.ptr);
+        //pj_mutex_unlock(_mutex);
         return false;
     }
 
@@ -418,12 +419,14 @@ bool UserAgent::addAccount(AccountID id, pjsip_regc **regc2, const std::string&
     status = pjsip_regc_register(regc, PJ_TRUE, &tdata);
     if (status != PJ_SUCCESS) {
         _debug("UserAgent: Unable to register regc.\n");
+        //pj_mutex_unlock(_mutex);
         return false;
     }
 
     status = pjsip_regc_send(regc, tdata);
     if (status != PJ_SUCCESS) {
         _debug("UserAgent: Unable to send regc request.\n");
+        pj_mutex_unlock(_mutex);
         return false;
     }
 
@@ -434,7 +437,7 @@ bool UserAgent::addAccount(AccountID id, pjsip_regc **regc2, const std::string&
     // associate regc with account
     *regc2 = regc;
     
-    pj_mutex_unlock(_mutex);
+    //pj_mutex_unlock(_mutex);
 
     return true;
 }
@@ -444,29 +447,29 @@ bool UserAgent::removeAccount(pjsip_regc *regc)
     pj_status_t status = 0;
     pjsip_tx_data *tdata = NULL;
     
-    pj_mutex_lock(_mutex);
+    //pj_mutex_lock(_mutex);
 
     if(regc) {
         status = pjsip_regc_unregister(regc, &tdata);
         if(status != PJ_SUCCESS) {
             _debug("UserAgent: Unable to unregister regc.\n");
-            pj_mutex_unlock(_mutex);
+            //pj_mutex_unlock(_mutex);
             return false;
         }
         
         status = pjsip_regc_send( regc, tdata );
         if(status != PJ_SUCCESS) {
             _debug("UserAgent: Unable to send regc request.\n");
-            pj_mutex_unlock(_mutex);
+            //pj_mutex_unlock(_mutex);
             return false;
         }
     } else {
         _debug("UserAgent: regc is null!\n");
-        pj_mutex_unlock(_mutex);
+        //pj_mutex_unlock(_mutex);
         return false;
     }
     
-    pj_mutex_unlock(_mutex);
+    //pj_mutex_unlock(_mutex);
     return true;
 }