From 4a19225407971ebbbd26840072d62ededc782d0e Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Sat, 16 Feb 2008 00:33:48 +0000 Subject: [PATCH] macosx/framework: Only fetch meta when needed. --- .../macosx/framework/Headers/Public/VLCMedia.h | 2 +- projects/macosx/framework/Sources/VLCMedia.m | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/macosx/framework/Headers/Public/VLCMedia.h b/projects/macosx/framework/Headers/Public/VLCMedia.h index 58d07047c6..75b3fde4d2 100644 --- a/projects/macosx/framework/Headers/Public/VLCMedia.h +++ b/projects/macosx/framework/Headers/Public/VLCMedia.h @@ -113,7 +113,7 @@ typedef enum VLCMediaState VLCTime * length; //< Duration of the media NSMutableDictionary * metaDictionary; //< Meta data storage 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; } diff --git a/projects/macosx/framework/Sources/VLCMedia.m b/projects/macosx/framework/Sources/VLCMedia.m index 2509d2e2f8..5e96e23d42 100644 --- a/projects/macosx/framework/Sources/VLCMedia.m +++ b/projects/macosx/framework/Sources/VLCMedia.m @@ -430,6 +430,8 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) libvlc_exception_t ex; libvlc_exception_init( &ex ); + artFetched = NO; + char * p_url = libvlc_media_descriptor_get_mrl( p_md, &ex ); catch_exception( &ex ); @@ -463,9 +465,6 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) /* Force VLCMetaInformationTitle, that will trigger preparsing * And all the other meta will be added through the libvlc event system */ [self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationTitle]; - - /* Force VLCMetaInformationArtworkURL, that will trigger artwork fetching */ - [self fetchMetaInformationFromLibVLCWithType: VLCMetaInformationArtworkURL]; } - (void)fetchMetaInformationFromLibVLCWithType:(NSString *)metaType @@ -545,6 +544,17 @@ static void HandleMediaSubItemAdded(const libvlc_event_t * event, void * self) { [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 /****************************************************************************** -- 2.39.2