ekiga r7598 - trunk/lib/engine/components/opal



Author: jpuydt
Date: Fri Jan 23 20:04:41 2009
New Revision: 7598
URL: http://svn.gnome.org/viewvc/ekiga?rev=7598&view=rev

Log:
Modified the way the opal bank is initialized : it now gets added right at the start... but waits for the STUN test before enabling the accounts

Modified:
   trunk/lib/engine/components/opal/opal-account.cpp
   trunk/lib/engine/components/opal/opal-bank.cpp
   trunk/lib/engine/components/opal/opal-bank.h
   trunk/lib/engine/components/opal/opal-main.cpp

Modified: trunk/lib/engine/components/opal/opal-account.cpp
==============================================================================
--- trunk/lib/engine/components/opal/opal-account.cpp	(original)
+++ trunk/lib/engine/components/opal/opal-account.cpp	Fri Jan 23 20:04:41 2009
@@ -113,9 +113,6 @@
     i++;
   }
 
-  if (enabled)
-    enable ();
-
   if (host == "ekiga.net")
     type = Account::Ekiga;
   else if (host == "sip.diamondcard.us")

Modified: trunk/lib/engine/components/opal/opal-bank.cpp
==============================================================================
--- trunk/lib/engine/components/opal/opal-bank.cpp	(original)
+++ trunk/lib/engine/components/opal/opal-bank.cpp	Fri Jan 23 20:04:41 2009
@@ -195,3 +195,15 @@
   Opal::Account *account = new Opal::Account (core, t, name, host, user, auth_user, password, enabled, timeout);
   add_account (*account);
 }
+
+void
+Opal::Bank::stun_ready ()
+{
+  for (iterator iter = begin ();
+       iter != end ();
+       ++iter) {
+
+    if (iter->is_enabled ())
+      iter->enable ();
+  }
+}

Modified: trunk/lib/engine/components/opal/opal-bank.h
==============================================================================
--- trunk/lib/engine/components/opal/opal-bank.h	(original)
+++ trunk/lib/engine/components/opal/opal-bank.h	Fri Jan 23 20:04:41 2009
@@ -70,6 +70,8 @@
                       std::string username = "",
                       std::string password = "");
 
+    void stun_ready ();
+
 private:
     void on_new_account_form_submitted (bool submitted,
 					Ekiga::Form& form,

Modified: trunk/lib/engine/components/opal/opal-main.cpp
==============================================================================
--- trunk/lib/engine/components/opal/opal-main.cpp	(original)
+++ trunk/lib/engine/components/opal/opal-main.cpp	Fri Jan 23 20:04:41 2009
@@ -87,43 +87,6 @@
 
 using namespace Opal;
 
-static void
-on_call_manager_ready_cb (Ekiga::ServiceCore& core)
-{
-  gmref_ptr<Ekiga::AccountCore> account_core = core.get ("account-core");
-  gmref_ptr<Ekiga::ContactCore> contact_core = core.get ("contact-core");
-  gmref_ptr<Ekiga::PresenceCore> presence_core = core.get ("presence-core");
-  gmref_ptr<CallManager> call_manager = core.get ("opal-component");
-  gmref_ptr<Opal::Bank> bank (new Bank (core));
-
-#ifdef HAVE_SIP
-  gmref_ptr<Sip::EndPoint> sip_manager = call_manager->get_protocol_manager ("sip");
-#endif
-#ifdef HAVE_H323
-  gmref_ptr<H323::EndPoint> h323_manager = call_manager->get_protocol_manager ("h323");
-#endif
-
-  account_core->add_bank (*bank);
-  core.add (bank);
-
-#ifdef HAVE_SIP
-  contact_core->add_contact_decorator (sip_manager);
-#endif
-#ifdef HAVE_H323
-  contact_core->add_contact_decorator (h323_manager);
-#endif
-
-#ifdef HAVE_SIP
-  presence_core->add_presentity_decorator (sip_manager);
-  presence_core->add_presence_fetcher (sip_manager);
-  presence_core->add_presence_publisher (sip_manager);
-#endif
-#ifdef HAVE_H323
-  presence_core->add_presentity_decorator (h323_manager);
-#endif
-  presence_core->add_supported_uri (sigc::ptr_fun (is_supported_address)); //FIXME
-}
-
 struct OPALSpark: public Ekiga::Spark
 {
   OPALSpark (): result(false)
@@ -149,6 +112,10 @@
       gmref_ptr<Sip::EndPoint> sip_manager (new Sip::EndPoint (*call_manager, core, sip_port));
       call_manager->add_protocol_manager (sip_manager);
       account_core->add_account_subscriber (*sip_manager);
+      contact_core->add_contact_decorator (sip_manager);
+      presence_core->add_presentity_decorator (sip_manager);
+      presence_core->add_presence_fetcher (sip_manager);
+      presence_core->add_presence_publisher (sip_manager);
 #endif
 
 #ifdef HAVE_H323
@@ -156,6 +123,8 @@
       gmref_ptr<H323::EndPoint> h323_manager (new H323::EndPoint (*call_manager, core, h323_port));
       call_manager->add_protocol_manager (h323_manager);
       account_core->add_account_subscriber (*h323_manager);
+      contact_core->add_contact_decorator (h323_manager);
+      presence_core->add_presentity_decorator (h323_manager);
 #endif
 
       call_core->add_manager (call_manager);
@@ -164,10 +133,14 @@
 
       new ConfBridge (*call_manager); // FIXME: isn't that leaked!?
 
-      // Add the bank of accounts when the CallManager is ready
-      call_manager->ready.connect (sigc::bind (sigc::ptr_fun (on_call_manager_ready_cb), core));
-
       call_manager->start ();
+      presence_core->add_supported_uri (sigc::ptr_fun (is_supported_address)); //FIXME
+
+      gmref_ptr<Opal::Bank> bank (new Bank (core));
+
+      account_core->add_bank (*bank);
+      core.add (bank);
+      call_manager->ready.connect (sigc::mem_fun (*bank, &Opal::Bank::stun_ready));
 
       OpalLinkerHacks::loadOpalVideoInput = 1;
       OpalLinkerHacks::loadOpalVideoOutput = 1;



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