Commit 4a192254 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

macosx/framework: Only fetch meta when needed.

parent c6f9a67d
...@@ -113,7 +113,7 @@ typedef enum VLCMediaState ...@@ -113,7 +113,7 @@ typedef enum VLCMediaState
VLCTime * length; //< Duration of the media VLCTime * length; //< Duration of the media
NSMutableDictionary * metaDictionary; //< Meta data storage NSMutableDictionary * metaDictionary; //< Meta data storage
id delegate; //< Delegate object id delegate; //< Delegate object
BOOL preparsed; //< Value used to determine of the file has been preparsed BOOL artFetched; //< Value used to determine of the artwork has been preparsed
VLCMediaState state; VLCMediaState state;
} }
......
...@@ -430,6 +430,8 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) ...@@ -430,6 +430,8 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
libvlc_exception_t ex; libvlc_exception_t ex;
libvlc_exception_init( &ex ); libvlc_exception_init( &ex );
artFetched = NO;
char * p_url = libvlc_media_descriptor_get_mrl( p_md, &ex ); char * p_url = libvlc_media_descriptor_get_mrl( p_md, &ex );
catch_exception( &ex ); catch_exception( &ex );
...@@ -463,9 +465,6 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) ...@@ -463,9 +465,6 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
/* Force VLCMetaInformationTitle, that will trigger preparsing /* Force VLCMetaInformationTitle, that will trigger preparsing
* And all the other meta will be added through the libvlc event system */ * And all the other meta will be added through the libvlc event system */
[self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationTitle]; [self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationTitle];
/* Force VLCMetaInformationArtworkURL, that will trigger artwork fetching */
[self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationArtworkURL];
} }
- (void)fetchMetaInformationFromLibVLCWithType:(NSString *)metaType - (void)fetchMetaInformationFromLibVLCWithType:(NSString *)metaType
...@@ -545,6 +544,17 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) ...@@ -545,6 +544,17 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
{ {
[self setState: [newStateAsNumber intValue]]; [self setState: [newStateAsNumber intValue]];
} }
- (id)valueForKeyPath:(NSString *)keyPath
{
if( ![metaDictionary objectForKey:@"artwork"] && [keyPath isEqualToString:@"metaDictionary.artwork"])
{
artFetched = YES;
/* Force the retrieval of the artwork now that someone asked for it */
[self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationArtworkURL];
}
return [super valueForKeyPath:keyPath];
}
@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