]> git.sesse.net Git - vlc/commitdiff
playlist: consistently change input item type when subitems are added
authorJakob Leben <jleben@videolan.org>
Tue, 23 Feb 2010 11:39:41 +0000 (12:39 +0100)
committerJakob Leben <jleben@videolan.org>
Tue, 23 Feb 2010 11:43:29 +0000 (12:43 +0100)
src/input/item.c
src/playlist/item.c

index 9872e99ba6afe96d48794764aa1edb172706664b..416ec1970a0f10f77eb45d28217cb07ee7152e61 100644 (file)
@@ -254,10 +254,6 @@ static void post_subitems( input_item_node_t *p_node )
  * the input item children. */
 void input_item_PostSubItem( input_item_t *p_parent, input_item_t *p_child )
 {
-    vlc_mutex_lock( &p_parent->lock );
-    p_parent->i_type = ITEM_TYPE_PLAYLIST;
-    vlc_mutex_unlock( &p_parent->lock );
-
     input_item_node_t *p_node = input_item_node_Create( p_parent );
     input_item_node_AppendItem( p_node, p_child );
     input_item_node_PostAndDelete( p_node );
index 686f0f4ae629e26d77ef0d48d2dc4179bbc8ad34..f3cf1965f63696c8002d5bf870eff72cef9b4c8c 100644 (file)
@@ -755,8 +755,16 @@ static void AddItem( playlist_t *p_playlist, playlist_item_t *p_item,
 static void ChangeToNode( playlist_t *p_playlist, playlist_item_t *p_item )
 {
     int i;
-    if( p_item->i_children == -1 )
-        p_item->i_children = 0;
+    if( p_item->i_children != -1 ) return;
+
+    p_item->i_children = 0;
+
+    input_item_t *p_input = p_item->p_input;
+    vlc_mutex_lock( &p_input->lock );
+    p_input->i_type = ITEM_TYPE_NODE;
+    vlc_mutex_unlock( &p_input->lock );
+
+    var_SetAddress( p_playlist, "item-change", p_item->p_input );
 
     /* Remove it from the array of available items */
     ARRAY_BSEARCH( p_playlist->items,->i_id, int, p_item->i_id, i );