[vlc-commits] [Git][videolan/vlc][master] macosx: use vlc_ml_list_favorite_media for all-favorites list
Steve Lhomme (@robUx4)
gitlab at videolan.org
Thu Apr 16 06:02:13 UTC 2026
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
bd0df9c8 by Felix Paul Kühne at 2026-04-16T06:36:57+02:00
macosx: use vlc_ml_list_favorite_media for all-favorites list
Use the media library API to fetch all favorites in a single sorted
query instead of merging two separate lists and re-sorting in the UI.
Removes the sortMediaItems method which performed database lookups
inside the sort comparator.
- - - - -
1 changed file:
- modules/gui/macosx/library/VLCLibraryModel.m
Changes:
=====================================
modules/gui/macosx/library/VLCLibraryModel.m
=====================================
@@ -965,10 +965,13 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
switch(parentType) {
case VLCMediaLibraryParentGroupTypeAllFavorites:
{
- NSMutableArray<VLCMediaLibraryMediaItem *> *allFavorites = [NSMutableArray array];
- [allFavorites addObjectsFromArray:self.listOfFavoriteVideoMedia];
- [allFavorites addObjectsFromArray:self.listOfFavoriteAudioMedia];
- return [self sortMediaItems:allFavorites];
+ const vlc_ml_query_params_t queryParams = [self queryParams];
+ vlc_ml_media_list_t * const p_media_list = vlc_ml_list_favorite_media(_p_mediaLibrary, &queryParams);
+ NSArray * const mediaArray = [NSArray arrayFromVlcMediaList:p_media_list];
+ if (p_media_list) {
+ vlc_ml_media_list_release(p_media_list);
+ }
+ return mediaArray ?: @[];
}
case VLCMediaLibraryParentGroupTypeArtist:
return self.listOfArtists;
@@ -1000,74 +1003,6 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
return mediaItems.copy;
}
-- (NSArray<VLCMediaLibraryMediaItem *> *)sortMediaItems:(NSArray<VLCMediaLibraryMediaItem *> *)items
-{
- if (items.count == 0) {
- return items;
- }
-
- const BOOL descending = _sortDescending;
-
- return [items sortedArrayUsingComparator:^NSComparisonResult(VLCMediaLibraryMediaItem *item1, VLCMediaLibraryMediaItem *item2) {
- NSComparisonResult result = NSOrderedSame;
-
- switch (self->_sortCriteria) {
- case VLC_ML_SORTING_DEFAULT:
- case VLC_ML_SORTING_ALPHA:
- result = [item1.title localizedCaseInsensitiveCompare:item2.title];
- break;
- case VLC_ML_SORTING_DURATION:
- result = [@(item1.duration) compare:@(item2.duration)];
- break;
- case VLC_ML_SORTING_INSERTIONDATE:
- case VLC_ML_SORTING_LASTMODIFICATIONDATE:
- result = NSOrderedSame;
- break;
- case VLC_ML_SORTING_RELEASEDATE:
- result = [@(item1.year) compare:@(item2.year)];
- break;
- case VLC_ML_SORTING_FILESIZE:
- result = NSOrderedSame;
- break;
- case VLC_ML_SORTING_ARTIST:
- {
- VLCMediaLibraryAlbum *album1 = [VLCMediaLibraryAlbum albumWithID:item1.albumID];
- VLCMediaLibraryAlbum *album2 = [VLCMediaLibraryAlbum albumWithID:item2.albumID];
- if (album1 && album2) {
- result = [album1.artistName localizedCaseInsensitiveCompare:album2.artistName];
- } else {
- result = NSOrderedSame;
- }
- break;
- }
- case VLC_ML_SORTING_PLAYCOUNT:
- result = [@(item1.playCount) compare:@(item2.playCount)];
- break;
- case VLC_ML_SORTING_ALBUM:
- {
- VLCMediaLibraryAlbum *album1 = [VLCMediaLibraryAlbum albumWithID:item1.albumID];
- VLCMediaLibraryAlbum *album2 = [VLCMediaLibraryAlbum albumWithID:item2.albumID];
- if (album1 && album2) {
- result = [album1.title localizedCaseInsensitiveCompare:album2.title];
- } else {
- result = NSOrderedSame;
- }
- break;
- }
- case VLC_ML_SORTING_FILENAME:
- result = [item1.title localizedCaseInsensitiveCompare:item2.title];
- break;
- case VLC_ML_SORTING_TRACKNUMBER:
- result = [@(item1.trackNumber) compare:@(item2.trackNumber)];
- break;
- default:
- result = NSOrderedSame;
- break;
- }
-
- return descending ? -result : result;
- }];
-}
- (void)sortByCriteria:(enum vlc_ml_sorting_criteria_t)sortCriteria andDescending:(bool)descending
{
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/bd0df9c8b455797e0722df820ddeb689242e6263
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/bd0df9c8b455797e0722df820ddeb689242e6263
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list