|
|
|
@ -461,41 +461,50 @@ static void webvtt_domnode_AppendLast( webvtt_dom_node_t **pp_append, |
|
|
|
#define webvtt_domnode_AppendLast( a, b ) \ |
|
|
|
webvtt_domnode_AppendLast( (webvtt_dom_node_t **) a, (webvtt_dom_node_t *) b ) |
|
|
|
|
|
|
|
|
|
|
|
static webvtt_dom_node_t *webvtt_domnode_DeleteNode( webvtt_dom_node_t *p_node ) |
|
|
|
{ |
|
|
|
webvtt_dom_node_t *p_child = NULL; |
|
|
|
if( p_node->type == NODE_TAG ) |
|
|
|
{ |
|
|
|
webvtt_dom_tag_t *p_tag_node = (webvtt_dom_tag_t *) p_node; |
|
|
|
text_style_Delete( p_tag_node->p_cssstyle ); |
|
|
|
free( p_tag_node->psz_attrs ); |
|
|
|
free( p_tag_node->psz_tag ); |
|
|
|
p_child = p_tag_node->p_child; |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_TEXT ) |
|
|
|
{ |
|
|
|
webvtt_dom_text_t *p_text_node = (webvtt_dom_text_t *)p_node; |
|
|
|
free( p_text_node->psz_text ); |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_CUE ) |
|
|
|
{ |
|
|
|
webvtt_dom_cue_t *p_cue_node = (webvtt_dom_cue_t *)p_node; |
|
|
|
text_style_Delete( p_cue_node->p_cssstyle ); |
|
|
|
webvtt_cue_settings_Clean( &p_cue_node->settings ); |
|
|
|
free( p_cue_node->psz_id ); |
|
|
|
p_child = p_cue_node->p_child; |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_REGION ) |
|
|
|
{ |
|
|
|
webvtt_region_t *p_region_node = (webvtt_region_t *)p_node; |
|
|
|
text_style_Delete( p_region_node->p_cssstyle ); |
|
|
|
free( p_region_node->psz_id ); |
|
|
|
p_child = p_region_node->p_child; |
|
|
|
} |
|
|
|
free( p_node ); |
|
|
|
return p_child; |
|
|
|
} |
|
|
|
|
|
|
|
static void webvtt_domnode_ChainDelete( webvtt_dom_node_t *p_node ) |
|
|
|
{ |
|
|
|
while( p_node ) |
|
|
|
{ |
|
|
|
webvtt_dom_node_t *p_next = p_node->p_next; |
|
|
|
|
|
|
|
if( p_node->type == NODE_TAG ) |
|
|
|
{ |
|
|
|
webvtt_dom_tag_t *p_tag_node = (webvtt_dom_tag_t *) p_node; |
|
|
|
text_style_Delete( p_tag_node->p_cssstyle ); |
|
|
|
free( p_tag_node->psz_attrs ); |
|
|
|
free( p_tag_node->psz_tag ); |
|
|
|
webvtt_domnode_ChainDelete( p_tag_node->p_child ); |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_TEXT ) |
|
|
|
{ |
|
|
|
webvtt_dom_text_t *p_text_node = (webvtt_dom_text_t *)p_node; |
|
|
|
free( p_text_node->psz_text ); |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_CUE ) |
|
|
|
{ |
|
|
|
webvtt_dom_cue_t *p_cue_node = (webvtt_dom_cue_t *)p_node; |
|
|
|
text_style_Delete( p_cue_node->p_cssstyle ); |
|
|
|
webvtt_cue_settings_Clean( &p_cue_node->settings ); |
|
|
|
free( p_cue_node->psz_id ); |
|
|
|
webvtt_domnode_ChainDelete( p_cue_node->p_child ); |
|
|
|
} |
|
|
|
else if( p_node->type == NODE_REGION ) |
|
|
|
{ |
|
|
|
webvtt_region_t *p_region_node = (webvtt_region_t *)p_node; |
|
|
|
text_style_Delete( p_region_node->p_cssstyle ); |
|
|
|
free( p_region_node->psz_id ); |
|
|
|
webvtt_domnode_ChainDelete( p_region_node->p_child ); |
|
|
|
} |
|
|
|
free( p_node ); |
|
|
|
webvtt_dom_node_t *p_child = webvtt_domnode_DeleteNode( p_node ); |
|
|
|
while ( p_child ) |
|
|
|
p_child = webvtt_domnode_DeleteNode( p_child ); |
|
|
|
|
|
|
|
p_node = p_next; |
|
|
|
} |
|
|
|
|