static void member_content_removed_cb (GabbleCallMemberContent *mcontent, gpointer user_data) { GabbleCallContent *self = GABBLE_CALL_CONTENT (user_data); GabbleCallContentPrivate *priv = self->priv; TpBaseCallContent *base = TP_BASE_CALL_CONTENT (self); GabbleJingleContent *content; GList *l; priv->contents = g_list_remove (priv->contents, mcontent); content = gabble_call_member_content_get_jingle_content (mcontent); for (l = tp_base_call_content_get_streams (base); l != NULL; l = l->next) { GabbleCallStream *stream = GABBLE_CALL_STREAM (l->data); if (content == gabble_call_stream_get_jingle_content (stream)) { tp_base_call_content_remove_stream (base, l->data, 0, TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", ""); break; } } }
void example_call_content_remove_stream (ExampleCallContent *self) { TpBaseCallStream *stream; g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); g_return_if_fail (self->priv->stream != NULL); stream = (TpBaseCallStream *) self->priv->stream; self->priv->stream = NULL; tp_base_call_content_remove_stream ((TpBaseCallContent *) self, stream, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); g_object_unref (stream); }