aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-chatroom-manager.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-08-18 17:31:10 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-08-18 18:15:06 +0800
commit9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416 (patch)
tree4e4cfd5b8f801acff74edfdd5072f45d7038e00b /libempathy/empathy-chatroom-manager.c
parent7fbf3e0c200b0a3c5086fdce0cc19afe48c429bb (diff)
downloadgsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar.gz
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar.bz2
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar.lz
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar.xz
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.tar.zst
gsoc2013-empathy-9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416.zip
Port to new tp-glib client factory
- EmpathyChannelFactory has been changed to EmpathyClientFactory and inherit from TpAutomaticClientFactory. - We now always use the _with_am variant of TpSimple* constructors - We define our own factory as default. - Replace empathy_get_account_for_connection() by tp_connection_get_account() - The factory is passed to EmpathyTpChat and TpyCallChannel - Use tp_simple_client_factory_ensure_account() instead of tp_account_manager_ensure_account(). - Rely on the factory to prepare connection features. This should ensure that all the TpProxy and TpContact objects created in Empathy are shared and use EmpathyClientFactory. https://bugzilla.gnome.org/show_bug.cgi?id=655799
Diffstat (limited to 'libempathy/empathy-chatroom-manager.c')
-rw-r--r--libempathy/empathy-chatroom-manager.c39
1 files changed, 13 insertions, 26 deletions
diff --git a/libempathy/empathy-chatroom-manager.c b/libempathy/empathy-chatroom-manager.c
index 2be475b3a..5e1c0bb45 100644
--- a/libempathy/empathy-chatroom-manager.c
+++ b/libempathy/empathy-chatroom-manager.c
@@ -35,9 +35,9 @@
#include <telepathy-glib/simple-observer.h>
#include <telepathy-glib/util.h>
+#include "empathy-client-factory.h"
#include "empathy-tp-chat.h"
#include "empathy-chatroom-manager.h"
-#include "empathy-channel-factory.h"
#include "empathy-utils.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
@@ -220,6 +220,8 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
gchar *account_id;
gboolean auto_connect;
gboolean always_urgent;
+ EmpathyClientFactory *factory;
+ GError *error = NULL;
priv = GET_PRIV (manager);
@@ -270,10 +272,17 @@ chatroom_manager_parse_chatroom (EmpathyChatroomManager *manager,
xmlFree (str);
}
- account = tp_account_manager_ensure_account (priv->account_manager,
- account_id);
+ factory = empathy_client_factory_dup ();
+
+ account = tp_simple_client_factory_ensure_account (
+ TP_SIMPLE_CLIENT_FACTORY (factory), account_id, NULL, &error);
+ g_object_unref (factory);
+
if (account == NULL)
{
+ DEBUG ("Failed to create account: %s", error->message);
+ g_error_free (error);
+
g_free (name);
g_free (room);
g_free (account_id);
@@ -545,8 +554,6 @@ empathy_chatroom_manager_constructor (GType type,
EmpathyChatroomManager *self;
EmpathyChatroomManagerPriv *priv;
GError *error = NULL;
- TpDBusDaemon *dbus;
- EmpathyChannelFactory *factory;
if (chatroom_manager_singleton != NULL)
return g_object_ref (chatroom_manager_singleton);
@@ -581,21 +588,10 @@ empathy_chatroom_manager_constructor (GType type,
g_free (dir);
}
- dbus = tp_dbus_daemon_dup (&error);
- if (dbus == NULL)
- {
- g_warning ("Failed to get TpDBusDaemon: %s", error->message);
-
- g_error_free (error);
- return obj;
- }
-
/* Setup a room observer */
- priv->observer = tp_simple_observer_new (dbus, TRUE,
+ priv->observer = tp_simple_observer_new_with_am (priv->account_manager, TRUE,
"Empathy.ChatroomManager", TRUE, observe_channels_cb, self, NULL);
- g_object_unref (dbus);
-
tp_base_client_take_observer_filter (priv->observer, tp_asv_new (
TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
TP_IFACE_CHANNEL_TYPE_TEXT,
@@ -603,14 +599,6 @@ empathy_chatroom_manager_constructor (GType type,
TP_HANDLE_TYPE_ROOM,
NULL));
- tp_base_client_add_connection_features_varargs (priv->observer,
- TP_CONNECTION_FEATURE_CAPABILITIES, NULL);
-
- factory = empathy_channel_factory_dup ();
-
- tp_base_client_set_channel_factory (priv->observer,
- TP_CLIENT_CHANNEL_FACTORY (factory));
-
if (!tp_base_client_register (priv->observer, &error))
{
g_critical ("Failed to register Observer: %s", error->message);
@@ -618,7 +606,6 @@ empathy_chatroom_manager_constructor (GType type,
g_error_free (error);
}
- g_object_unref (factory);
return obj;
}