]> granicus.if.org Git - handbrake/commitdiff
MacGui: Simplify HBDVDDetector bsdName creation
authordynaflash <dynaflashtech@gmail.com>
Mon, 25 Apr 2011 14:23:37 +0000 (14:23 +0000)
committerdynaflash <dynaflashtech@gmail.com>
Mon, 25 Apr 2011 14:23:37 +0000 (14:23 +0000)
- Instead of lazily populating bsdName identically in two places, why not just have its accessor do it.
-  As per patch provided by blindjimmy https://reviews.handbrake.fr/r/78/

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3956 b64f7644-9d1e-0410-96f1-a4d463321fa5

macosx/HBDVDDetector.m

index 81a854597343eec37db18910cb0ac5abeed808b7..be2fbbe0d3dac504988bc35e2cc973ae95ac8ba5 100644 (file)
@@ -16,7 +16,7 @@
 
 @interface HBDVDDetector (Private)
 
-- (NSString *)bsdNameForPath;
+- (NSString *)bsdName;
 - (BOOL)pathHasVideoTS;
 - (BOOL)deviceIsDVD;
 - (io_service_t)getIOKitServiceForBSDName;
 
 - (BOOL)isVideoDVD
 {
-    if( !bsdName )
-    {
-        bsdName = [[self bsdNameForPath] retain];
-    }
     return ( [self pathHasVideoTS] && [self deviceIsDVD] );
 }
 
 
 - (NSString *)devicePath
 {
-    if( !bsdName )
-    {
-        bsdName = [[self bsdNameForPath] retain];
-    }
-    return [NSString stringWithFormat:@"/dev/%@", bsdName];
+    return [NSString stringWithFormat:@"/dev/%@", [self bsdName]];
 }
 
 @end
 
 @implementation HBDVDDetector (Private)
 
-- (NSString *)bsdNameForPath
+- (NSString *)bsdName
 {
+    if ( bsdName )
+    {
+        return bsdName;
+    }
+
     OSStatus err;
     FSRef ref;
     err = FSPathMakeRef( (const UInt8 *) [path fileSystemRepresentation],
-                         &ref, NULL ); 
+                         &ref, NULL );
     if( err != noErr )
     {
         return nil;
         return nil;
     }
 
-    return [NSString stringWithUTF8String:(const char *)volumeParms.vMDeviceID];
+    bsdName = [[NSString stringWithUTF8String:(const char *)volumeParms.vMDeviceID] retain];
+    return bsdName;
 }
 
 
 - (io_service_t)getIOKitServiceForBSDName
 {
     CFMutableDictionaryRef  matchingDict;
-    matchingDict = IOBSDNameMatching( kIOMasterPortDefault, 0, [bsdName UTF8String] );
+    matchingDict = IOBSDNameMatching( kIOMasterPortDefault, 0, [[self bsdName] UTF8String] );
     if( matchingDict == NULL )
     {
         return IO_OBJECT_NULL;
     }
-       
+
     // Fetch the object with the matching BSD node name. There should only be
     // one match, so IOServiceGetMatchingService is used instead of
     // IOServiceGetMatchingServices to simplify the code.
-    return IOServiceGetMatchingService( kIOMasterPortDefault, matchingDict );    
+    return IOServiceGetMatchingService( kIOMasterPortDefault, matchingDict );
 }