Преглед на файлове

macosx/framework: Only fetch meta when needed.

Pierre d'Herbemont преди 17 години
родител
ревизия
99c09d83f1
променени са 2 файла, в които са добавени 14 реда и са изтрити 4 реда
  1. 1 1
      Headers/Public/VLCMedia.h
  2. 13 3
      Sources/VLCMedia.m

+ 1 - 1
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;
 }
 

+ 13 - 3
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
 
 /******************************************************************************