void tt_node_RecursiveDelete( tt_node_t *p_node ) { for( ; p_node->p_child ; ) { tt_basenode_t *p_child = p_node->p_child; p_node->p_child = p_child->p_next; if( p_child->i_type == TT_NODE_TYPE_TEXT ) tt_textnode_Delete( (tt_textnode_t *) p_child ); else tt_node_RecursiveDelete( (tt_node_t *) p_child ); } tt_node_Delete( p_node ); }
void CloseDemux( demux_t* p_demux ) { demux_sys_t* p_sys = p_demux->p_sys; if( p_sys->p_rootnode ) tt_node_RecursiveDelete( p_sys->p_rootnode ); if( p_sys->p_es ) es_out_Del( p_demux->out, p_sys->p_es ); if( p_sys->p_reader ) xml_ReaderDelete( p_sys->p_reader ); if( p_sys->p_xml ) xml_Delete( p_sys->p_xml ); free( p_sys->times.p_array ); free( p_sys ); }