ekiga r6774 - in trunk: . src/endpoints
- From: dsandras svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6774 - in trunk: . src/endpoints
- Date: Mon, 1 Sep 2008 17:49:15 +0000 (UTC)
Author: dsandras
Date: Mon Sep 1 17:49:15 2008
New Revision: 6774
URL: http://svn.gnome.org/viewvc/ekiga?rev=6774&view=rev
Log:
Make sure we execute the Opal callback for cleared calls only when
the missed and cleared signals have been handled. Otherwise, the
Ekiga::Call instance they are refering too could be corrupted.
Modified:
trunk/ChangeLog
trunk/src/endpoints/opal-call.cpp
trunk/src/endpoints/opal-call.h
Modified: trunk/src/endpoints/opal-call.cpp
==============================================================================
--- trunk/src/endpoints/opal-call.cpp (original)
+++ trunk/src/endpoints/opal-call.cpp Mon Sep 1 17:49:15 2008
@@ -54,7 +54,6 @@
using namespace Opal;
-
Opal::Call::Call (OpalManager & _manager, Ekiga::ServiceCore & _core)
: OpalCall (_manager), Ekiga::Call (), core (_core),
runtime (*dynamic_cast<Ekiga::Runtime*>(core.get ("runtime"))),
@@ -368,8 +367,6 @@
NoAnswerTimer.Stop (false);
- OpalCall::OnCleared ();
-
// TODO find a better way than that
while (!call_setup)
PThread::Current ()->Sleep (100);
@@ -480,14 +477,15 @@
PBoolean
Opal::Call::OnSetUp (OpalConnection & connection)
{
- bool res = OpalCall::OnSetUp (connection);
-
parse_info (connection);
runtime.run_in_main (setup.make_slot ());
call_setup = true;
- return res;
+ cleared.connect (sigc::mem_fun (this, &Opal::Call::on_cleared_call));
+ missed.connect (sigc::mem_fun (this, &Opal::Call::on_missed_call));
+
+ return OpalCall::OnSetUp (connection);
}
@@ -645,3 +643,17 @@
Clear (OpalConnection::EndedByNoAnswer);
}
}
+
+
+void
+Opal::Call::on_cleared_call (std::string /*reason*/)
+{
+ OpalCall::OnCleared ();
+}
+
+
+void
+Opal::Call::on_missed_call ()
+{
+ OpalCall::OnCleared ();
+}
Modified: trunk/src/endpoints/opal-call.h
==============================================================================
--- trunk/src/endpoints/opal-call.h (original)
+++ trunk/src/endpoints/opal-call.h Mon Sep 1 17:49:15 2008
@@ -53,7 +53,8 @@
class Call
: public OpalCall,
- public Ekiga::Call
+ public Ekiga::Call,
+ public sigc::trackable
{
public:
@@ -248,6 +249,10 @@
unsigned too_late_v;
unsigned out_of_order_v;
unsigned total_v;
+
+private:
+ void on_cleared_call (std::string);
+ void on_missed_call ();
};
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]