Commit 81dc52be authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

macosx/framework: Only create the NSImage corresponding to the artwork if asked.

parent 1d034f0a
...@@ -114,6 +114,7 @@ typedef enum VLCMediaState ...@@ -114,6 +114,7 @@ typedef enum VLCMediaState
id delegate; //< Delegate object id delegate; //< Delegate object
BOOL isArtFetched; //< Value used to determine of the artwork has been preparsed BOOL isArtFetched; //< Value used to determine of the artwork has been preparsed
BOOL areOthersMetaFetched; //< Value used to determine of the other meta has been preparsed BOOL areOthersMetaFetched; //< Value used to determine of the other meta has been preparsed
BOOL isArtURLFetched; //< Value used to determine of the other meta has been preparsed
VLCMediaState state; //< Current state of the media VLCMediaState state; //< Current state of the media
} }
......
...@@ -466,12 +466,12 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) ...@@ -466,12 +466,12 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
if ( newValue != oldValue && !(oldValue && newValue && [oldValue compare:newValue] == NSOrderedSame) ) if ( newValue != oldValue && !(oldValue && newValue && [oldValue compare:newValue] == NSOrderedSame) )
{ {
if ([metaType isEqualToString:VLCMetaInformationArtworkURL]) // Only fetch the art if needed. (ie, create the NSImage, if it was requested before)
if (isArtFetched && [metaType isEqualToString:VLCMetaInformationArtworkURL])
{ {
[NSThread detachNewThreadSelector:@selector(fetchMetaInformationForArtWorkWithURL:) [NSThread detachNewThreadSelector:@selector(fetchMetaInformationForArtWorkWithURL:)
toTarget:self toTarget:self
withObject:newValue]; withObject:newValue];
return;
} }
[metaDictionary setValue:newValue forKeyPath:metaType]; [metaDictionary setValue:newValue forKeyPath:metaType];
...@@ -550,7 +550,14 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) ...@@ -550,7 +550,14 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self)
* 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];
} }
else if( !isArtURLFetched && [keyPath hasPrefix:@"metaDictionary.artworkURL"])
{
isArtURLFetched = YES;
/* Force isArtURLFetched, that will trigger artwork download eventually
* And all the other meta will be added through the libvlc event system */
[self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationArtworkURL];
}
return [super valueForKeyPath:keyPath]; 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