]> git.sesse.net Git - vlc/commitdiff
playlist: fix first subitem added as last and refactor
authorJakob Leben <jleben@videolan.org>
Tue, 16 Feb 2010 23:24:36 +0000 (00:24 +0100)
committerJakob Leben <jleben@videolan.org>
Wed, 17 Feb 2010 00:03:00 +0000 (01:03 +0100)
src/playlist/item.c

index a234ffb0a529339661cb2dc52fe46b6ace790090..3b639de5e357c0aced413412db0b11d59f1d4301 100644 (file)
@@ -63,9 +63,9 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
     playlist_item_t *p_parent = p_item->p_parent;
     assert( p_parent != NULL );
 
-    bool b_play = var_CreateGetBool( p_playlist, "playlist-autostart" ) &&
-                  get_current_status_item( p_playlist ) == p_item;
-    bool b_stop = b_play && p_item->i_flags & PLAYLIST_SUBITEM_STOP_FLAG;
+    bool b_current = get_current_status_item( p_playlist ) == p_item;
+    bool b_autostart = var_CreateGetBool( p_playlist, "playlist-autostart" );
+    bool b_stop = p_item->i_flags & PLAYLIST_SUBITEM_STOP_FLAG;
     p_item->i_flags &= ~PLAYLIST_SUBITEM_STOP_FLAG;
 
     int pos = 0;
@@ -98,20 +98,23 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
     }
     else
         p_item = playlist_InsertInputItemTree( p_playlist, p_item,
-                                               p_new_root, p_item->i_children, false );
+                                               p_new_root, PLAYLIST_END, false );
 
     if( !b_flat ) var_SetAddress( p_playlist, "leaf-to-parent", p_input );
 
-    if( b_stop && !b_flat )
+    if( b_current )
     {
-        PL_UNLOCK;
-        playlist_Stop( p_playlist );
-        return;
-    }
-    else if( b_play )
-    {
-        playlist_Control( p_playlist, PLAYLIST_VIEWPLAY,
-                          pl_Locked, get_current_status_node( p_playlist ), p_item );
+        if( b_stop || !b_autostart )
+        {
+            PL_UNLOCK;
+            playlist_Stop( p_playlist );
+            return;
+        }
+        else
+        {
+            playlist_Control( p_playlist, PLAYLIST_VIEWPLAY,
+                pl_Locked, get_current_status_node( p_playlist ), p_item );
+        }
     }
 
     PL_UNLOCK;