]> git.0d.be Git - empathy.git/commitdiff
Add a new _ensure_account API
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sun, 23 Aug 2009 22:13:12 +0000 (23:13 +0100)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sun, 23 Aug 2009 22:21:56 +0000 (23:21 +0100)
Have one call which only gets the account if it exists and a different one
which creates the account on the given path when needed.

libempathy/empathy-account-manager.c
libempathy/empathy-account-manager.h
libempathy/empathy-dispatcher.c

index 2f0f1341594c6b4df3cc1dea507b8939f6a26a47..20facd37981bfc74040ae9e1e89a89cd97bedb06 100644 (file)
@@ -337,6 +337,15 @@ empathy_account_manager_get_account (EmpathyAccountManager *manager,
   const gchar *path)
 {
   EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
+
+  return g_hash_table_lookup (priv->accounts, path);
+}
+
+EmpathyAccount *
+empathy_account_manager_ensure_account (EmpathyAccountManager *manager,
+  const gchar *path)
+{
+  EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
   EmpathyAccount *account;
 
   account = g_hash_table_lookup (priv->accounts, path);
@@ -352,6 +361,7 @@ empathy_account_manager_get_account (EmpathyAccountManager *manager,
   return account;
 }
 
+
 static void
 account_manager_got_all_cb (TpProxy *proxy,
     GHashTable *properties,
@@ -378,7 +388,7 @@ account_manager_got_all_cb (TpProxy *proxy,
         {
           gchar *name = g_ptr_array_index (accounts, i);
 
-          empathy_account_manager_get_account (manager, name);
+          empathy_account_manager_ensure_account (manager, name);
         }
     }
 
@@ -397,7 +407,7 @@ account_validity_changed_cb (TpAccountManager *proxy,
   if (!valid)
     return;
 
-  empathy_account_manager_get_account (manager, path);
+  empathy_account_manager_ensure_account (manager, path);
 }
 
 static void
@@ -909,7 +919,7 @@ empathy_account_manager_created_cb (TpAccountManager *proxy,
       return;
     }
 
-  account = empathy_account_manager_get_account (manager, account_path);
+  account = empathy_account_manager_ensure_account (manager, account_path);
 
   g_hash_table_insert (priv->create_results, account, my_res);
 }
index e0ec937617b55f8a6b57124b6c5332f69b9b0490..25adfdbebce860020e99093fe4fc3776df120532 100644 (file)
@@ -69,6 +69,9 @@ int                     empathy_account_manager_get_count
 EmpathyAccount *        empathy_account_manager_get_account_for_connection
                                 (EmpathyAccountManager *manager,
                                  TpConnection          *connection);
+EmpathyAccount *        empathy_account_manager_ensure_account
+                                (EmpathyAccountManager *manager,
+                                 const gchar *unique_name);
 EmpathyAccount *        empathy_account_manager_get_account
                                 (EmpathyAccountManager *manager,
                                  const gchar *unique_name);
index 7e1492de846bc76000584cbfab24386c775ea7c2..465f23b75f2692dfca1acb237ce582b0e7965a53 100644 (file)
@@ -1800,7 +1800,7 @@ empathy_dispatcher_handle_channels (TpSvcClientHandler *self,
   EmpathyAccount *account;
   TpConnection *connection;
 
-  account = empathy_account_manager_get_account (priv->account_manager,
+  account = empathy_account_manager_ensure_account (priv->account_manager,
     account_path);
   g_assert (account != NULL);