Index: macosx/Controller.mm===================================================================--- macosx/Controller.mm (revision 1345)+++ macosx/Controller.mm (working copy)@@ -1229,6 +1229,8 @@ /* Here we actually tell hb_scan to perform the source scan, using the path to source and title number*/ - (void) performScan:(NSString *) scanPath scanTitleNum: (int) scanTitleNum {+ /* use a bool to determine whether or not we can decrypt using vlc */+ BOOL cancelScanDecrypt = 0; NSString *path = scanPath; HBDVDDetector *detector = [HBDVDDetector detectorForPath:path]; if( [detector isVideoDVD] )@@ -1237,21 +1239,74 @@ // device path instead. path = [detector devicePath]; [self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];++ /* lets check for vlc here to make sure we have a dylib available to use for decrypting */+ NSString *vlcPath = @"/Applications/VLC.app";+ NSFileManager * fileManager = [NSFileManager defaultManager];+ if ([fileManager fileExistsAtPath:vlcPath] == 0) + {+ /*vlc not found in /Applications so we set the bool to cancel scanning to 1 */+ cancelScanDecrypt = 1;+ [self writeToActivityLog: "VLC app not found for decrypting physical dvd"];+ int status;+ status = NSRunAlertPanel(@"HandBrake could not find VLC.",@"Please download and install VLC in your /Applications folder if you wish to decrypt dvd's.", @"Get VLC", @"Cancel Scan", @"Attempt Scan Anyway");+ [NSApp requestUserAttention:NSCriticalRequest];++ if (status == NSAlertDefaultReturn)+ {+ /* User chose to go download vlc (as they rightfully should) so we send them to the vlc site */+ [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.videolan.org/"]];+ }+ else if (status == NSAlertAlternateReturn)+ {+ /* User chose to cancel the scan */+ [self writeToActivityLog: "cannot open physical dvd , scan cancelled"];+ }+ else+ {+ /* User chose to override our warning and scan the physical dvd anyway, at their own peril. on an encrypted dvd this produces massive log files and fails */+ cancelScanDecrypt = 0;+ [self writeToActivityLog: "user overrode vlc warning -trying to open physical dvd without decryption"];+ }++ }+ else+ {+ /* VLC was found in /Applications so all is well, we can carry on using vlc's libdvdcss.dylib for decrypting if needed */+ [self writeToActivityLog: "VLC app found for decrypting physical dvd"];+ }+ }- /* If there is no title number passed to scan, we use "0"- * which causes the default behavior of a full source scan- */- if (!scanTitleNum)++++ if (cancelScanDecrypt == 0) {- scanTitleNum = 0;++ /* we actually pass the scan off to libhb here */+ /* If there is no title number passed to scan, we use "0"+ * which causes the default behavior of a full source scan+ */+ if (!scanTitleNum)+ {+ scanTitleNum = 0;+ }+ if (scanTitleNum > 0)+ {+ [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];+ }+ hb_scan( fHandle, [path UTF8String], scanTitleNum );+ [fSrcDVD2Field setStringValue: [NSString stringWithFormat: @"Scanning new source ..."]]; }- if (scanTitleNum > 0)+ else {- [self writeToActivityLog: "scanning specifically for title: %d", scanTitleNum];+ /* if we have a title loaded up */+ if ([[fSrcDVD2Field stringValue] length] > 0)+ {+ [self enableUI: YES];+ } }- [fSrcDVD2Field setStringValue: [NSString stringWithFormat: @"Scanning new source ..."]];- /* we actually pass the scan off to libhb here */- hb_scan( fHandle, [path UTF8String], scanTitleNum );+ }Index: macosx/HandBrake.xcodeproj/project.pbxproj===================================================================--- macosx/HandBrake.xcodeproj/project.pbxproj (revision 1345)+++ macosx/HandBrake.xcodeproj/project.pbxproj (working copy)@@ -970,7 +970,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1031,7 +1030,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1090,7 +1088,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1176,7 +1173,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1221,7 +1217,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1341,7 +1336,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1384,7 +1378,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1440,7 +1433,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,@@ -1499,7 +1491,6 @@ ../contrib/lib/libavcodec.a, ../contrib/lib/libavutil.a, ../contrib/lib/libdvdread.a,- ../contrib/lib/libdvdcss.a, ../contrib/lib/libfaac.a, ../contrib/lib/libmp3lame.a, ../contrib/lib/libmpeg2.a,