From 22673170e090a0f897978bfe21aaa09fea7a0bc8 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Wed, 22 Aug 2012 19:17:28 -0400
Subject: [PATCH] #14881: Set audio playback mode for answer/hangup actions

---
 daemon/src/managerimpl.cpp | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp
index 31d8d3041c..001f6d4ac3 100644
--- a/daemon/src/managerimpl.cpp
+++ b/daemon/src/managerimpl.cpp
@@ -291,6 +291,10 @@ bool ManagerImpl::answerCall(const std::string& call_id)
     // If sflphone is ringing
     stopTone();
 
+    // set playback mode to VOICE
+    AudioLayer al = getAudioDriver();
+    if(al) al->setPlaybackMode(AudioLayer::VOICE);
+
     // store the current call id
     std::string current_call_id(getCurrentCallId());
 
@@ -354,6 +358,10 @@ void ManagerImpl::hangupCall(const std::string& callId)
 
     stopTone();
 
+    // set playback mode to NONE
+    AudioLayer al = getAudioDriver();
+    if(al) al->setPlaybackMode(AudioLayer::NONE);
+
     /* Broadcast a signal over DBus */
     DEBUG("Send DBUS call state change (HUNGUP) for id %s", callId.c_str());
     dbus_.getCallManager()->callStateChanged(callId, "HUNGUP");
@@ -1520,9 +1528,14 @@ void ManagerImpl::peerAnsweredCall(const std::string& id)
     DEBUG("Peer answered call %s", id.c_str());
 
     // The if statement is usefull only if we sent two calls at the same time.
-    if (isCurrentCall(id))
+    if (isCurrentCall(id)) {
         stopTone();
 
+        // set playback mode to VOICE
+        AudioLayer al = getAudioDriver();
+        if(al) al->setPlaybackMode(AudioLayer::VOICE);
+    }
+
     // Connect audio streams
     addStream(id);
 
@@ -1559,6 +1572,10 @@ void ManagerImpl::peerHungupCall(const std::string& call_id)
     } else if (isCurrentCall(call_id)) {
         stopTone();
         unsetCurrentCall();
+
+        // set playback mode to NONE
+        AudioLayer al = getAudioDriver();
+        if(al) al->setPlaybackMode(AudioLayer::NONE);
     }
 
     /* Direct IP to IP call */
-- 
GitLab