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); } }
/** * 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); }