[vlc-commits] [Git][videolan/vlc][master] 8 commits: macosx: Constify variables in resume library media item playback

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Wed Jan 22 21:20:48 UTC 2025



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
623a4bf1 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Constify variables in resume library media item playback

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
bfcb5276 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Just take input item from media library item when resuming playback

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
5007f5a8 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Assert media item being not nil

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
886c127c by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Use playerController durationOfCurrentMediaItem to get duration to resume playback

It's more reliable than acquiring this from the media library media item

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
8ddeb935 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Add options property to VLCInputItem

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
7de9fa56 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Do not suggest continuing playback if start/stop time is in input item options

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
18fbe621 by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Improve options getter in input item

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -
d628a8de by Claudio Cambra at 2025-01-22T21:07:24+00:00
macosx: Remove dead start/stop time handlng in playback continuity controller

Signed-off-by: Claudio Cambra <developer at claudiocambra.com>

- - - - -


3 changed files:

- modules/gui/macosx/library/VLCInputItem.h
- modules/gui/macosx/library/VLCInputItem.m
- modules/gui/macosx/playqueue/VLCPlaybackContinuityController.m


Changes:

=====================================
modules/gui/macosx/library/VLCInputItem.h
=====================================
@@ -75,6 +75,7 @@ extern NSString * const VLCInputItemCommonDataDifferingFlagString;
 @property (readwrite) NSURL *artworkURL;
 @property (readonly) BOOL preparsed;
 @property (readonly) BOOL isStream;
+ at property (readonly) NSArray<NSString *> *options;
 
 - (void)parseInputItem;
 - (void)cancelParsing;


=====================================
modules/gui/macosx/library/VLCInputItem.m
=====================================
@@ -635,6 +635,18 @@ static const struct input_item_parser_cbs_t parserCallbacks =
     [NSWorkspace.sharedWorkspace activateFileViewerSelectingURLs:@[pathUrl]];
 }
 
+- (NSArray<NSString *> *)options
+{
+    const int i_options = _vlcInputItem->i_options;
+    NSMutableArray * const options = [NSMutableArray arrayWithCapacity:i_options];
+    for (NSUInteger i = 0; i < i_options; ++i) {
+        const char * const psz_option = _vlcInputItem->ppsz_options[i];
+        NSString * const option = NSTR(psz_option);
+        [options addObject:option];
+    }
+    return options.copy;
+}
+
 @end
 
 


=====================================
modules/gui/macosx/playqueue/VLCPlaybackContinuityController.m
=====================================
@@ -156,14 +156,14 @@ static NSString *VLCRecentlyPlayedMediaListKey = @"recentlyPlayedMediaList";
         return;
 
     /* allow the user to over-write the start/stop/run-time */
-    // FIXME: reimplement using new playlist
-#if 0
-    if (var_GetFloat(p_input_thread, "run-time") > 0 ||
-        var_GetFloat(p_input_thread, "start-time") > 0 ||
-        var_GetFloat(p_input_thread, "stop-time") != 0) {
+    NSArray<NSString *> * const options = inputItem.options;
+    const NSUInteger runtimeOption = [options indexOfObjectPassingTest:^BOOL(NSString * const obj, NSUInteger, BOOL *){
+        return [obj hasPrefix:@"start-time"] || [obj hasPrefix:@"stop-time"];
+    }];
+
+    if (runtimeOption != NSNotFound) {
         return;
     }
-#endif
 
     /* check for file existence before resuming */
     if (![self isValidResumeItem:inputItem])
@@ -173,7 +173,7 @@ static NSString *VLCRecentlyPlayedMediaListKey = @"recentlyPlayedMediaList";
     if (!url)
         return;
 
-    VLCMediaLibraryMediaItem *libraryMediaItem = [VLCMediaLibraryMediaItem mediaItemForURL:url];
+    VLCMediaLibraryMediaItem * const libraryMediaItem = [VLCMediaLibraryMediaItem mediaItemForURL:url];
     if (!libraryMediaItem) {
         // input item isn't part of the library
         [self resumeLegacyPlaybackPositionForInputItem:inputItem
@@ -182,26 +182,21 @@ static NSString *VLCRecentlyPlayedMediaListKey = @"recentlyPlayedMediaList";
     }
 
     [self resumePlaybackPositionForLibraryMediaItem:libraryMediaItem
-                                          inputItem:inputItem
                                                 ask:(settingValue == 0)
                                              player:playerController];
 }
 
 - (void)resumePlaybackPositionForLibraryMediaItem:(VLCMediaLibraryMediaItem *)libraryMediaItem
-                                        inputItem:(VLCInputItem *)inputItem
                                               ask:(BOOL)ask
                                            player:(VLCPlayerController *)playerController
 {
-    if(libraryMediaItem == nil) {
-        return;
-    }
+    NSParameterAssert(libraryMediaItem != nil);
 
-    float lastPlaybackPosition = libraryMediaItem.progress;
-    int64_t duration = libraryMediaItem.duration;
-    BOOL isAlbumTrack = libraryMediaItem.mediaSubType == VLC_ML_MEDIA_SUBTYPE_ALBUMTRACK;
+    const float lastPlaybackPosition = libraryMediaItem.progress;
+    const int64_t duration = playerController.durationOfCurrentMediaItem;
+    const BOOL isAlbumTrack = libraryMediaItem.mediaSubType == VLC_ML_MEDIA_SUBTYPE_ALBUMTRACK;
 
     if (lastPlaybackPosition < MinimumStorePercent || duration < MinimumDuration || isAlbumTrack) {
-
         return;
     }
 
@@ -222,7 +217,7 @@ static NSString *VLCRecentlyPlayedMediaListKey = @"recentlyPlayedMediaList";
         _resumeDialogController = [[VLCResumeDialogController alloc] init];
     }
 
-    [_resumeDialogController showWindowWithItem:inputItem
+    [_resumeDialogController showWindowWithItem:libraryMediaItem.inputItem
                                withLastPosition:(lastPlaybackPosition * duration) / 1000
                                 completionBlock:completionBlock];
 }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/cde627b067969d6b0b457828f20c672ceaa93ac5...d628a8de3d46c0ca54607d4edc7276e3e432a344

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/cde627b067969d6b0b457828f20c672ceaa93ac5...d628a8de3d46c0ca54607d4edc7276e3e432a344
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list