[vlc-commits] macosx: Replace mountedRemovableMedia by modern API

David Fuhrmann git at videolan.org
Thu Oct 4 12:47:34 CEST 2018


vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Thu Oct  4 12:40:21 2018 +0200| [44c2b2af3e2c8852cd8d1342649ea8cda0cd2945] | committer: David Fuhrmann

macosx: Replace mountedRemovableMedia by modern API

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=44c2b2af3e2c8852cd8d1342649ea8cda0cd2945
---

 modules/gui/macosx/VLCOpenWindowController.m | 32 +++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/modules/gui/macosx/VLCOpenWindowController.m b/modules/gui/macosx/VLCOpenWindowController.m
index 5f6f7d2a0a..80e98176d2 100644
--- a/modules/gui/macosx/VLCOpenWindowController.m
+++ b/modules/gui/macosx/VLCOpenWindowController.m
@@ -786,8 +786,10 @@ static NSString *kCaptureTabViewId  = @"capture";
     }
 }
 
-- (NSDictionary *)scanPath:(NSString *)path
+- (NSDictionary *)scanPath:(NSURL *)url
 {
+    NSString *path = [url path];
+
     NSString *type = [[VLCStringUtility sharedInstance] getVolumeTypeFromMountPath:path];
     NSImage *image = [[NSWorkspace sharedWorkspace] iconForFile: path];
     NSString *devicePath;
@@ -818,8 +820,20 @@ static NSString *kCaptureTabViewId  = @"capture";
     @autoreleasepool {
         NSUInteger count = [paths count];
         NSMutableArray *o_result = [NSMutableArray array];
-        for (NSUInteger i = 0; i < count; i++)
-            [o_result addObject: [self scanPath:[paths objectAtIndex:i]]];
+        for (NSUInteger i = 0; i < count; i++) {
+            NSURL *currentURL = [paths objectAtIndex:i];
+
+            NSNumber *isRemovable = nil;
+            if (![currentURL getResourceValue:&isRemovable forKey:NSURLVolumeIsRemovableKey error:nil] || !isRemovable) {
+                msg_Warn(getIntf(), "Cannot find removable flag for mount point");
+                continue;
+            }
+
+            if (!isRemovable.boolValue)
+                continue;
+
+            [o_result addObject: [self scanPath:currentURL]];
+        }
 
         @synchronized (self) {
             _opticalDevices = [[NSArray alloc] initWithArray: o_result];
@@ -829,7 +843,7 @@ static NSString *kCaptureTabViewId  = @"capture";
     }
 }
 
-- (void)scanSpecialPath:(NSString *)oPath
+- (void)scanSpecialPath:(NSURL *)oPath
 {
     @autoreleasepool {
         NSDictionary *o_dict = [self scanPath:oPath];
@@ -844,7 +858,9 @@ static NSString *kCaptureTabViewId  = @"capture";
 
 - (void)scanOpticalMedia:(NSNotification *)o_notification
 {
-    [NSThread detachNewThreadSelector:@selector(scanDevicesWithPaths:) toTarget:self withObject:[NSArray arrayWithArray:[[NSWorkspace sharedWorkspace] mountedRemovableMedia]]];
+    NSArray *mountURLs = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:@[NSURLVolumeIsRemovableKey] options:NSVolumeEnumerationSkipHiddenVolumes];
+
+    [NSThread detachNewThreadSelector:@selector(scanDevicesWithPaths:) toTarget:self withObject:mountURLs];
 }
 
 - (void)updateMediaSelector:(NSNumber *)selection
@@ -905,9 +921,9 @@ static NSString *kCaptureTabViewId  = @"capture";
     [openPanel setAllowedFileTypes:[NSArray arrayWithObject:@"public.directory"]];
 
     if ([openPanel runModal] == NSModalResponseOK) {
-        NSString *oPath = [[[openPanel URLs] firstObject] path];
-        if ([oPath length] > 0) {
-            [NSThread detachNewThreadSelector:@selector(scanSpecialPath:) toTarget:self withObject:oPath];
+        NSURL *path = openPanel.URL;
+        if (path) {
+            [NSThread detachNewThreadSelector:@selector(scanSpecialPath:) toTarget:self withObject:path];
         }
     }
 }



More information about the vlc-commits mailing list