static void on_register_user (GObject *source, GAsyncResult *result, gpointer user_data) { UmAccountDialog *self = UM_ACCOUNT_DIALOG (user_data); GError *error = NULL; UmUser *user = NULL; um_user_manager_cache_user_finish (UM_USER_MANAGER (source), result, &user, &error); /* This is where we're finally done */ if (error == NULL) { g_debug ("Successfully cached remote user: %s", um_user_get_user_name (user)); finish_action (self); complete_dialog (self, user); } else { show_error_dialog (self, _("Failed to register account"), error); g_message ("Couldn't cache user account: %s", error->message); finish_action (self); g_error_free (error); } }
UmUserManager * um_user_manager_ref_default (void) { if (user_manager_object != NULL) { g_object_ref (user_manager_object); } else { user_manager_object = g_object_new (UM_TYPE_USER_MANAGER, NULL); g_object_add_weak_pointer (user_manager_object, (gpointer *) &user_manager_object); } return UM_USER_MANAGER (user_manager_object); }
static void um_user_manager_finalize (GObject *object) { UmUserManager *manager; manager = UM_USER_MANAGER (object); g_hash_table_foreach (manager->user_by_object_path, clear_dup, NULL); g_hash_table_destroy (manager->user_by_object_path); g_hash_table_destroy (manager->user_by_name); g_object_unref (manager->proxy); G_OBJECT_CLASS (um_user_manager_parent_class)->finalize (object); }