[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