コード例 #1
0
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;
        }
    }
}
コード例 #2
0
static void
tp_base_media_call_stream_fail (TpSvcCallStreamInterfaceMedia *iface,
    const GValueArray *reason_array,
    DBusGMethodInvocation *context)
{
  TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface);
  TpBaseCallStream *base = TP_BASE_CALL_STREAM (self);
  TpBaseCallChannel *channel;
  TpBaseCallContent *content;

  channel = _tp_base_call_stream_get_channel (base);
  content = _tp_base_call_stream_get_content (base);

  _tp_base_call_content_remove_stream_internal (content, base, reason_array);

  /* If it was the last stream, remove the content */
  if (tp_base_call_content_get_streams (content) == NULL)
    {
      _tp_base_call_channel_remove_content_internal (channel, content,
          reason_array);
    }

  tp_svc_call_stream_interface_media_return_from_fail (context);
}