]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwidgets/playlist_manager.cpp
Input access locking, part 3 (final).
[vlc] / modules / gui / wxwidgets / playlist_manager.cpp
index 528e5e304523346654bf559bab851ce08bb5381e..aa867879249bd6dc34cdf014e02a1d6b1823d0f1 100644 (file)
@@ -87,8 +87,15 @@ END_EVENT_TABLE()
 class PlaylistItem : public wxTreeItemData
 {
 public:
-    PlaylistItem( playlist_item_t *p_item ) : i_id(p_item->p_input->i_id) {}
+    PlaylistItem( playlist_item_t *p_item ) : wxTreeItemData()
+    {
+        i_id = p_item->i_id;
+        i_input_id = p_item->p_input->i_id;
+    }
+protected:
+    int i_input_id;
     int i_id;
+friend class PlaylistManager;
 };
 
 /*****************************************************************************
@@ -291,17 +298,17 @@ void PlaylistManager::UpdateTreeItem( wxTreeItemId item )
 
     wxString msg;
     wxString duration = wxU( "" );
-    char *psz_artist = p_item->p_input->p_meta->psz_artist ?
-                        strdup( p_item->p_input->p_meta->psz_artist ) :
-                        strdup( "" );
+
+    char *psz_artist = input_item_GetArtist( p_item->p_input );
     if( !psz_artist )
-    {
-        UnlockPlaylist( p_intf->p_sys, p_playlist );
-        return;
-    }
+        psz_artist = strdup( "" );
+
+    char *psz_name = input_item_GetName( p_item->p_input );
+    if( !psz_name )
+        psz_name = strdup( "" );
 
     char psz_duration[MSTRTIME_MAX_SIZE];
-    mtime_t dur = p_item->p_input->i_duration;
+    mtime_t dur = input_item_GetDuration( p_item->p_input );
 
     if( dur != -1 )
     {
@@ -312,14 +319,15 @@ void PlaylistManager::UpdateTreeItem( wxTreeItemId item )
 
     if( !strcmp( psz_artist, "" ) || p_item->p_input->b_fixed_name == VLC_TRUE )
     {
-        msg = wxString( wxU( p_item->p_input->psz_name ) ) + duration;
+        msg = wxString( wxU( psz_name ) ) + duration;
     }
     else
     {
         msg = wxString(wxU( psz_artist )) + wxT(" - ") +
-                    wxString(wxU(p_item->p_input->psz_name)) + duration;
+                    wxString(wxU(psz_name)) + duration;
     }
     free( psz_artist );
+    free( psz_name );
     treectrl->SetItemText( item , msg );
     treectrl->SetItemImage( item, p_item->p_input->i_type );