[ekiga/gnome-2-26] Add workaround for Busy Here bug



commit 3b636f02e80e82b2422ace1a6a02aa7b15fcd2ef
Author: Eugen Dedu <Eugen Dedu pu-pm univ-fcomte fr>
Date:   Sat May 29 13:42:28 2010 +0200

    Add workaround for Busy Here bug
    
    When a call is received while we are in communication, from then on
    ekiga will reply Busy Here to all incoming calls.
    
    This commit is just a hack, waiting a proper fix (in opal or ekiga).
    
    This commit also introduces another smaller bug: if you receive a call
    while in a call, Ekiga will no longer show Missed call.

 lib/engine/components/opal/opal-call.cpp |    6 ++++++
 lib/engine/components/opal/opal-call.h   |    1 +
 2 files changed, 7 insertions(+), 0 deletions(-)
---
diff --git a/lib/engine/components/opal/opal-call.cpp b/lib/engine/components/opal/opal-call.cpp
index 32bb512..6d4c8d0 100644
--- a/lib/engine/components/opal/opal-call.cpp
+++ b/lib/engine/components/opal/opal-call.cpp
@@ -387,6 +387,11 @@ Opal::Call::OnCleared ()
 
   NoAnswerTimer.Stop (false);
 
+  // hack for busy here bug: if we receive a call while in communication, then wait for 1.5 secs, afterwards return.  New smaller bug appears: we are not informed about missed call anymore in this case
+  for (int i=0 ; i<15 && !call_setup ; i++)
+    PThread::Current ()->Sleep (100);
+  if (this != busy_here_hack)
+    return;
   // TODO find a better way than that
   while (!call_setup)
     PThread::Current ()->Sleep (100);
@@ -500,6 +505,7 @@ Opal::Call::OnSetUp (OpalConnection & connection)
   parse_info (connection);
 
   Ekiga::Runtime::emit_signal_in_main (setup);
+  busy_here_hack = this;
   call_setup = true;
 
   cleared.connect (sigc::mem_fun (this, &Opal::Call::on_cleared_call));
diff --git a/lib/engine/components/opal/opal-call.h b/lib/engine/components/opal/opal-call.h
index 9b92f9f..7491f04 100644
--- a/lib/engine/components/opal/opal-call.h
+++ b/lib/engine/components/opal/opal-call.h
@@ -225,6 +225,7 @@ private:
     std::string remote_uri;
     std::string remote_application;
 
+    void *busy_here_hack;  // this variable is a workaround for Busy Here bug
     bool call_setup;
     bool outgoing;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]