فهرست منبع

fix elapsed playback time update for now info center and watch app especially for continue playback from last playback position and scrubbing

Tobias Conradi 10 سال پیش
والد
کامیت
d0406b4a20
3فایلهای تغییر یافته به همراه21 افزوده شده و 4 حذف شده
  1. 1 0
      Sources/VLCMovieViewController.m
  2. 2 0
      Sources/VLCPlaybackController.h
  3. 18 4
      Sources/VLCPlaybackController.m

+ 1 - 0
Sources/VLCMovieViewController.m

@@ -685,6 +685,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
 {
     if (!_positionSet) {
         [VLCPlaybackController sharedInstance].mediaPlayer.position = self.timeNavigationTitleView.positionSlider.value;
+        [[VLCPlaybackController sharedInstance] setNeedsMetadataUpdate];
         _positionSet = YES;
     }
 }

+ 2 - 0
Sources/VLCPlaybackController.h

@@ -80,4 +80,6 @@ currentMediaHasTrackToChooseFrom:(BOOL)currentMediaHasTrackToChooseFrom
 
 - (void)recoverDisplayedMetadata;
 
+- (void)setNeedsMetadataUpdate;
+
 @end

+ 18 - 4
Sources/VLCPlaybackController.m

@@ -43,6 +43,8 @@
     NSString *_artist;
     NSString *_albumName;
     BOOL _mediaIsAudioOnly;
+
+    BOOL _needsMetadataUpdate;
 }
 
 @end
@@ -482,8 +484,6 @@
         [_mediaPlayer performSelector:@selector(setTextRendererFont:) withObject:[self _resolveFontName]];
         [_mediaPlayer performSelector:@selector(setTextRendererFontSize:) withObject:[[NSUserDefaults standardUserDefaults] objectForKey:kVLCSettingSubtitlesFontSize]];
         [_mediaPlayer performSelector:@selector(setTextRendererFontColor:) withObject:[[NSUserDefaults standardUserDefaults] objectForKey:kVLCSettingSubtitlesFontColor]];
-
-        [self _updateDisplayedMetadata];
     } else if (currentState == VLCMediaPlayerStateError) {
         _playbackFailed = YES;
         if ([self.delegate respondsToSelector:@selector(presentingViewControllerShouldBeClosedAfterADelay:)])
@@ -510,6 +510,8 @@
               currentMediaHasTrackToChooseFrom:self.currentMediaHasTrackToChooseFrom
                        currentMediaHasChapters:self.currentMediaHasChapters
                          forPlaybackController:self];
+
+    [self setNeedsMetadataUpdate];
 }
 
 #pragma mark - playback controls
@@ -718,16 +720,28 @@
 #pragma mark - metadata handling
 - (void)mediaDidFinishParsing:(VLCMedia *)aMedia
 {
-    [self _updateDisplayedMetadata];
+    [self setNeedsMetadataUpdate];
 }
 
 - (void)mediaMetaDataDidChange:(VLCMedia*)aMedia
 {
-    [self _updateDisplayedMetadata];
+    [self setNeedsMetadataUpdate];
+}
+
+- (void)setNeedsMetadataUpdate
+{
+    if (_needsMetadataUpdate == NO) {
+        _needsMetadataUpdate = YES;
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            [self _updateDisplayedMetadata];
+        });
+    }
 }
 
 - (void)_updateDisplayedMetadata
 {
+    _needsMetadataUpdate = NO;
+
     MLFile *item;
     NSNumber *trackNumber;
     _mediaIsAudioOnly = YES;