]> git.sesse.net Git - vlc/blobdiff - src/playlist/search.c
Some infrastructure work for playlist autoload/autosave
[vlc] / src / playlist / search.c
index 29c0779620924385ff9703cc4568ca780cfb3a62..6a7f636d1a718090da4a488f09f64802430dd240 100644 (file)
@@ -68,15 +68,15 @@ playlist_item_t * playlist_ItemGetByInput( playlist_t * p_playlist ,
                                            input_item_t *p_item )
 {
     int i;
-    if( p_playlist->status.p_item && p_playlist->status.p_item->p_input == p_item )
+    if( p_playlist->status.p_item &&
+        p_playlist->status.p_item->p_input == p_item )
     {
         return p_playlist->status.p_item;
     }
 
     for( i =  0 ; i < p_playlist->i_all_size; i++ )
     {
-msg_Err( p_playlist, "%p, %p", p_item, p_playlist->pp_all_items[i]->p_input );
-        if( p_playlist->pp_all_items[i]->p_input == p_item )
+        if( p_playlist->pp_all_items[i]->p_input->i_id == p_item->i_id )
         {
             return p_playlist->pp_all_items[i];
         }
@@ -99,8 +99,11 @@ int playlist_LiveSearchUpdate( playlist_t *p_playlist, playlist_item_t *p_root,
         {
             playlist_LiveSearchUpdate( p_playlist, p_item, psz_string );
         }
-        /* Todo: Filter on all fields */
-        if( strcasestr( p_item->p_input->psz_name, psz_string ) )
+#define META_MATCHES( field ) ( p_item->p_input->p_meta && \
+                                p_item->p_input->p_meta->psz_##field && \
+                                strcasestr( p_item->p_input->p_meta->psz_##field, psz_string ) )
+        if( strcasestr( p_item->p_input->psz_name, psz_string ) ||
+            META_MATCHES( artist ) || META_MATCHES( album ) )
             p_item->i_flags &= ~PLAYLIST_DBL_FLAG;
         else
             p_item->i_flags |= PLAYLIST_DBL_FLAG;