[vlc-commits] macosx: Use outlets for MainMenu validateMenuItem

Marvin Scholz git at videolan.org
Sun Jun 26 23:07:31 CEST 2016


vlc | branch: master | Marvin Scholz <epirat07 at gmail.com> | Fri Jun 17 21:42:09 2016 +0200| [27e8d938ad7cf81335f3aba25241f6a94be5c1a6] | committer: Jean-Baptiste Kempf

macosx: Use outlets for MainMenu validateMenuItem

This replaces the string comparisons with outlet
pointer comparisons, should speed up things a bit.

Additionally it refactors the the Teletext loop
to use a Objective C iteration.

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

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

 modules/gui/macosx/MainMenu.m |   87 ++++++++++++++++++++++-------------------
 1 file changed, 47 insertions(+), 40 deletions(-)

diff --git a/modules/gui/macosx/MainMenu.m b/modules/gui/macosx/MainMenu.m
index 030aa48..02aa3b1 100644
--- a/modules/gui/macosx/MainMenu.m
+++ b/modules/gui/macosx/MainMenu.m
@@ -1539,101 +1539,108 @@
 - (BOOL)validateMenuItem:(NSMenuItem *)mi
 {
     NSString *title = [mi title];
-    BOOL bEnabled = TRUE;
+    BOOL enabled = YES;
     vlc_value_t val;
     playlist_t *p_playlist = pl_Get(getIntf());
     input_thread_t *p_input = playlist_CurrentInput(p_playlist);
 
-    if ([title isEqualToString: _NS("Stop")]) {
+    if (mi == _stop || mi == _voutMenustop || mi == _dockMenustop) {
         if (!p_input)
-            bEnabled = FALSE;
+            enabled = NO;
         [self setupMenus]; /* Make sure input menu is up to date */
-    } else if ([title isEqualToString: _NS("Record")]) {
-        bEnabled = FALSE;
-        if (p_input)
-            bEnabled = var_GetBool(p_input, "can-record");
-    } else if ([title isEqualToString: _NS("Previous")] ||
-            [title isEqualToString: _NS("Next")]) {
+    } else if (mi == _previous          ||
+               mi == _voutMenuprev      ||
+               mi == _dockMenuprevious  ||
+               mi == _next              ||
+               mi == _voutMenunext      ||
+               mi == _dockMenunext
+               ) {
         PL_LOCK;
-        bEnabled = playlist_CurrentSize(p_playlist) > 1;
+        enabled = playlist_CurrentSize(p_playlist) > 1;
         PL_UNLOCK;
-    } else if ([title isEqualToString: _NS("Random")]) {
+    } else if (mi == _record) {
+        enabled = NO;
+        if (p_input)
+            enabled = var_GetBool(p_input, "can-record");
+    } else if (mi == _random) {
         int i_state;
         var_Get(p_playlist, "random", &val);
         i_state = val.b_bool ? NSOnState : NSOffState;
         [mi setState: i_state];
-    } else if ([title isEqualToString: _NS("Repeat One")]) {
+    } else if (mi == _repeat) {
         int i_state;
         var_Get(p_playlist, "repeat", &val);
         i_state = val.b_bool ? NSOnState : NSOffState;
         [mi setState: i_state];
-    } else if ([title isEqualToString: _NS("Repeat All")]) {
+    } else if (mi == _loop) {
         int i_state;
         var_Get(p_playlist, "loop", &val);
         i_state = val.b_bool ? NSOnState : NSOffState;
         [mi setState: i_state];
-    } else if ([title isEqualToString: _NS("Quit after Playback")]) {
+    } else if (mi == _quitAfterPB) {
         int i_state;
         bool b_value = var_InheritBool(p_playlist, "play-and-exit");
         i_state = b_value ? NSOnState : NSOffState;
         [mi setState: i_state];
-    } else if ([title isEqualToString: _NS("Step Forward")] ||
-               [title isEqualToString: _NS("Step Backward")] ||
-               [title isEqualToString: _NS("Jump to Time")]) {
+    } else if (mi == _fwd || mi == _bwd || mi == _jumpToTime) {
         if (p_input != NULL) {
             var_Get(p_input, "can-seek", &val);
-            bEnabled = val.b_bool;
+            enabled = val.b_bool;
+        } else {
+            enabled = NO;
         }
-        else bEnabled = FALSE;
-    } else if ([title isEqualToString: _NS("Mute")]) {
+    } else if (mi == _mute || mi == _dockMenumute || mi == _voutMenumute) {
         [mi setState: [[VLCCoreInteraction sharedInstance] mute] ? NSOnState : NSOffState];
         [self setupMenus]; /* Make sure audio menu is up to date */
         [self refreshAudioDeviceList];
-    } else if ([title isEqualToString: _NS("Half Size")] ||
-               [title isEqualToString: _NS("Normal Size")] ||
-               [title isEqualToString: _NS("Double Size")] ||
-               [title isEqualToString: _NS("Fit to Screen")] ||
-               [title isEqualToString: _NS("Snapshot")] ||
-               [title isEqualToString: _NS("Fullscreen")] ||
-               [title isEqualToString: _NS("Float on Top")]) {
-        bEnabled = FALSE;
+    } else if (mi == _half_window           ||
+               mi == _normal_window         ||
+               mi == _double_window         ||
+               mi == _fittoscreen           ||
+               mi == _snapshot              ||
+               mi == _voutMenusnapshot      ||
+               mi == _fullscreenItem        ||
+               mi == _voutMenufullscreen    ||
+               mi == _floatontop
+               ) {
+        enabled = NO;
 
         if (p_input != NULL) {
             vout_thread_t *p_vout = getVoutForActiveWindow();
             if (p_vout != NULL) {
-                if ([title isEqualToString: _NS("Float on Top")])
+                if (mi == _floatontop)
                     [mi setState: var_GetBool(p_vout, "video-on-top")];
 
-                if ([title isEqualToString: _NS("Fullscreen")])
+                if (mi == _fullscreenItem || mi == _voutMenufullscreen)
                     [mi setState: var_GetBool(p_vout, "fullscreen")];
 
-                bEnabled = TRUE;
+                enabled = YES;
                 vlc_object_release(p_vout);
             }
         }
 
         [self setupMenus]; /* Make sure video menu is up to date */
 
-    } else if ([title isEqualToString: _NS("Select Renderer…")]) {
-        bEnabled = TRUE;
-    } else if ([title isEqualToString: _NS("Add Subtitle File...")]) {
-        bEnabled = [mi isEnabled];
+    } else if (mi == _openSubtitleFile) {
+        enabled = [mi isEnabled];
         [self setupMenus]; /* Make sure subtitles menu is up to date */
     } else {
         NSMenuItem *_parent = [mi parentItem];
-        if (_parent == _subtitle_size || mi == _subtitle_size ||
+        if (_parent == _subtitle_size || mi == _subtitle_size           ||
             _parent == _subtitle_textcolor || mi == _subtitle_textcolor ||
-            _parent == _subtitle_bgcolor || mi == _subtitle_bgcolor ||
+            _parent == _subtitle_bgcolor || mi == _subtitle_bgcolor     ||
             _parent == _subtitle_bgopacity || mi == _subtitle_bgopacity ||
             _parent == _subtitle_outlinethickness || mi == _subtitle_outlinethickness ||
-            _parent == _teletext || mi == _teletext)
-            bEnabled = _openSubtitleFile.isEnabled;
+            _parent == _teletext || mi == _teletext
+            ) {
+            enabled = _openSubtitleFile.isEnabled;
+        }
     }
 
     if (p_input)
         vlc_object_release(p_input);
 
-    return bEnabled;
+    return enabled;
 }
 
 @end



More information about the vlc-commits mailing list