]> git.0d.be Git - empathy.git/commitdiff
replace empathy_connection_managers_call_when_ready by prepare_{async_finish} functions
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 22 Jan 2010 12:35:35 +0000 (12:35 +0000)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 22 Jan 2010 12:35:35 +0000 (12:35 +0000)
libempathy-gtk/empathy-protocol-chooser.c
libempathy/empathy-connection-managers.c
libempathy/empathy-connection-managers.h
src/empathy-import-widget.c
src/empathy.c

index 0dc60d4ebd12ce68b5ffb2262637b02cfa4724e3..86f6af57bba1fd50e330c3fd96cef84e0adeb675 100644 (file)
@@ -253,13 +253,14 @@ protocol_chooser_add_cms_list (EmpathyProtocolChooser *protocol_chooser,
 }
 
 static void
 }
 
 static void
-protocol_chooser_cms_ready_cb (EmpathyConnectionManagers *cms,
-    const GError *error,
+protocol_chooser_cms_prepare_cb (GObject *source,
+    GAsyncResult *result,
     gpointer user_data)
 {
     gpointer user_data)
 {
+  EmpathyConnectionManagers *cms = EMPATHY_CONNECTION_MANAGERS (source);
   EmpathyProtocolChooser *protocol_chooser = user_data;
 
   EmpathyProtocolChooser *protocol_chooser = user_data;
 
-  if (error != NULL)
+  if (!empathy_connection_managers_prepare_finish (cms, result, NULL))
     return;
 
   protocol_chooser_add_cms_list (protocol_chooser,
     return;
 
   protocol_chooser_add_cms_list (protocol_chooser,
@@ -309,8 +310,8 @@ protocol_chooser_constructed (GObject *object)
       "text", COL_LABEL,
       NULL);
 
       "text", COL_LABEL,
       NULL);
 
-  empathy_connection_managers_call_when_ready (priv->cms,
-      protocol_chooser_cms_ready_cb, protocol_chooser);
+  empathy_connection_managers_prepare_async (priv->cms,
+      protocol_chooser_cms_prepare_cb, protocol_chooser);
 
   if (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->constructed)
     G_OBJECT_CLASS
 
   if (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->constructed)
     G_OBJECT_CLASS
index 7085b507bab2d4a481ac87ebeba99c2a1cd1f111..9cda1a331a3ad2cba775cc34e7a10e6690fb4cc5 100644 (file)
@@ -292,65 +292,51 @@ empathy_connection_managers_get_cms_num (EmpathyConnectionManagers *self)
   return g_list_length (priv->cms);
 }
 
   return g_list_length (priv->cms);
 }
 
-typedef struct
-{
-  EmpathyConnectionManagers *self;
-  EmpathyConnectionManagersWhenReadyCb callback;
-  gpointer user_data;
-  guint ready_id;
-} CallWhenReadyContext;
-
 static void
 static void
-call_when_ready_ctx_free (CallWhenReadyContext *ctx)
-{
-  g_signal_handler_disconnect (ctx->self, ctx->ready_id);
-  g_object_unref (ctx->self);
-  g_slice_free (CallWhenReadyContext, ctx);
-}
-
-static void
-cwr_ready (EmpathyConnectionManagers *self,
+notify_ready_cb (EmpathyConnectionManagers *self,
     GParamSpec *spec,
     GParamSpec *spec,
-    CallWhenReadyContext *ctx)
+    GSimpleAsyncResult *result)
 {
 {
-  g_assert (ctx->callback != NULL);
-
-  ctx->callback (self, NULL, ctx->user_data);
-
-  call_when_ready_ctx_free (ctx);
+  g_simple_async_result_complete_in_idle (result);
+  g_object_unref (result);
 }
 
 }
 
-static CallWhenReadyContext *
-call_when_ready_ctx_new (EmpathyConnectionManagers *self,
-    EmpathyConnectionManagersWhenReadyCb callback,
+void
+empathy_connection_managers_prepare_async (
+    EmpathyConnectionManagers *self,
+    GAsyncReadyCallback callback,
     gpointer user_data)
 {
     gpointer user_data)
 {
-  CallWhenReadyContext *ctx = g_slice_new (CallWhenReadyContext);
+  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
+  GSimpleAsyncResult *result;
 
 
-  ctx->self = g_object_ref (self);
-  ctx->callback = callback;
-  ctx->user_data = user_data;
+  result = g_simple_async_result_new (G_OBJECT (managers),
+      callback, user_data, empathy_connection_managers_prepare_finish);
 
 
-  ctx->ready_id = g_signal_connect (self, "notify::ready",
-      G_CALLBACK (cwr_ready), ctx);
+  if (priv->ready)
+    {
+      g_simple_async_result_complete_in_idle (result);
+      g_object_unref (result);
+      return;
+    }
 
 
-  return ctx;
+  g_signal_connect (self, "notify::ready", G_CALLBACK (notify_ready_cb),
+      result);
 }
 
 }
 
-void
-empathy_connection_managers_call_when_ready (
+gboolean
+empathy_connection_managers_prepare_finish (
     EmpathyConnectionManagers *self,
     EmpathyConnectionManagers *self,
-    EmpathyConnectionManagersWhenReadyCb callback,
-    gpointer user_data)
+    GAsyncResult *result,
+    GError **error)
 {
 {
-  EmpathyConnectionManagersPriv *priv = GET_PRIV (self);
+  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result);
 
 
-  if (priv->ready)
-    {
-      callback (self, NULL, user_data);
-    }
-  else
-    {
-      call_when_ready_ctx_new (self, callback, user_data);
-    }
+  g_return_val_if_fail (g_simple_async_result_is_valid (result,
+          G_OBJECT (self), empathy_connection_managers_prepare_finish), FALSE);
+
+  if (g_simple_async_result_propagate_error (simple, error))
+    return FALSE;
+
+  return TRUE;
 }
 }
index 956f243157f6e06e6ef8cb9beb45848478a916f9..14833734c7a9e4a0d155a48fe48dcf30660a713f 100644 (file)
@@ -22,6 +22,7 @@
 #define __EMPATHY_CONNECTION_MANAGERS_H__
 
 #include <glib-object.h>
 #define __EMPATHY_CONNECTION_MANAGERS_H__
 
 #include <glib-object.h>
+#include <gio/gio.h>
 
 #include <telepathy-glib/connection-manager.h>
 
 
 #include <telepathy-glib/connection-manager.h>
 
@@ -72,15 +73,15 @@ guint empathy_connection_managers_get_cms_num
 TpConnectionManager *empathy_connection_managers_get_cm (
   EmpathyConnectionManagers *managers, const gchar *cm);
 
 TpConnectionManager *empathy_connection_managers_get_cm (
   EmpathyConnectionManagers *managers, const gchar *cm);
 
-typedef void (*EmpathyConnectionManagersWhenReadyCb) (
+void empathy_connection_managers_prepare_async (
     EmpathyConnectionManagers *managers,
     EmpathyConnectionManagers *managers,
-    const GError *error,
+    GAsyncReadyCallback callback,
     gpointer user_data);
 
     gpointer user_data);
 
-void empathy_connection_managers_call_when_ready (
+gboolean empathy_connection_managers_prepare_finish (
     EmpathyConnectionManagers *managers,
     EmpathyConnectionManagers *managers,
-    EmpathyConnectionManagersWhenReadyCb callback,
-    gpointer user_data);
+    GAsyncResult *result,
+    GError **error);
 
 G_END_DECLS
 
 
 G_END_DECLS
 
index 915db533e86c10c01b8ba6a3a933e554c80537a6..a5bc0ef24f8f5e55afa5dac3a295a2a97cc00a31 100644 (file)
@@ -334,13 +334,14 @@ import_widget_set_up_account_list (EmpathyImportWidget *self)
 }
 
 static void
 }
 
 static void
-import_widget_cms_ready_cb (EmpathyConnectionManagers *cms,
-    const GError *error,
+import_widget_cms_prepare_cb (GObject *source,
+    GAsyncResult *result,
     gpointer user_data)
 {
   EmpathyImportWidget *self = user_data;
 
     gpointer user_data)
 {
   EmpathyImportWidget *self = user_data;
 
-  if (error != NULL)
+  if (!empathy_connection_managers_prepare_finish (
+        EMPATHY_CONNECTION_MANAGERS (source), result, NULL))
     return;
 
   import_widget_set_up_account_list (self);
     return;
 
   import_widget_set_up_account_list (self);
@@ -442,8 +443,8 @@ do_constructed (GObject *obj)
   g_signal_connect (priv->vbox, "destroy",
       G_CALLBACK (import_widget_destroy_cb), self);
 
   g_signal_connect (priv->vbox, "destroy",
       G_CALLBACK (import_widget_destroy_cb), self);
 
-  empathy_connection_managers_call_when_ready (priv->cms,
-      import_widget_cms_ready_cb, self);
+  empathy_connection_managers_prepare_async (priv->cms,
+      import_widget_cms_prepare_cb, self);
 }
 
 static void
 }
 
 static void
index 5647789c89fa598f37bedcb7c1ba82d1b8f79562..7bdea3be9d25ea1e08fc122851eb22b4a6af0ae2 100644 (file)
@@ -201,11 +201,13 @@ maybe_show_account_assistant (void)
 }
 
 static void
 }
 
 static void
-connection_managers_ready_cb (EmpathyConnectionManagers *managers,
-    const GError *error,
+connection_managers_prepare_cb (GObject *source,
+    GAsyncResult *result,
     gpointer user_data)
 {
     gpointer user_data)
 {
-  if (error != NULL)
+  EmpathyConnectionManagers *managers = EMPATHY_CONNECTION_MANAGERS (source);
+
+  if (!empathy_connection_managers_prepare_finish (managers, result, NULL))
     goto out;
 
   if (!empathy_import_mc4_accounts (managers) && !start_hidden)
     goto out;
 
   if (!empathy_import_mc4_accounts (managers) && !start_hidden)
@@ -488,8 +490,8 @@ account_manager_ready_cb (GObject *source_object,
       EmpathyConnectionManagers *managers;
       managers = empathy_connection_managers_dup_singleton ();
 
       EmpathyConnectionManagers *managers;
       managers = empathy_connection_managers_dup_singleton ();
 
-      empathy_connection_managers_call_when_ready (managers,
-          connection_managers_ready_cb, NULL);
+      empathy_connection_managers_prepare_async (managers,
+          connection_managers_prepare_cb, NULL);
     }
   else if (!start_hidden)
     {
     }
   else if (!start_hidden)
     {