|
@@ -280,6 +280,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
|
|
|
libvlc_media_descriptor_retain( md );
|
|
|
p_md = md;
|
|
|
|
|
|
+ metaDictionary = [[NSMutableDictionary alloc] initWithCapacity:3];
|
|
|
[self initInternalMediaDescriptor];
|
|
|
}
|
|
|
return self;
|
|
@@ -348,7 +349,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
|
|
|
|
|
|
libvlc_media_descriptor_set_user_data( p_md, (void*)self, &ex );
|
|
|
quit_on_exception( &ex );
|
|
|
-
|
|
|
+
|
|
|
libvlc_event_manager_t *p_em = libvlc_media_descriptor_event_manager( p_md, &ex );
|
|
|
libvlc_event_attach(p_em, libvlc_MediaDescriptorMetaChanged, HandleMediaMetaChanged, self, &ex);
|
|
|
libvlc_event_attach(p_em, libvlc_MediaDescriptorDurationChanged, HandleMediaDurationChanged, self, &ex);
|
|
@@ -377,7 +378,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
|
|
|
free(psz_value);
|
|
|
|
|
|
if ( !(newValue && oldValue && [oldValue compare:newValue] == NSOrderedSame) )
|
|
|
- {
|
|
|
+ {
|
|
|
if ([metaType isEqualToString:VLCMetaInformationArtworkURL])
|
|
|
{
|
|
|
[NSThread detachNewThreadSelector:@selector(fetchMetaInformationForArtWorkWithURL:)
|
|
@@ -385,8 +386,9 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
|
|
|
withObject:newValue];
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
@synchronized(metaDictionary) {
|
|
|
- [metaDictionary setValue: newValue forKeyPath:metaType];
|
|
|
+ [metaDictionary setValue:newValue forKeyPath:metaType];
|
|
|
}
|
|
|
}
|
|
|
}
|