Commit b7a9ec88 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

MacOSX/Framework/VLCMediaListAspect.m: Use a NSMutableArray to cache the media...

MacOSX/Framework/VLCMediaListAspect.m: Use a NSMutableArray to cache the media list view items. (for the same reason given in previous commit).
parent 40e325ad
...@@ -56,37 +56,21 @@ static void HandleMediaListViewItemAdded(const libvlc_event_t *event, void *user ...@@ -56,37 +56,21 @@ static void HandleMediaListViewItemAdded(const libvlc_event_t *event, void *user
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"]; [self didChange:NSKeyValueChangeInsertion valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
[pool release]; [pool release];
} }
static void HandleMediaListViewWillAddItem(const libvlc_event_t *event, void *user_data)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id self = user_data;
int index = event->u.media_list_view_will_add_item.index;
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
[pool release];
}
static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void * user_data) static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void * user_data)
{ {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id self = user_data; id self = user_data;
int index = event->u.media_list_view_will_add_item.index; int index = event->u.media_list_view_item_deleted.index;
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"]; [self didChange:NSKeyValueChangeRemoval valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
[pool release]; [pool release];
} }
static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void *user_data)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id self = user_data;
int index = event->u.media_list_view_will_add_item.index;
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
[pool release];
}
@implementation VLCMediaListAspect @implementation VLCMediaListAspect
- (void)dealloc - (void)dealloc
{ {
// Release allocated memory // Release allocated memory
libvlc_media_list_view_release(p_mlv); libvlc_media_list_view_release(p_mlv);
[cachedMedia release];
[super dealloc]; [super dealloc];
} }
- (VLCMedia *)mediaAtIndex:(int)index - (VLCMedia *)mediaAtIndex:(int)index
...@@ -124,7 +108,17 @@ static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void ...@@ -124,7 +108,17 @@ static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void
{ {
p_mlv = p_new_mlv; p_mlv = p_new_mlv;
libvlc_media_list_view_retain(p_mlv); libvlc_media_list_view_retain(p_mlv);
//libvlc_media_list_lock(p_mlist);
cachedMedia = [[NSMutableArray alloc] initWithCapacity:libvlc_media_list_view_count(p_mlv, NULL)];
int i, count = libvlc_media_list_count(p_mlv, NULL);
for( i = 0; i < count; i++ )
{
libvlc_media_descriptor_t * p_md = libvlc_media_list_view_item_at_index(p_mlv, i, NULL);
[cachedMedia addObject:[VLCMedia mediaWithLibVLCMediaDescriptor: p_md]];
libvlc_media_descriptor_release(p_md);
}
[self initInternalMediaListView]; [self initInternalMediaListView];
//libvlc_media_list_unlock(p_mlist);
} }
return self; return self;
} }
...@@ -145,10 +139,7 @@ static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void ...@@ -145,10 +139,7 @@ static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void
/* Add internal callback */ /* Add internal callback */
libvlc_event_attach( p_em, libvlc_MediaListViewItemAdded, HandleMediaListViewItemAdded, self, &e ); libvlc_event_attach( p_em, libvlc_MediaListViewItemAdded, HandleMediaListViewItemAdded, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewWillAddItem, HandleMediaListViewWillAddItem, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewItemDeleted, HandleMediaListViewItemDeleted, self, &e ); libvlc_event_attach( p_em, libvlc_MediaListViewItemDeleted, HandleMediaListViewItemDeleted, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewWillDeleteItem, HandleMediaListViewWillDeleteItem, self, &e );
quit_on_exception( &e ); quit_on_exception( &e );
} }
@end @end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment