/** * Unregisters an existing session * * \param obj a VLC object * \param p_session the session descriptor * \return VLC_SUCCESS or an error */ int sout_AnnounceUnRegister( vlc_object_t *obj, session_descriptor_t *p_session ) { sap_handler_t *p_sap = libvlc_priv (obj->p_libvlc)->p_sap; msg_Dbg (obj, "removing SAP session"); SAP_Del (p_sap, p_session); vlc_mutex_lock (&sap_mutex); vlc_object_release ((vlc_object_t *)p_sap); vlc_mutex_unlock (&sap_mutex); free (p_session->psz_sdp); free (p_session); return 0; }
/** * Unregisters an existing session * * \param obj a VLC object * \param p_session the session descriptor * \return VLC_SUCCESS or an error */ int sout_AnnounceUnRegister( vlc_object_t *obj, session_descriptor_t *p_session ) { sap_handler_t *p_sap = libvlc_priv (obj->p_libvlc)->p_sap; msg_Dbg (obj, "removing SAP session"); SAP_Del (p_sap, p_session); vlc_value_t lockval; var_Create (obj->p_libvlc, "sap_mutex", VLC_VAR_MUTEX); var_Get (obj->p_libvlc, "sap_mutex", &lockval); vlc_mutex_lock (lockval.p_address); vlc_object_release ((vlc_object_t *)p_sap); vlc_mutex_unlock (lockval.p_address); free (p_session->psz_sdp); free (p_session); return 0; }