[vlc-commits] macosx/open: modernize coding style

Felix Paul Kühne git at videolan.org
Tue Jun 11 11:15:06 CEST 2019


vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Tue Jun 11 11:14:42 2019 +0200| [52eb94a956fb2579cfe3ba5310c99749922990bd] | committer: Felix Paul Kühne

macosx/open: modernize coding style

This replaces a struct with manual memory management through an ObjC class and some more nitpicks

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

 .../gui/macosx/windows/VLCOpenWindowController.m   | 115 +++++++++------------
 1 file changed, 51 insertions(+), 64 deletions(-)

diff --git a/modules/gui/macosx/windows/VLCOpenWindowController.m b/modules/gui/macosx/windows/VLCOpenWindowController.m
index f6457df10e..d731ec8c4d 100644
--- a/modules/gui/macosx/windows/VLCOpenWindowController.m
+++ b/modules/gui/macosx/windows/VLCOpenWindowController.m
@@ -39,6 +39,10 @@
 #import "windows/convertandsave/VLCOutput.h"
 #import "windows/VLCOpenInputMetadata.h"
 
+NSString *const VLCOpenFileTabViewId = @"file";
+NSString *const VLCOpenDiscTabViewId = @"disc";
+NSString *const VLCOpenNetworkTabViewId = @"network";
+NSString *const VLCOpenCaptureTabViewId = @"capture";
 NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
 
 @interface VLCOpenBlockDeviceDescription : NSObject
@@ -51,11 +55,20 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
 @end
 
 @implementation VLCOpenBlockDeviceDescription
+ at end
+
+ at interface VLCOpenDisplayInformation : NSObject
+
+ at property (readwrite) CGRect displayBounds;
+ at property (readwrite) CGDirectDisplayID displayID;
 
 @end
 
+ at implementation VLCOpenDisplayInformation
+ at end
+
 @interface VLCOpenTextField : NSTextField
-- (void)mouseDown:(NSEvent *)theEvent;
+
 @end
 
 @implementation VLCOpenTextField
@@ -69,12 +82,6 @@ NSString *const VLCOpenTextFieldWasClicked = @"VLCOpenTextFieldWasClicked";
 
 @end
 
-struct display_info_t
-{
-    CGRect rect;
-    CGDirectDisplayID id;
-};
-
 @interface VLCOpenWindowController()
 {
     VLCOutput *_output;
@@ -104,11 +111,6 @@ struct display_info_t
 
 @implementation VLCOpenWindowController
 
-static NSString *kFileTabViewId     = @"file";
-static NSString *kDiscTabViewId     = @"disc";
-static NSString *kNetworkTabViewId  = @"network";
-static NSString *kCaptureTabViewId  = @"capture";
-
 #pragma mark -
 #pragma mark Init
 
@@ -118,15 +120,6 @@ static NSString *kCaptureTabViewId  = @"capture";
     return self;
 }
 
-- (void)dealloc
-{
-    NSUInteger displayInfoCount = [_displayInfos count];
-    for (int i = 0; i < displayInfoCount; i ++) {
-        NSValue *v = [_displayInfos objectAtIndex:i];
-        free([v pointerValue]);
-    }
-}
-
 - (void)windowDidLoad
 {
     _output = [VLCOutput new];
@@ -418,7 +411,7 @@ static NSString *kCaptureTabViewId  = @"capture";
     }
     if ([_fileSlaveCheckbox state] && _fileSlavePath)
         [options addObject: [NSString stringWithFormat: @"input-slave=%@", _fileSlavePath]];
-    if ([[[_tabView selectedTabViewItem] identifier] isEqualToString: kCaptureTabViewId]) {
+    if ([[[_tabView selectedTabViewItem] identifier] isEqualToString: VLCOpenCaptureTabViewId]) {
         if ([[[_captureModePopup selectedItem] title] isEqualToString: _NS("Screen")]) {
             [self addScreenRecordingOptionsToArray:options];
         }
@@ -480,11 +473,10 @@ static NSString *kCaptureTabViewId  = @"capture";
 - (void)addScreenRecordingOptionsToArray:(NSMutableArray *)options
 {
     NSInteger selected_index = [_screenPopup indexOfSelectedItem];
-    NSValue *v = [_displayInfos objectAtIndex:selected_index];
-    struct display_info_t *item = (struct display_info_t *)[v pointerValue];
+    VLCOpenDisplayInformation *displayInformation = [_displayInfos objectAtIndex:selected_index];
 
     [options addObject: [NSString stringWithFormat: @"screen-fps=%f", [_screenFPSTextField floatValue]]];
-    [options addObject: [NSString stringWithFormat: @"screen-display-id=%i", item->id]];
+    [options addObject: [NSString stringWithFormat: @"screen-display-id=%i", displayInformation.displayID]];
     [options addObject: [NSString stringWithFormat: @"screen-left=%i", [_screenLeftTextField intValue]]];
     [options addObject: [NSString stringWithFormat: @"screen-top=%i", [_screenTopTextField intValue]]];
     [options addObject: [NSString stringWithFormat: @"screen-width=%i", [_screenWidthTextField intValue]]];
@@ -511,14 +503,14 @@ static NSString *kCaptureTabViewId  = @"capture";
 {
     NSString *identifier = [tabViewItem identifier];
 
-    if ([identifier isEqualToString: kFileTabViewId])
+    if ([identifier isEqualToString: VLCOpenFileTabViewId])
         [self openFilePathChanged: nil];
-    else if ([identifier isEqualToString: kDiscTabViewId])
+    else if ([identifier isEqualToString: VLCOpenDiscTabViewId])
         [self scanOpticalMedia: nil];
-    else if ([identifier isEqualToString: kNetworkTabViewId]) {
+    else if ([identifier isEqualToString: VLCOpenNetworkTabViewId]) {
         [self openNetInfoChanged: nil];
         [_netHTTPURLTextField selectText:nil];
-    } else if ([identifier isEqualToString: kCaptureTabViewId])
+    } else if ([identifier isEqualToString: VLCOpenCaptureTabViewId])
         [self openCaptureModeChanged: nil];
 }
 
@@ -534,7 +526,7 @@ static NSString *kCaptureTabViewId  = @"capture";
 - (void)openFileGeneric
 {
     [self openFilePathChanged: nil];
-    [self openTarget: kFileTabViewId];
+    [self openTarget: VLCOpenFileTabViewId];
 }
 
 - (void)openDisc
@@ -544,20 +536,20 @@ static NSString *kCaptureTabViewId  = @"capture";
     }
 
     [self scanOpticalMedia: nil];
-    [self openTarget: kDiscTabViewId];
+    [self openTarget: VLCOpenDiscTabViewId];
 }
 
 - (void)openNet
 {
     [self openNetInfoChanged: nil];
-    [self openTarget: kNetworkTabViewId];
+    [self openTarget: VLCOpenNetworkTabViewId];
     [_netHTTPURLTextField selectText:nil];
 }
 
 - (void)openCapture
 {
     [self openCaptureModeChanged: nil];
-    [self openTarget: kCaptureTabViewId];
+    [self openTarget: VLCOpenCaptureTabViewId];
 }
 
 - (void)openFileWithAction:(void (^)(NSArray *files))action;
@@ -704,7 +696,7 @@ static NSString *kCaptureTabViewId  = @"capture";
     [theView setFrame: NSMakeRect(233, 0, viewRect.size.width, viewRect.size.height)];
     [theView setAutoresizesSubviews: YES];
 
-    NSView *opticalTabView = [[_tabView tabViewItemAtIndex: [_tabView indexOfTabViewItemWithIdentifier:kDiscTabViewId]] view];
+    NSView *opticalTabView = [[_tabView tabViewItemAtIndex: [_tabView indexOfTabViewItemWithIdentifier:VLCOpenDiscTabViewId]] view];
     if (_currentOpticalMediaView) {
         [[opticalTabView animator] replaceSubview: _currentOpticalMediaView with: theView];
     } else {
@@ -734,6 +726,7 @@ static NSString *kCaptureTabViewId  = @"capture";
     NSString *opticalDevicePath = deviceDescription.path;
     NSString *devicePath = deviceDescription.devicePath;
     NSImage *mediaIcon = deviceDescription.mediaIcon;
+    NSFileManager *fileManager = [NSFileManager defaultManager];
 
     if ([diskType isEqualToString: kVLCMediaDVD] || [diskType isEqualToString: kVLCMediaVideoTSFolder]) {
         [_discDVDLabel setStringValue: [[NSFileManager defaultManager] displayNameAtPath:opticalDevicePath]];
@@ -747,20 +740,20 @@ static NSString *kCaptureTabViewId  = @"capture";
             [self showOpticalMediaView: _discDVDwomenusView withIcon:mediaIcon];
         }
     } else if ([diskType isEqualToString: kVLCMediaAudioCD]) {
-        [_discAudioCDLabel setStringValue: [[NSFileManager defaultManager] displayNameAtPath: opticalDevicePath]];
-        [_discAudioCDTrackCountLabel setStringValue: [NSString stringWithFormat:_NS("%i tracks"), [[[NSFileManager defaultManager] subpathsOfDirectoryAtPath: opticalDevicePath error:NULL] count] - 1]]; // minus .TOC.plist
+        [_discAudioCDLabel setStringValue: [fileManager displayNameAtPath: opticalDevicePath]];
+        [_discAudioCDTrackCountLabel setStringValue: [NSString stringWithFormat:_NS("%i tracks"), [[fileManager subpathsOfDirectoryAtPath: opticalDevicePath error:NULL] count] - 1]]; // minus .TOC.plist
         [self showOpticalMediaView: _discAudioCDView withIcon: mediaIcon];
         [self setMRL: [NSString stringWithFormat: @"cdda://%@", devicePath]];
     } else if ([diskType isEqualToString: kVLCMediaVCD]) {
-        [_discVCDLabel setStringValue: [[NSFileManager defaultManager] displayNameAtPath: opticalDevicePath]];
+        [_discVCDLabel setStringValue: [fileManager displayNameAtPath: opticalDevicePath]];
         [self showOpticalMediaView: _discVCDView withIcon: mediaIcon];
         [self setMRL: [NSString stringWithFormat: @"vcd://%@#%i:%i", devicePath, [_discVCDTitleTextField intValue], [_discVCDChapterTextField intValue]]];
     } else if ([diskType isEqualToString: kVLCMediaSVCD]) {
-        [_discVCDLabel setStringValue: [[NSFileManager defaultManager] displayNameAtPath: opticalDevicePath]];
+        [_discVCDLabel setStringValue: [fileManager displayNameAtPath: opticalDevicePath]];
         [self showOpticalMediaView: _discVCDView withIcon: mediaIcon];
         [self setMRL: [NSString stringWithFormat: @"vcd://%@@%i:%i", devicePath, [_discVCDTitleTextField intValue], [_discVCDChapterTextField intValue]]];
     } else if ([diskType isEqualToString: kVLCMediaBD] || [diskType isEqualToString: kVLCMediaBDMVFolder]) {
-        [_discBDLabel setStringValue: [[NSFileManager defaultManager] displayNameAtPath: opticalDevicePath]];
+        [_discBDLabel setStringValue: [fileManager displayNameAtPath: opticalDevicePath]];
         [self showOpticalMediaView: _discBDView withIcon: mediaIcon];
         [self setMRL: [NSString stringWithFormat: @"bluray://%@", opticalDevicePath]];
     } else {
@@ -875,7 +868,7 @@ static NSString *kCaptureTabViewId  = @"capture";
             [_discSelectorPopup selectItemAtIndex: [[_discSelectorPopup itemArray] count] - 1];
 
         // only trigger MRL update if the tab view is active
-        if ([[[_tabView selectedTabViewItem] identifier] isEqualToString:kDiscTabViewId])
+        if ([[[_tabView selectedTabViewItem] identifier] isEqualToString:VLCOpenDiscTabViewId])
             [self discSelectorChanged:nil];
     } else {
         msg_Dbg(getIntf(), "no optical media found");
@@ -1112,8 +1105,7 @@ static NSString *kCaptureTabViewId  = @"capture";
         NSInteger displayID = config_GetInt("screen-display-id");
         unsigned int displayCount = 0;
         CGError returnedError;
-        struct display_info_t *item;
-        NSValue *v;
+        VLCOpenDisplayInformation *displayInformation;
 
         returnedError = CGGetOnlineDisplayList(0, NULL, &displayCount);
         if (!returnedError) {
@@ -1121,26 +1113,21 @@ static NSString *kCaptureTabViewId  = @"capture";
             ids = (CGDirectDisplayID *)vlc_alloc(displayCount, sizeof(CGDirectDisplayID));
             returnedError = CGGetOnlineDisplayList(displayCount, ids, &displayCount);
             if (!returnedError) {
-                NSUInteger displayInfoCount = [_displayInfos count];
-                for (NSUInteger i = 0; i < displayInfoCount; i ++) {
-                    v = [_displayInfos objectAtIndex:i];
-                    free([v pointerValue]);
-                }
                 [_displayInfos removeAllObjects];
                 [_screenPopup removeAllItems];
                 for (unsigned int i = 0; i < displayCount; i ++) {
-                    item = (struct display_info_t *)malloc(sizeof(struct display_info_t));
-                    item->id = ids[i];
-                    item->rect = CGDisplayBounds(item->id);
-                    [_screenPopup addItemWithTitle: [NSString stringWithFormat:@"Screen %d (%dx%d)", i + 1, (int)item->rect.size.width, (int)item->rect.size.height]];
-                    v = [NSValue valueWithPointer:item];
-                    [_displayInfos addObject:v];
-                    if (i == 0 || displayID == item->id || screenIindex - 1 == i) {
+                    displayInformation = [[VLCOpenDisplayInformation alloc] init];
+                    displayInformation.displayID = ids[i];
+                    NSRect displayBounds = CGDisplayBounds(displayInformation.displayID);
+                    displayInformation.displayBounds = displayBounds;
+                    [_screenPopup addItemWithTitle: [NSString stringWithFormat:@"Screen %d (%dx%d)", i + 1, (int)displayBounds.size.width, (int)displayBounds.size.height]];
+                    [_displayInfos addObject:displayInformation];
+                    if (i == 0 || displayID == displayInformation.displayID || screenIindex - 1 == i) {
                         [_screenPopup selectItemAtIndex: i];
-                        [_screenLeftStepper setMaxValue: item->rect.size.width];
-                        [_screenTopStepper setMaxValue: item->rect.size.height];
-                        [_screenWidthStepper setMaxValue: item->rect.size.width];
-                        [_screenHeightStepper setMaxValue: item->rect.size.height];
+                        [_screenLeftStepper setMaxValue: displayBounds.size.width];
+                        [_screenTopStepper setMaxValue: displayBounds.size.height];
+                        [_screenWidthStepper setMaxValue: displayBounds.size.width];
+                        [_screenHeightStepper setMaxValue: displayBounds.size.height];
                     }
                 }
             }
@@ -1177,13 +1164,13 @@ static NSString *kCaptureTabViewId  = @"capture";
     if (selected_index >= [_displayInfos count])
         return;
 
-    NSValue *v = [_displayInfos objectAtIndex:selected_index];
-    struct display_info_t *item = (struct display_info_t *)[v pointerValue];
+    VLCOpenDisplayInformation *displayInformation = [_displayInfos objectAtIndex:selected_index];
+    CGRect displayBounds = displayInformation.displayBounds;
 
-    [_screenLeftStepper setMaxValue: item->rect.size.width];
-    [_screenTopStepper setMaxValue: item->rect.size.height];
-    [_screenWidthStepper setMaxValue: item->rect.size.width];
-    [_screenHeightStepper setMaxValue: item->rect.size.height];
+    [_screenLeftStepper setMaxValue: displayBounds.size.width];
+    [_screenTopStepper setMaxValue: displayBounds.size.height];
+    [_screenWidthStepper setMaxValue: displayBounds.size.width];
+    [_screenHeightStepper setMaxValue: displayBounds.size.height];
 
     [_screenqtkAudioPopup setEnabled: [_screenqtkAudioCheckbox state]];
 }



More information about the vlc-commits mailing list