Commit 62166376 authored by David Fuhrmann's avatar David Fuhrmann

macosx: be more tolerant when checking for physical device (fixes #6253)

parent bfa8edd8
...@@ -886,10 +886,10 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -886,10 +886,10 @@ static VLCOpen *_o_sharedMainInstance = nil;
if (noErr == err) if (noErr == err)
actualVolume = catalogInfo.volume; actualVolume = catalogInfo.volume;
else else
return NULL; goto out;
} }
else else
return NULL; goto out;
GetVolParmsInfoBuffer volumeParms; GetVolParmsInfoBuffer volumeParms;
err = FSGetVolumeParms(actualVolume, &volumeParms, sizeof(volumeParms)); err = FSGetVolumeParms(actualVolume, &volumeParms, sizeof(volumeParms));
...@@ -897,22 +897,29 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -897,22 +897,29 @@ static VLCOpen *_o_sharedMainInstance = nil;
CFMutableDictionaryRef matchingDict; CFMutableDictionaryRef matchingDict;
io_service_t service; io_service_t service;
if (!volumeParms.vMDeviceID) if (!volumeParms.vMDeviceID) {
return NULL; goto out;
}
matchingDict = IOBSDNameMatching(kIOMasterPortDefault, 0, volumeParms.vMDeviceID); matchingDict = IOBSDNameMatching(kIOMasterPortDefault, 0, volumeParms.vMDeviceID);
service = IOServiceGetMatchingService(kIOMasterPortDefault, matchingDict); service = IOServiceGetMatchingService(kIOMasterPortDefault, matchingDict);
NSString *returnValue;
NSString *returnValue = nil;
if (IO_OBJECT_NULL != service) { if (IO_OBJECT_NULL != service) {
if (IOObjectConformsTo(service, kIOCDMediaClass)) { if (IOObjectConformsTo(service, kIOCDMediaClass))
returnValue = kVLCMediaAudioCD; returnValue = kVLCMediaAudioCD;
}
else if (IOObjectConformsTo(service, kIODVDMediaClass)) else if (IOObjectConformsTo(service, kIODVDMediaClass))
returnValue = kVLCMediaDVD; returnValue = kVLCMediaDVD;
else if (IOObjectConformsTo(service, kIOBDMediaClass)) else if (IOObjectConformsTo(service, kIOBDMediaClass))
returnValue = kVLCMediaBD; returnValue = kVLCMediaBD;
else { IOObjectRelease(service);
if (returnValue)
return returnValue;
}
out:
if ([mountPath rangeOfString:@"VIDEO_TS" options:NSCaseInsensitiveSearch | NSBackwardsSearch].location != NSNotFound) if ([mountPath rangeOfString:@"VIDEO_TS" options:NSCaseInsensitiveSearch | NSBackwardsSearch].location != NSNotFound)
returnValue = kVLCMediaVideoTSFolder; returnValue = kVLCMediaVideoTSFolder;
else if ([mountPath rangeOfString:@"BDMV" options:NSCaseInsensitiveSearch | NSBackwardsSearch].location != NSNotFound) else if ([mountPath rangeOfString:@"BDMV" options:NSCaseInsensitiveSearch | NSBackwardsSearch].location != NSNotFound)
...@@ -953,10 +960,7 @@ static VLCOpen *_o_sharedMainInstance = nil; ...@@ -953,10 +960,7 @@ static VLCOpen *_o_sharedMainInstance = nil;
if (!returnValue) if (!returnValue)
returnValue = kVLCMediaVideoTSFolder; returnValue = kVLCMediaVideoTSFolder;
} }
}
IOObjectRelease(service);
}
return returnValue; return returnValue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment