[vlc-devel] commit: Slightly cleaned the way we delete items ( Felix Paul Kühne )

git version control git at videolan.org
Tue Apr 8 23:41:02 CEST 2008


vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Tue Apr  8 21:08:58 2008 +0200| [bc2aaf77c526406e00f25f53a43ffbbab7b5e49b]

Slightly cleaned the way we delete items

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bc2aaf77c526406e00f25f53a43ffbbab7b5e49b
---

 modules/gui/macosx/playlist.m |   29 +++++++++++++++--------------
 1 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m
index 47e060b..c05933f 100644
--- a/modules/gui/macosx/playlist.m
+++ b/modules/gui/macosx/playlist.m
@@ -808,48 +808,49 @@
 
 - (IBAction)deleteItem:(id)sender
 {
-    int i, i_count, i_row;
+    int i_count, i_row;
     NSMutableArray *o_to_delete;
     NSNumber *o_number;
 
     playlist_t * p_playlist;
     intf_thread_t * p_intf = VLCIntf;
 
-    p_playlist = pl_Yield( p_intf );
-
     o_to_delete = [NSMutableArray arrayWithArray:[[o_outline_view selectedRowEnumerator] allObjects]];
     i_count = [o_to_delete count];
 
-    for( i = 0; i < i_count; i++ )
+    p_playlist = pl_Yield( p_intf );
+
+    PL_LOCK;
+    for( int i = 0; i < i_count; i++ )
     {
         o_number = [o_to_delete lastObject];
         i_row = [o_number intValue];
         id o_item = [o_outline_view itemAtRow: i_row];
         playlist_item_t *p_item = [o_item pointerValue];
+#ifndef NDEBUG
+        msg_Dbg( p_intf, "deleting item %i (of %i) with id \"%i\", pointerValue \"%p\" and %i children", i+1, i_count, 
+                p_item->p_input->i_id, [o_item pointerValue], p_item->i_children +1 );
+#endif
         [o_to_delete removeObject: o_number];
         [o_outline_view deselectRow: i_row];
 
-        if( [[o_outline_view dataSource] outlineView:o_outline_view
-                                        numberOfChildrenOfItem: o_item]  > 0 )
+        if( p_item->i_children != -1 )
         //is a node and not an item
         {
             if( p_playlist->status.i_status != PLAYLIST_STOPPED &&
                 [self isItem: p_playlist->status.p_item inNode:
                         ((playlist_item_t *)[o_item pointerValue])
                         checkItemExistence: NO] == YES )
-            {
                 // if current item is in selected node and is playing then stop playlist
                 playlist_Stop( p_playlist );
-            }
-            vlc_mutex_lock( &p_playlist->object_lock );
+    
             playlist_NodeDelete( p_playlist, p_item, VLC_TRUE, VLC_FALSE );
-            vlc_mutex_unlock( &p_playlist->object_lock );
         }
         else
-        {
-            playlist_DeleteFromInput( p_playlist, p_item->p_input->i_id, VLC_FALSE );
-        }
+            playlist_DeleteFromInput( p_playlist, p_item->p_input->i_id, VLC_TRUE );
     }
+    PL_UNLOCK;
+
     [self playlistUpdated];
     vlc_object_release( p_playlist );
 }
@@ -913,7 +914,7 @@
     o_name = (NSString *)[o_one_item objectForKey: @"ITEM_NAME"];
     o_options = (NSArray *)[o_one_item objectForKey: @"ITEM_OPTIONS"];
 
-    /* Find the name for a disc entry ( i know, can you believe the trouble?) */
+    /* Find the name for a disc entry (i know, can you believe the trouble?) */
     if( ( !o_name || [o_name isEqualToString:@""] ) && [o_uri rangeOfString: @"/dev/"].location != NSNotFound )
     {
         int i_count, i_index;




More information about the vlc-devel mailing list