static void on_media_channel_closed(GObject *chan, RingMediaManager *self) { if (self->priv->channels != NULL) { gchar *object_path; g_object_get (chan, "object-path", &object_path, NULL); g_hash_table_remove (self->priv->channels, object_path); tp_channel_manager_emit_channel_closed (self, object_path); g_free (object_path); } }
static void on_text_channel_closed(RingTextChannel *channel, RingTextManager *self) { char *object_path; gboolean really_destroyed; guint handle; g_object_get(channel, "object-path", &object_path, "channel-destroyed", &really_destroyed, "handle", &handle, NULL); if (self->priv->channels == NULL) really_destroyed = TRUE; DEBUG(": %s is %s", object_path, really_destroyed ? "destroyed" : "about to be recycled"); tp_channel_manager_emit_channel_closed(self, object_path); if (self->priv->channels == NULL) ; else if (really_destroyed) { g_hash_table_remove(self->priv->channels, object_path); } else { g_object_set(channel, "initiator", handle, "requested", FALSE, NULL); tp_channel_manager_emit_new_channel(self, (TpExportableChannel *)channel, NULL); } g_free(object_path); }