+ libvlc_media_descriptor_t * p_submd = p_event->u.media_descriptor_subitem_added.new_child;
+ libvlc_media_descriptor_t * p_md = p_event->p_obj;
+
+ if((p_mlist = libvlc_media_descriptor_subitems( p_md, NULL )))
+ {
+ /* We have a mlist to which we're going to listen to events
+ * thus, no need to wait for SubItemAdded events */
+ libvlc_event_detach( p_md->p_event_manager,
+ libvlc_MediaDescriptorSubItemAdded,
+ media_list_subitem_added, p_mlv, NULL );
+ libvlc_media_list_lock( p_mlist );
+
+ libvlc_event_attach( p_mlist->p_event_manager,
+ libvlc_MediaListItemAdded,
+ media_list_item_added, p_mlv, NULL );
+ libvlc_event_attach( p_mlist->p_event_manager,
+ libvlc_MediaListItemDeleted,
+ media_list_item_removed, p_mlv, NULL );
+ libvlc_media_list_unlock( p_mlist );
+ libvlc_media_list_release( p_mlist );
+ }
+
+ install_md_listener( p_mlv, p_submd );