static void debug_dialog_dispose (GObject *object) { EmpathyDebugDialog *selector = EMPATHY_DEBUG_DIALOG (object); EmpathyDebugDialogPriv *priv = GET_PRIV (selector); if (priv->dispose_run) return; priv->dispose_run = TRUE; if (priv->store != NULL) g_object_unref (priv->store); if (priv->name_owner_changed_signal != NULL) tp_proxy_signal_connection_disconnect (priv->name_owner_changed_signal); if (priv->proxy != NULL) { debug_dialog_set_enabled (EMPATHY_DEBUG_DIALOG (object), FALSE); g_object_unref (priv->proxy); } if (priv->new_debug_message_signal != NULL) tp_proxy_signal_connection_disconnect (priv->new_debug_message_signal); if (priv->cms != NULL) g_object_unref (priv->cms); if (priv->dbus != NULL) g_object_unref (priv->dbus); (G_OBJECT_CLASS (empathy_debug_dialog_parent_class)->dispose) (object); }
static void polari_room_set_channel (PolariRoom *room, TpChannel *channel) { PolariRoomPrivate *priv; g_return_if_fail (POLARI_IS_ROOM (room)); g_return_if_fail (channel == NULL || TP_IS_TEXT_CHANNEL (channel)); priv = room->priv; if (priv->channel == channel) return; if (priv->channel) { g_signal_handler_disconnect (priv->channel, priv->identifier_notify_id); g_signal_handler_disconnect (priv->channel, priv->group_contacts_changed_id); tp_proxy_signal_connection_disconnect (priv->properties_changed_id); g_clear_object (&priv->channel); } if (channel) { priv->channel = g_object_ref (channel); if (priv->id == NULL) priv->id = g_strdup (tp_proxy_get_object_path (TP_PROXY (channel))); tp_cli_dbus_properties_call_get_all (channel, -1, TP_IFACE_CHANNEL_INTERFACE_SUBJECT, (tp_properties_get_all_cb)subject_get_all, room, NULL, NULL); priv->identifier_notify_id = g_signal_connect (channel, "notify::identifier", G_CALLBACK (on_identifier_notify), room); priv->group_contacts_changed_id = g_signal_connect (channel, "group-contacts-changed", G_CALLBACK (on_group_contacts_changed), room); priv->properties_changed_id = tp_cli_dbus_properties_connect_to_properties_changed ( channel, (tp_properties_changed_cb) properties_changed, room, NULL, NULL, NULL); } g_object_freeze_notify (G_OBJECT (room)); update_identifier (room); update_icon (room); g_object_notify_by_pspec (G_OBJECT (room), props[PROP_CHANNEL]); g_object_thaw_notify (G_OBJECT (room)); }
static void tp_yts_status_dispose (GObject *object) { TpYtsStatus *self = TP_YTS_STATUS (object); if (self->priv->service_added_sig) tp_proxy_signal_connection_disconnect (self->priv->service_added_sig); self->priv->service_added_sig = NULL; if (self->priv->service_removed_sig) tp_proxy_signal_connection_disconnect (self->priv->service_removed_sig); self->priv->service_removed_sig = NULL; if (self->priv->status_changed_sig) tp_proxy_signal_connection_disconnect (self->priv->status_changed_sig); self->priv->status_changed_sig = NULL; G_OBJECT_CLASS (tp_yts_status_parent_class)->dispose (object); }
/* This must be called before the local group members lists are created. Until * this is called, the proxy is listening to both MembersChanged and * MembersChangedDetailed, but they are ignored until priv->group_members * exists. If that list is created before one signal is disconnected, the * proxy will react to state changes twice and madness will ensue. */ static void _got_initial_group_flags (TpChannel *self, TpChannelGroupFlags flags) { TpChannelPrivate *priv = self->priv; g_assert (priv->group_flags == 0); g_assert (self->priv->group_members == NULL); priv->group_flags = flags; DEBUG ("Initial GroupFlags: %u", flags); priv->have_group_flags = TRUE; if (flags != 0) g_object_notify ((GObject *) self, "group-flags"); if (tp_proxy_get_invalidated (self) != NULL) { /* Because the proxy has been invalidated, it is not safe to call * tp_proxy_signal_connection_disconnect (below), so just return early */ return; } /* If the channel claims to support MembersChangedDetailed, disconnect from * MembersChanged. Otherwise, disconnect from MembersChangedDetailed in case * it secretly emits it anyway, so we're only listening to one change * notification. */ if (flags & TP_CHANNEL_GROUP_FLAG_MEMBERS_CHANGED_DETAILED) tp_proxy_signal_connection_disconnect (priv->members_changed_sig); else tp_proxy_signal_connection_disconnect (priv->members_changed_detailed_sig); priv->members_changed_sig = NULL; priv->members_changed_detailed_sig = NULL; }
static void contact_manager_finalize (GObject *object) { EmpathyContactManagerPriv *priv = GET_PRIV (object); tp_proxy_signal_connection_disconnect (priv->favourite_contacts_changed_signal); if (priv->logger != NULL) g_object_unref (priv->logger); g_hash_table_foreach (priv->lists, contact_manager_disconnect_foreach, object); g_hash_table_destroy (priv->lists); g_hash_table_destroy (priv->favourites); g_object_unref (priv->account_manager); }
static void debug_dialog_cm_chooser_changed_cb (GtkComboBox *cm_chooser, EmpathyDebugDialog *debug_dialog) { EmpathyDebugDialogPriv *priv = GET_PRIV (debug_dialog); MissionControl *mc; TpDBusDaemon *dbus; GError *error = NULL; gchar *bus_name; TpProxy *proxy; GtkTreeIter iter; if (!gtk_combo_box_get_active_iter (cm_chooser, &iter)) { DEBUG ("No CM is selected"); if (gtk_tree_model_iter_n_children ( GTK_TREE_MODEL (priv->cms), NULL) > 0) { gtk_combo_box_set_active (cm_chooser, 0); } return; } mc = empathy_mission_control_dup_singleton (); dbus = tp_dbus_daemon_dup (&error); if (error != NULL) { DEBUG ("Failed at duping the dbus daemon: %s", error->message); g_object_unref (mc); } gtk_tree_model_get (GTK_TREE_MODEL (priv->cms), &iter, COL_CM_UNIQUE_NAME, &bus_name, -1); proxy = g_object_new (TP_TYPE_PROXY, "bus-name", bus_name, "dbus-daemon", dbus, "object-path", DEBUG_OBJECT_PATH, NULL); g_free (bus_name); gtk_list_store_clear (priv->store); /* Disable debug signalling */ if (priv->proxy != NULL) debug_dialog_set_enabled (debug_dialog, FALSE); /* Disconnect from previous NewDebugMessage signal */ if (priv->new_debug_message_signal != NULL) { tp_proxy_signal_connection_disconnect (priv->new_debug_message_signal); priv->new_debug_message_signal = NULL; } if (priv->proxy != NULL) g_object_unref (priv->proxy); priv->proxy = proxy; tp_proxy_add_interface_by_id (priv->proxy, emp_iface_quark_debug ()); emp_cli_debug_call_get_messages (priv->proxy, -1, debug_dialog_get_messages_cb, debug_dialog, NULL, NULL); g_object_unref (dbus); g_object_unref (mc); }