[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