diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-08-18 17:31:10 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-08-18 18:15:06 +0800 |
commit | 9ddd25f8589ae0cd5ec8e09c4c012e4ccac6a416 (patch) | |
tree | 4e4cfd5b8f801acff74edfdd5072f45d7038e00b /libempathy/empathy-chatroom-manager.c | |
parent | 7fbf3e0c200b0a3c5086fdce0cc19afe48c429bb (diff) | |
download | gsoc2013-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.c | 39 |
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; } |