]> git.sesse.net Git - vlc/blobdiff - src/playlist/playlist.c
* modules/gui/wxwindows: small cleanup + renamed wxwin-size-to-video into wxwin-autosize.
[vlc] / src / playlist / playlist.c
index 0d7e843251f188ab8ae35432bd0a94ff0dbac804..d2cd28ad890f8474c7b67150ccf973f3ad942b49 100644 (file)
@@ -120,10 +120,9 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent )
     p_playlist->i_size = 0;
     p_playlist->pp_items = NULL;
     p_playlist->i_all_size = 0;
-    p_playlist->pp_all_items = malloc(sizeof(playlist_item_t*));
+    p_playlist->pp_all_items = 0;
 
     playlist_ViewInsert( p_playlist, VIEW_CATEGORY, TITLE_CATEGORY );
-    playlist_ViewInsert( p_playlist, VIEW_SIMPLE, TITLE_SIMPLE );
     playlist_ViewInsert( p_playlist, VIEW_ALL, TITLE_ALL );
 
     p_view = playlist_ViewFind( p_playlist, VIEW_CATEGORY );
@@ -135,8 +134,8 @@ playlist_t * __playlist_Create ( vlc_object_t *p_parent )
     /* Set startup status
      * We set to simple view on startup for interfaces that don't do
      * anything */
-    p_view = playlist_ViewFind( p_playlist, VIEW_SIMPLE );
-    p_playlist->status.i_view = VIEW_SIMPLE;
+    p_view = playlist_ViewFind( p_playlist, VIEW_CATEGORY );
+    p_playlist->status.i_view = VIEW_CATEGORY;
     p_playlist->status.p_item = NULL;
     p_playlist->status.p_node = p_view->p_root;
     p_playlist->request.b_request = VLC_FALSE;
@@ -258,7 +257,6 @@ int playlist_LockControl( playlist_t * p_playlist, int i_query, ... )
     va_end( args );
     vlc_mutex_unlock( &p_playlist->object_lock );
     return i_result;
-    
 }
 
 /**
@@ -295,7 +293,6 @@ int playlist_vaControl( playlist_t * p_playlist, int i_query, va_list args )
 
     if( p_playlist->i_size <= 0 )
     {
-        vlc_mutex_unlock( &p_playlist->object_lock );
         return VLC_EGENERIC;
     }
 
@@ -546,6 +543,13 @@ static void RunThread ( playlist_t *p_playlist )
                 i_vout_destroyed_date = 0;
                 i_sout_destroyed_date = 0;
 
+                if( p_playlist->status.p_item->i_flags
+                    & PLAYLIST_REMOVE_FLAG )
+                {
+                     playlist_ItemDelete( p_item );
+                     p_playlist->status.p_item = NULL;
+                }
+
                 continue;
             }
             /* This input is dying, let him do */
@@ -790,7 +794,7 @@ static playlist_item_t * NextItem( playlist_t *p_playlist )
     }
 
     if( !p_playlist->request.b_request && p_playlist->status.p_item &&
-        !(p_playlist->status.p_item->i_flags & PLAYLIST_SKIP_FLAG) )
+        !( p_playlist->status.p_item->i_flags & PLAYLIST_SKIP_FLAG ) )
     {
         msg_Dbg( p_playlist, "no-skip mode, stopping") ;
         return NULL;
@@ -943,7 +947,7 @@ static playlist_item_t * NextItem( playlist_t *p_playlist )
             {
                 p_playlist->i_index++;
                 p_new = p_playlist->pp_items[p_playlist->i_index];
-                if( !(p_new->i_flags & PLAYLIST_SKIP_FLAG) )
+                if( !( p_new->i_flags & PLAYLIST_SKIP_FLAG ) )
                 {
                     return NULL;
                 }
@@ -984,6 +988,8 @@ static playlist_item_t * NextItem( playlist_t *p_playlist )
                                    p_playlist->status.p_node,
                                    NULL );
                 }
+                if( p_new != NULL && !(p_new->i_flags & PLAYLIST_SKIP_FLAG) )
+                    return NULL;
             }
         }
     }