From 918100d57fed59c19e3295292fb0dd3bf5db8e53 Mon Sep 17 00:00:00 2001
From: jpbl <jpbl>
Date: Wed, 28 Sep 2005 14:33:01 +0000
Subject: [PATCH] fixed the lock problem

---
 src/gui/official/PhoneLine.cpp            | 14 ++++++++------
 src/gui/official/PhoneLineManagerImpl.cpp | 15 ++++++++-------
 src/gui/official/sflphone.pro             |  2 +-
 3 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/gui/official/PhoneLine.cpp b/src/gui/official/PhoneLine.cpp
index 6a5ec07a5c..56d2a7c031 100644
--- a/src/gui/official/PhoneLine.cpp
+++ b/src/gui/official/PhoneLine.cpp
@@ -106,12 +106,14 @@ PhoneLine::sendKey(Qt::Key c)
     break;
 
   default:
-    if(!mCall) {
-      mSession.playDtmf(c);
-      mBuffer += QString(c).toStdString();
-    }
-    else {
-      mCall->sendDtmf(c);
+    if (QChar(c).isDigit()) {
+      if(!mCall) {
+	mSession.playDtmf(c);
+	mBuffer += QString(c).toStdString();
+      }
+      else {
+	mCall->sendDtmf(c);
+      }
     }
   }
 }
diff --git a/src/gui/official/PhoneLineManagerImpl.cpp b/src/gui/official/PhoneLineManagerImpl.cpp
index 9ab7fe04af..b1eb6cffdf 100644
--- a/src/gui/official/PhoneLineManagerImpl.cpp
+++ b/src/gui/official/PhoneLineManagerImpl.cpp
@@ -41,13 +41,16 @@ PhoneLineManagerImpl::getNextAvailableLine()
   PhoneLine *selectedLine = NULL;
 
   QMutexLocker guard(&mPhoneLinesMutex);
-  QMutexLocker guard2(&mCurrentLineMutex);
+  mCurrentLineMutex.lock();
+  PhoneLine *current = mCurrentLine;
+  mCurrentLineMutex.unlock();
+    
 
   unsigned int i = 0;
   while(i < mPhoneLines.size() && !selectedLine) {
     mPhoneLines[i]->lock();
     if(mPhoneLines[i]->isAvailable() && 
-       mPhoneLines[i] != mCurrentLine) {
+       mPhoneLines[i] != current) {
       selectedLine = mPhoneLines[i];
     }
     else {
@@ -75,11 +78,9 @@ PhoneLineManagerImpl::selectNextAvailableLine()
     mCurrentLine = selectedLine;
     
     // select current line.
-    {
-      PhoneLineLocker guard(mCurrentLine);
-      mCurrentLine->select();
-    }
-    
+    // We don't need to lock it, since it is
+    // done at the top.
+    selectedLine->select();
   }
 
   return selectedLine;
diff --git a/src/gui/official/sflphone.pro b/src/gui/official/sflphone.pro
index 07ca2614f1..b66df84ce5 100644
--- a/src/gui/official/sflphone.pro
+++ b/src/gui/official/sflphone.pro
@@ -6,7 +6,7 @@ TEMPLATE = app
 TARGET += 
 DEPENDPATH += .
 INCLUDEPATH += .
-#CONFIG += debug
+CONFIG += debug
 
 # Input
 HEADERS += Account.hpp \
-- 
GitLab