static void conn_prepared_cb (GObject *conn, GAsyncResult *result, gpointer user_data) { FilterCallbackData *data = user_data; GError *myerr = NULL; TpCapabilities *caps; if (!tp_proxy_prepare_finish (conn, result, &myerr)) { data->callback (FALSE, data->user_data); g_slice_free (FilterCallbackData, data); return; } caps = tp_connection_get_capabilities (TP_CONNECTION (conn)); data->callback (tp_capabilities_supports_text_chatrooms (caps), data->user_data); g_slice_free (FilterCallbackData, data); }
/** * empathy_account_chooser_filter_supports_multichat: * @account: a #TpAccount * @callback: an #EmpathyAccountChooserFilterResultCallback accepting the result * @callback_data: data passed to the @callback * @user_data: user data or %NULL * * An #EmpathyAccountChooserFilterFunc that returns accounts that both * support multiuser text chat and are connected. * * Returns (via the callback) TRUE if @account both supports muc and * is connected */ void empathy_account_chooser_filter_supports_chatrooms (TpAccount *account, EmpathyAccountChooserFilterResultCallback callback, gpointer callback_data, gpointer user_data) { TpConnection *connection; gboolean supported = FALSE; TpCapabilities *caps; /* check if CM supports multiuser text chat */ connection = tp_account_get_connection (account); if (connection == NULL) goto out; caps = tp_connection_get_capabilities (connection); if (caps == NULL) goto out; supported = tp_capabilities_supports_text_chatrooms (caps); out: callback (supported, callback_data); }