Пример #1
0
static void
ssc_media_set_property (GObject      *object, 
			guint         prop_id,
			const GValue *value, 
			GParamSpec   *pspec)
{
  SscMedia *self;
  int res = 0;
  g_return_if_fail (SSC_IS_MEDIA (object));

  self = SSC_MEDIA (object);

  switch (prop_id) {
  case PROP_LOCAL_SDP: 
    res = priv_set_local_sdp(self, g_value_get_string (value));
    /* note: succesfully set new l-SDP, update the media config */
    if (!res && ssc_media_is_initialized(self))
      ssc_media_refresh(self);
    break;
  case PROP_REMOTE_SDP: 
    res = priv_set_remote_sdp(self, g_value_get_string (value));
    /* note: succesfully set new r-SDP, update the media config */
    if (!res && ssc_media_is_initialized(self))
      ssc_media_refresh(self);
    break;
  default:
    g_debug("Unknown object property %s:%u.", G_OBJECT_TYPE_NAME(object), prop_id);
  }
}
Пример #2
0
/**
 * Deletes operation and attached handles and identities
 */
void ssc_oper_destroy(ssc_t *ssc, ssc_oper_t *op)
{
    ssc_oper_t **prev;
    int active_invites = 0;

    if (!op)
        return;

    /* Remove from queue */
    for (prev = &ssc->ssc_operations;
            *prev && *prev != op;
            prev = &(*prev)->op_next)
        ;
    if (*prev)
        *prev = op->op_next, op->op_next = NULL;

    if (op->op_handle)
        nua_handle_destroy(op->op_handle), op->op_handle = NULL;

    for (prev = &ssc->ssc_operations;
            *prev;
            prev = &(*prev)->op_next) {
        if ((*prev)->op_method == sip_method_invite) ++active_invites;
    }

    if (active_invites == 0) {
        /* last INVITE operation */
#if HAVE_MEDIA_IMPL
        if (ssc_media_is_initialized(ssc->ssc_media) == TRUE)
            ssc_media_deactivate(ssc->ssc_media);
#endif
    }

    su_free(ssc->ssc_home, op);
}