[ekiga] Fixed crash in GmRefCounted::unreference
- From: Eugen Dedu <ededu src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [ekiga] Fixed crash in GmRefCounted::unreference
- Date: Sun, 16 Aug 2009 20:25:41 +0000 (UTC)
commit 52ed7b2779d6536f8613a7d98ecbe5e9f582ff6e
Author: Julien Puydt <jpuydt gnome org>
Date: Sun Aug 16 22:24:46 2009 +0200
Fixed crash in GmRefCounted::unreference
Fixes bug #588529.
lib/engine/components/opal/opal-call-manager.cpp | 23 ++++++++++++++-------
lib/engine/components/opal/opal-call-manager.h | 2 +
2 files changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/lib/engine/components/opal/opal-call-manager.cpp b/lib/engine/components/opal/opal-call-manager.cpp
index 816445c..9960276 100644
--- a/lib/engine/components/opal/opal-call-manager.cpp
+++ b/lib/engine/components/opal/opal-call-manager.cpp
@@ -43,7 +43,6 @@
#include "pcss-endpoint.h"
#include "call-core.h"
-#include "opal-call.h"
#include "opal-codec-description.h"
#include "videoinput-info.h"
@@ -629,20 +628,28 @@ void CallManager::get_video_options (CallManager::VideoOptions & options) const
}
}
+void
+CallManager::create_call_in_main (Opal::Call* call)
+{
+ gmref_ptr<Ekiga::CallCore> call_core = core.get ("call-core");
+
+ call_core->add_call (gmref_ptr<Opal::Call>(call),
+ gmref_ptr<CallManager>(this));
+}
OpalCall *CallManager::CreateCall (void *uri)
{
- gmref_ptr<Ekiga::CallCore> call_core = core.get ("call-core"); // FIXME: threaded?
-
- gmref_ptr<Opal::Call> call;
+ Opal::Call* call = 0;
if (uri != 0)
- call = gmref_ptr<Opal::Call> (new Opal::Call (*this, core, (const char *) uri));
+ call = new Opal::Call (*this, core, (const char *) uri);
else
- call = gmref_ptr<Opal::Call> (new Opal::Call (*this, core, ""));
- call_core->add_call (call, gmref_ptr<CallManager>(this));
+ call = new Opal::Call (*this, core, "");
+
+ Ekiga::Runtime::run_in_main (sigc::bind (sigc::mem_fun(this, &CallManager::create_call_in_main),
+ call));
- return call.get ();
+ return call;
}
diff --git a/lib/engine/components/opal/opal-call-manager.h b/lib/engine/components/opal/opal-call-manager.h
index 9f61c1a..58aa834 100644
--- a/lib/engine/components/opal/opal-call-manager.h
+++ b/lib/engine/components/opal/opal-call-manager.h
@@ -56,6 +56,7 @@
#include "presence-core.h"
#include "call-manager.h"
#include "call.h"
+#include "opal-call.h"
#include <sigc++/sigc++.h>
#include <string>
@@ -155,6 +156,7 @@ public:
void get_video_options (VideoOptions & options) const;
private:
+ void create_call_in_main (Opal::Call* call);
OpalCall *CreateCall (void *uri);
void DestroyCall (OpalCall *);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]