]> git.sesse.net Git - vlc/commitdiff
Cache last FindItem request to speed up bulk-addings
authorClément Stenac <zorglub@videolan.org>
Mon, 17 Jan 2005 18:36:52 +0000 (18:36 +0000)
committerClément Stenac <zorglub@videolan.org>
Mon, 17 Jan 2005 18:36:52 +0000 (18:36 +0000)
modules/gui/wxwindows/playlist.cpp
modules/gui/wxwindows/wxwindows.h

index 2069eb83afc42257f4e459d8f619c2235fc876da..63f09b55a3a53a76308d78549a55f29ca5a88f0d 100644 (file)
@@ -377,6 +377,8 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ):
         return;
     }
 
+    p_saved_item = NULL;
+
     /* Update the playlist */
     Rebuild();
 
@@ -650,12 +652,12 @@ void Playlist::RemoveItem( int i )
     if( item.IsOk() )
     {
         treectrl->Delete( item );
-    }    
+    }
 }
 
 
 /**********************************************************************
- * Search functions (internal
+ * Search functions (internal)
  **********************************************************************/
 
 /* Find a wxItem from a playlist_item */
@@ -667,6 +669,11 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
     wxTreeItemId item = treectrl->GetFirstChild( root, cookie );
     wxTreeItemId child;
 
+    if( p_item == p_saved_item && saved_tree_item.IsOk() )
+    {
+        return saved_tree_item;
+    }
+
     p_wxcurrent = (PlaylistItem *)treectrl->GetItemData( root );
 
     if( !p_item )
@@ -685,6 +692,8 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
         p_wxcurrent = (PlaylistItem *)treectrl->GetItemData( item );
         if( p_wxcurrent->p_item == p_item )
         {
+            saved_tree_item = item;
+            p_saved_item = p_item;
             return item;
         }
         if( treectrl->ItemHasChildren( item ) )
@@ -692,6 +701,8 @@ wxTreeItemId Playlist::FindItem( wxTreeItemId root, playlist_item_t *p_item )
             wxTreeItemId search = FindItem( item, p_item );
             if( search.IsOk() )
             {
+                saved_tree_item = search;
+                p_saved_item = p_item;
                 return search;
             }
         }
index 97c04e63d5f3b323d8f321cc461888aa677cf9db..ae7c0d51d592f8cdd73c57e832d050972e70f4bc 100644 (file)
@@ -883,6 +883,10 @@ private:
     wxTreeItemId FindItemByName( wxTreeItemId, wxString,
                                  wxTreeItemId, vlc_bool_t *);
 
+    wxTreeItemId saved_tree_item;
+    playlist_item_t *p_saved_item;
+
+
     /* Custom events */
     void OnPlaylistEvent( wxCommandEvent& event );