]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwidgets/dialogs/playlist.cpp
Remove useless test before free and delete.
[vlc] / modules / gui / wxwidgets / dialogs / playlist.cpp
index 9b870df647d1d29c1de5404cd750bceba5aa138c..b1fe2476f46ea613417e5ea0958cbca755eaf72a 100644 (file)
@@ -411,7 +411,12 @@ Playlist::Playlist( intf_thread_t *_p_intf, wxWindow *p_parent ):
 
 Playlist::~Playlist()
 {
-    if( pp_sds != NULL ) free( pp_sds );
+    if( pp_sds != NULL )
+    {
+        char **pp_sd = pp_sds;
+        for( ; *pp_sd; pp_sd++ ) free( *pp_sd );
+        free( pp_sds );
+    }
 
     if( p_playlist == NULL ) return;
 
@@ -534,8 +539,7 @@ void Playlist::UpdateTreeItem( wxTreeItemId item )
         msg = wxString(wxU( psz_artist )) + wxT(" - ") +
               wxString(wxU(psz_name)) + duration;
     }
-    if( psz_artist )
-        free( psz_artist );
+    free( psz_artist );
     free( psz_name );
     treectrl->SetItemText( item , msg );
     treectrl->SetItemImage( item, p_item->p_input->i_type );
@@ -1284,9 +1288,11 @@ bool PlaylistFileDropTarget::OnDropFiles( wxCoord x, wxCoord y,
         char *psz_utf8 = wxDnDFromLocale( filenames[i] );
         input_item_t *p_input = input_ItemNew( p->p_playlist,
                                               psz_utf8, psz_utf8 );
-        playlist_NodeAddInput( p->p_playlist, p_input,
-                               p_dest, PLAYLIST_PREPARSE, i_pos, VLC_FALSE );
+        int i_ret = ( playlist_NodeAddInput( p->p_playlist, p_input, p_dest,
+                PLAYLIST_PREPARSE, i_pos, VLC_FALSE ) != VLC_SUCCESS );
         wxDnDLocaleFree( psz_utf8 );
+        if( i_ret != VLC_SUCCESS )
+            return FALSE;
     }
 
     /* FIXME: having this Rebuild() is dirty */
@@ -1400,47 +1406,28 @@ wxMenu *Playlist::SDMenu()
 {
     p_sd_menu = new wxMenu;
 
-    vlc_list_t *p_list = vlc_list_find( p_playlist, VLC_OBJECT_MODULE,
-                                        FIND_ANYWHERE );
+    char **ppsz_longnames;
+    char **ppsz_names = services_discovery_GetServicesNames( p_playlist,
+                                                             &ppsz_longnames );
+    if( !ppsz_names )
+        return p_sd_menu;
 
-    int i_number = 0;
-    for( int i_index = 0; i_index < p_list->i_count; i_index++ )
-    {
-        module_t * p_parser = (module_t *)p_list->p_values[i_index].p_object ;
+    char **ppsz_name = ppsz_names, **ppsz_longname = ppsz_longnames;
 
-        if( !strcmp( p_parser->psz_capability, "services_discovery" ) )
-            i_number++;
-    }
-    if( i_number ) pp_sds = (const char **)calloc( i_number, sizeof(void *) );
+    int i_number = 0;
 
-    i_number = 0;
-    for( int i_index = 0; i_index < p_list->i_count; i_index++ )
+    for( ; *ppsz_name; ppsz_name++, ppsz_longname++ )
     {
-        module_t * p_parser = (module_t *)p_list->p_values[i_index].p_object ;
+        p_sd_menu->AppendCheckItem( FirstSD_Event + i_number++ ,
+                                    wxU( *ppsz_longname ) );
 
-        if( !strcmp( p_parser->psz_capability, "services_discovery" ) )
-        {
-            p_sd_menu->AppendCheckItem( FirstSD_Event + i_number ,
-                wxU( p_parser->psz_longname ? p_parser->psz_longname :
-                     (p_parser->psz_shortname ?
-                      p_parser->psz_shortname : p_parser->psz_object_name) ) );
-
-            /* hack to handle submodules properly */
-            int i = -1;
-            while( p_parser->pp_shortcuts[++i] != NULL );
-            i--;
-            if( playlist_IsServicesDiscoveryLoaded( p_playlist,
-                                    i>=0?p_parser->pp_shortcuts[i]
-                                    :p_parser->psz_object_name ) )
-            {
-                p_sd_menu->Check( FirstSD_Event + i_number, TRUE );
-            }
+        if( playlist_IsServicesDiscoveryLoaded( p_playlist, *ppsz_name ) )
+            p_sd_menu->Check( FirstSD_Event + i_number, TRUE );
 
-            pp_sds[i_number++] = i>=0?p_parser->pp_shortcuts[i]
-                                 :p_parser->psz_object_name;
-        }
+        free( *ppsz_longname );
     }
-    vlc_list_release( p_list );
+    pp_sds = ppsz_names;
+    free( ppsz_longnames );
     return p_sd_menu;
 }
 
@@ -1605,7 +1592,7 @@ void Playlist::OnPopupAddNode( wxCommandEvent& event )
 
     p_item = playlist_ItemGetById( p_playlist, p_wxitem->i_id, VLC_TRUE );
 
-    playlist_NodeCreate( p_playlist, psz_name, p_item, 0 );
+    playlist_NodeCreate( p_playlist, psz_name, p_item, 0, NULL );
 
     UnlockPlaylist( p_intf->p_sys, p_playlist );
     Rebuild( VLC_TRUE );