Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
2b0b486d by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Connect/disconnect slave audio group data source within audio data 
source

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
7452dde8 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Add target view changed notification name

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
1d0c127a by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Add method to emit notification about current library target view 
subviews changing

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
4b7399c0 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Call target view change handler on all "show" type methods in 
library window

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
9c509cee by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Disconnect audio data source when current library target view is not 
audio library

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
a1bf5a7e by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Remove handleLibraryTargetViewChanged from library window

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
88d16a39 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Swap library target view notification for video view presented 
notification, handle correctly

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
de04bbdb by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Add starter VLCLibraryDataSource

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
413508ce by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Use library data source protocol in collection view/table view data 
source protocols

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
94ebff91 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Add currentDataSource property to abstract segment view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
5360293f by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Disconnect/reconnect current data source upon receiving video view 
notifications from library window

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
e89f56ab by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Implement currentDataSource in library video view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
88c6543c by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Implement currentDataSource in playlist view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
4edd175f by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Implement currentDataSource in groups view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
eb13e7b3 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Implement currentDataSource in library audio view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
53127e74 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Disconnect/reconnect containers when presenting or dismissing video 
playback view in library window

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
1fd229d1 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Make placeholderImageViewSizeConstraints readonly in abstract segment 
view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
621ae1e0 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Remove embedded view presented/dismissed notifications and their use

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
e3e82404 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Define connect/disconnect in abstract segment view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
c85242cc by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Use view controller connect/disconnect in library window

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
5b6c3a41 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Override connect/disconnect in home view segment controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
19bffd80 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Add connected property to abstract segment view controller

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -
abea8363 by Claudio Cambra at 2024-09-16T06:21:55+00:00
macosx: Use connected property in abstract segment view controller subclasses 
to (not) reconnect data sources after long loads if that is applicable

Signed-off-by: Claudio Cambra <[email protected]>

- - - - -


14 changed files:

- extras/package/macosx/VLC.xcodeproj/project.pbxproj
- modules/gui/macosx/Makefile.am
- modules/gui/macosx/library/VLCLibraryAbstractSegmentViewController.h
- modules/gui/macosx/library/VLCLibraryAbstractSegmentViewController.m
- modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
- + modules/gui/macosx/library/VLCLibraryDataSource.h
- modules/gui/macosx/library/VLCLibraryTableViewDataSource.h
- modules/gui/macosx/library/VLCLibraryWindow.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
- modules/gui/macosx/library/groups-library/VLCLibraryGroupsViewController.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m
- modules/gui/macosx/library/playlist-library/VLCLibraryPlaylistViewController.m
- modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.m


Changes:

=====================================
extras/package/macosx/VLC.xcodeproj/project.pbxproj
=====================================
@@ -314,6 +314,7 @@
                5325720E2C4966630068DEC3 /* VLCLibraryShowsDataSource.m */ = 
{isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
VLCLibraryShowsDataSource.m; sourceTree = "<group>"; };
                5325C57B29302E6800B2B63A /* VLCLibraryAudioViewController.m */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.objc; path = VLCLibraryAudioViewController.m; sourceTree = 
"<group>"; };
                5325C57C29302E6800B2B63A /* VLCLibraryAudioViewController.h */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.h; path = VLCLibraryAudioViewController.h; sourceTree = "<group>"; 
};
+               532CBCFD2C8E025F00899413 /* VLCLibraryDataSource.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
VLCLibraryDataSource.h; sourceTree = "<group>"; };
                533B5D2A29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.h 
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
VLCBookmarksTableViewDataSource.h; sourceTree = "<group>"; };
                533B5D2B29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.m 
*/ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = 
VLCBookmarksTableViewDataSource.m; sourceTree = "<group>"; };
                534E73E029D2EDB1009982DE /* VLCBookmarksTableViewDelegate.h */ 
= {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = 
VLCBookmarksTableViewDelegate.h; sourceTree = "<group>"; };
@@ -1331,6 +1332,7 @@
                                7DBB7638227F3FBC002649E1 /* 
VLCLibraryCollectionViewSupplementaryElementView.m */,
                                7DFBDCA62269E77400B700A5 /* 
VLCLibraryController.h */,
                                7DFBDCA72269E77500B700A5 /* 
VLCLibraryController.m */,
+                               532CBCFD2C8E025F00899413 /* 
VLCLibraryDataSource.h */,
                                7DFBDCB2226CD00900B700A5 /* 
VLCLibraryDataTypes.h */,
                                7DFBDCB3226CD00900B700A5 /* 
VLCLibraryDataTypes.m */,
                                53B40FD52AA878E400C814E4 /* 
VLCLibraryHeroView.h */,
@@ -1339,7 +1341,7 @@
                                7D92AF2023DDCA8D00D81EA3 /* 
VLCLibraryImageCache.m */,
                                536283DC291146BC00640C15 /* 
VLCLibraryItemInternalMediaItemsDataSource.h */,
                                536283DF291146BC00640C15 /* 
VLCLibraryItemInternalMediaItemsDataSource.m */,
-                5360E99F2C5BE01F0046BA8B /* 
VLCLibraryMasterDetailViewTableViewDataSource.h */,
+                               5360E99F2C5BE01F0046BA8B /* 
VLCLibraryMasterDetailViewTableViewDataSource.h */,
                                5360E9A32C5BE5550046BA8B /* 
VLCLibraryMasterDetailViewTableViewDelegate.h */,
                                5360E9A42C5BE5550046BA8B /* 
VLCLibraryMasterDetailViewTableViewDelegate.m */,
                                7DFBDCAF226A518400B700A5 /* 
VLCLibraryMenuController.h */,
@@ -1596,8 +1598,8 @@
                                537BD6852C59216600446ED0 /* 
VLCLibraryGroupsViewController.m */,
                        );
                        path = "groups-library";
-            sourceTree = "<group>";
-        };
+                       sourceTree = "<group>";
+               };
                53A8F9CE2A7E1DE900BC11BF /* playlist-library */ = {
                        isa = PBXGroup;
                        children = (


=====================================
modules/gui/macosx/Makefile.am
=====================================
@@ -122,6 +122,7 @@ libmacosx_plugin_la_SOURCES = \
        gui/macosx/library/VLCLibraryCollectionViewSupplementaryElementView.m \
        gui/macosx/library/VLCLibraryController.h \
        gui/macosx/library/VLCLibraryController.m \
+       gui/macosx/library/VLCLibraryDataSource.h \
        gui/macosx/library/VLCLibraryDataTypes.h \
        gui/macosx/library/VLCLibraryDataTypes.m \
        gui/macosx/library/VLCLibraryHeroView.h \


=====================================
modules/gui/macosx/library/VLCLibraryAbstractSegmentViewController.h
=====================================
@@ -25,6 +25,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 @class VLCLibraryWindow;
+@protocol VLCLibraryDataSource;
 
 @interface VLCLibraryAbstractSegmentViewController : NSObject
 
@@ -33,10 +34,17 @@ NS_ASSUME_NONNULL_BEGIN
 @property (readonly, weak) NSView *emptyLibraryView;
 @property (readonly, weak) NSImageView *placeholderImageView;
 @property (readonly, weak) NSTextField *placeholderLabel;
-@property (readwrite) NSArray<NSLayoutConstraint *> 
*placeholderImageViewSizeConstraints;
+
+// Implement getters for these properties in subclass
+@property (readonly) NSArray<NSLayoutConstraint *> 
*placeholderImageViewSizeConstraints;
+@property (readonly) id<VLCLibraryDataSource> currentDataSource;
+@property (readonly) BOOL connected; // Meaning to library model notifications
 
 - (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow;
 
+- (void)connect;
+- (void)disconnect;
+
 @end
 
 NS_ASSUME_NONNULL_END


=====================================
modules/gui/macosx/library/VLCLibraryAbstractSegmentViewController.m
=====================================
@@ -22,7 +22,8 @@
 
 #import "VLCLibraryAbstractSegmentViewController.h"
 
-#import "VLCLibraryWindow.h"
+#import "library/VLCLibraryDataSource.h"
+#import "library/VLCLibraryWindow.h"
 
 @implementation VLCLibraryAbstractSegmentViewController
 
@@ -40,4 +41,29 @@
     return self;
 }
 
+- (id<VLCLibraryDataSource>)currentDataSource
+{
+    [self doesNotRecognizeSelector:_cmd];
+    return nil;
+}
+
+// A note on the connected property.
+// This does not necessarily reflect the connection state of the data sources 
themselves.
+// We may disconnect the data sources via the view controllers when we detect 
that long loads are
+// taking place. However, keeping the connection state in the view controller 
allows us to
+// reconnect the data sources once the long loads are over (or not reconnect 
them, if the view
+// controller was originally disconnected, for example if the embedded video 
view is open)
+
+- (void)connect
+{
+    [self.currentDataSource connect];
+    _connected = YES;
+}
+
+- (void)disconnect
+{
+    [self.currentDataSource disconnect];
+    _connected = NO;
+}
+
 @end


=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewDataSource.h
=====================================
@@ -22,12 +22,14 @@
 
 #import <Cocoa/Cocoa.h>
 
+#import "library/VLCLibraryDataSource.h"
+
 NS_ASSUME_NONNULL_BEGIN
 
 @class VLCLibraryRepresentedItem;
 @protocol VLCMediaLibraryItemProtocol;
 
-@protocol VLCLibraryCollectionViewDataSource <NSCollectionViewDataSource>
+@protocol VLCLibraryCollectionViewDataSource <NSCollectionViewDataSource, 
VLCLibraryDataSource>
 
 @property (readonly) NSString *supplementaryDetailViewKind;
 
@@ -39,10 +41,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)reloadData;
 
-@optional
-- (void)connect;
-- (void)disconnect;
-
 @end
 
 NS_ASSUME_NONNULL_END


=====================================
modules/gui/macosx/library/VLCLibraryDataSource.h
=====================================
@@ -0,0 +1,21 @@
+//
+//  VLCLibraryDataSource.h
+//  VLC
+//
+//  Created by Claudio Cambra on 9/9/24.
+//
+
+#ifndef VLCLibraryDataSource_h
+#define VLCLibraryDataSource_h
+
+#import <Foundation/Foundation.h>
+
+@protocol VLCLibraryDataSource <NSObject>
+
+@optional
+- (void)connect;
+- (void)disconnect;
+
+@end
+
+#endif /* VLCLibraryDataSource_h */


=====================================
modules/gui/macosx/library/VLCLibraryTableViewDataSource.h
=====================================
@@ -23,12 +23,11 @@
 #import <Cocoa/Cocoa.h>
 
 #import "library/VLCLibraryDataTypes.h"
+#import "library/VLCLibraryDataSource.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
-@protocol VLCMediaLibraryItemProtocol;
-
-@protocol VLCLibraryTableViewDataSource <NSTableViewDataSource>
+@protocol VLCLibraryTableViewDataSource <NSTableViewDataSource, 
VLCLibraryDataSource>
 
 @property (readonly) VLCMediaLibraryParentGroupType currentParentType;
 
@@ -36,10 +35,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (id<VLCMediaLibraryItemProtocol>)libraryItemAtRow:(NSInteger)row
                                        forTableView:(nullable NSTableView 
*)tableView;
 
-@optional
-- (void)connect;
-- (void)disconnect;
-
 @end
 
 NS_ASSUME_NONNULL_END


=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -437,7 +437,6 @@ static void addShadow(NSImageView *__unsafe_unretained 
imageView)
     } else if (segmentType == VLCLibraryStreamsSegment) {
         [self.libraryMediaSourceViewController presentStreamsView];
     }
-    _librarySegmentViewController = self.libraryMediaSourceViewController;
 }
 
 - (void)showGroupsLibrary
@@ -725,12 +724,14 @@ static void addShadow(NSImageView *__unsafe_unretained 
imageView)
     [self.videoViewController showControls];
 
     
self.splitViewController.playlistSidebarViewController.mainVideoModeEnabled = 
YES;
+
+    [self.librarySegmentViewController disconnect];
 }
 
 - (void)disableVideoPlaybackAppearance
 {
     [self 
makeFirstResponder:self.splitViewController.playlistSidebarViewController.view];
-    [VLCMain.sharedInstance.voutProvider updateWindowLevelForHelperWindows: 
NSNormalWindowLevel];
+    [VLCMain.sharedInstance.voutProvider 
updateWindowLevelForHelperWindows:NSNormalWindowLevel];
 
     // restore alpha value to 1 for the case that macosx-opaqueness is set to 
< 1
     self.alphaValue = 1.0;
@@ -739,6 +740,8 @@ static void addShadow(NSImageView *__unsafe_unretained 
imageView)
     [self disableVideoTitleBarMode];
     [self showControlsBarImmediately];
     
self.splitViewController.playlistSidebarViewController.mainVideoModeEnabled = 
NO;
+
+    [self.librarySegmentViewController connect];
 }
 
 - (void)mouseMoved:(NSEvent *)o_event


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
=====================================
@@ -395,12 +395,14 @@ NSString * const 
VLCLibraryAudioDataSourceDisplayedCollectionChangedNotification
                                name:VLCPlayerCurrentMediaItemChanged
                              object:nil];
 
+    [self.audioGroupDataSource connect];
     [self reloadData];
 }
 
 - (void)disconnect
 {
     [NSNotificationCenter.defaultCenter removeObserver:self];
+    [self.audioGroupDataSource disconnect];
 }
 
 + (void)setupCollectionView:(NSCollectionView *)collectionView


=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioViewController.m
=====================================
@@ -133,7 +133,6 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = 
@"VLCLibraryPlaceholderAudi
                                
selector:@selector(libraryModelLongLoadFinished:)
                                    
name:audioMediaDeletedLongLoadFinishNotification
                                  object:nil];
-
     }
 
     return self;
@@ -326,13 +325,20 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = 
@"VLCLibraryPlaceholderAudi
     
_audioLibraryGridModeSplitViewListSelectionCollectionViewScrollView.scrollerInsets
 = audioScrollViewScrollerInsets;
 }
 
-#pragma mark - Show the audio view
+#pragma mark - Superclass property overrides
 
 - (NSArray<NSLayoutConstraint *> *)placeholderImageViewSizeConstraints
 {
     return _internalPlaceholderImageViewSizeConstraints;
 }
 
+- (id<VLCLibraryDataSource>)currentDataSource
+{
+    return self.audioDataSource;
+}
+
+#pragma mark - Show the audio view
+
 - (void)presentAudioView
 {
     self.libraryTargetView.subviews = @[];
@@ -635,8 +641,10 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = 
@"VLCLibraryPlaceholderAudi
         return;
     }
 
-    [self.audioDataSource disconnect];
-    [self.audioGroupDataSource disconnect];
+    if (self.connected) {
+        [self.audioDataSource disconnect];
+        [self.audioGroupDataSource disconnect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 0.0;
@@ -658,8 +666,10 @@ NSString *VLCLibraryPlaceholderAudioViewIdentifier = 
@"VLCLibraryPlaceholderAudi
         return;
     }
 
-    [self.audioDataSource connect];
-    [self.audioGroupDataSource connect];
+    if (self.connected) {
+        [self.audioDataSource connect];
+        [self.audioGroupDataSource connect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 1.0;


=====================================
modules/gui/macosx/library/groups-library/VLCLibraryGroupsViewController.m
=====================================
@@ -189,6 +189,11 @@
     self.selectedGroupTableView.dataSource = self.dataSource;
 }
 
+- (id<VLCLibraryDataSource>)currentDataSource
+{
+    return self.dataSource;
+}
+
 - (void)presentGroupsView
 {
     const VLCLibraryViewModeSegment viewModeSegment =


=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewController.m
=====================================
@@ -282,7 +282,9 @@
         return;
     }
 
-    [self.stackViewController disconnectContainers];
+    if (self.connected) {
+        [self.stackViewController disconnectContainers];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 0.0;
@@ -309,7 +311,9 @@
         return;
     }
 
-    [self.stackViewController connectContainers];
+    if (self.connected) {
+        [self.stackViewController connectContainers];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 1.0;
@@ -326,4 +330,14 @@
     }];
 }
 
+- (void)connect
+{
+    [self.stackViewController connectContainers];
+}
+
+- (void)disconnect
+{
+    [self.stackViewController disconnectContainers];
+}
+
 @end


=====================================
modules/gui/macosx/library/playlist-library/VLCLibraryPlaylistViewController.m
=====================================
@@ -255,6 +255,11 @@
     return _internalPlaceholderImageViewSizeConstraints;
 }
 
+- (id<VLCLibraryDataSource>)currentDataSource
+{
+    return self.dataSource;
+}
+
 // TODO: This is duplicated almost verbatim across all the library view
 // controllers. Ideally we should have the placeholder view handle this
 // itself, or move this into a common superclass
@@ -363,13 +368,16 @@
     }
 }
 
+// TODO: Duplicated a lot, move to abstract view controller?
 - (void)libraryModelLongLoadStarted:(NSNotification *)notification
 {
     if ([self.libraryTargetView.subviews 
containsObject:self.loadingOverlayView]) {
         return;
     }
 
-    [self.dataSource disconnect];
+    if (self.connected) {
+        [self.dataSource disconnect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 0.0;
@@ -391,7 +399,9 @@
         return;
     }
 
-    [self.dataSource connect];
+    if (self.connected) {
+        [self.dataSource connect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 1.0;


=====================================
modules/gui/macosx/library/video-library/VLCLibraryVideoViewController.m
=====================================
@@ -291,6 +291,18 @@
     return _internalPlaceholderImageViewSizeConstraints;
 }
 
+- (id<VLCLibraryDataSource>)currentDataSource
+{
+    const NSInteger librarySegmentType = self.libraryWindow.librarySegmentType;
+    if (librarySegmentType == VLCLibraryVideoSegment) {
+        return self.libraryVideoDataSource;
+    } else if (librarySegmentType == VLCLibraryShowsVideoSubSegment) {
+        return self.libraryShowsDataSource;
+    } else {
+        return nil;
+    }
+}
+
 - (void)updatePresentedVideoLibraryView
 {
     _libraryShowsDataSource = nil;
@@ -507,7 +519,9 @@
         return;
     }
 
-    [self.libraryVideoDataSource disconnect];
+    if (self.connected) {
+        [self.libraryVideoDataSource disconnect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 0.0;
@@ -529,7 +543,9 @@
         return;
     }
 
-    [self.libraryVideoDataSource connect];
+    if (self.connected) {
+        [self.libraryVideoDataSource connect];
+    }
 
     self.loadingOverlayView.wantsLayer = YES;
     self.loadingOverlayView.alphaValue = 1.0;



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/45b36521edbac9d375e915ceda8ff29dda5cc416...abea8363674ba5f31c0d928a2d7a6da56d6d4c7d

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


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to