[vlc-commits] macosx/MainWindow: added a fast-mode to show/hide the customizable buttons, since there is no need to do CoreAnimation stuff in a hidden window ( close #7360)
Felix Paul Kühne
git at videolan.org
Fri Aug 24 00:26:36 CEST 2012
vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Fri Aug 24 00:26:10 2012 +0200| [9e62f5f7b4913c00da137d610e3439c6a0eaa80c] | committer: Felix Paul Kühne
macosx/MainWindow: added a fast-mode to show/hide the customizable buttons, since there is no need to do CoreAnimation stuff in a hidden window (close #7360)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9e62f5f7b4913c00da137d610e3439c6a0eaa80c
---
modules/gui/macosx/MainWindow.m | 79 +++++++++++++++++++++++++++------------
1 file changed, 56 insertions(+), 23 deletions(-)
diff --git a/modules/gui/macosx/MainWindow.m b/modules/gui/macosx/MainWindow.m
index 0d2ea69..c0b0342 100644
--- a/modules/gui/macosx/MainWindow.m
+++ b/modules/gui/macosx/MainWindow.m
@@ -316,11 +316,11 @@ static VLCMainWindow *_o_sharedInstance = nil;
b_show_jump_buttons = config_GetInt( VLCIntf, "macosx-show-playback-buttons" );
if (b_show_jump_buttons)
- [self addJumpButtons];
+ [self addJumpButtons:YES];
b_show_playmode_buttons = config_GetInt( VLCIntf, "macosx-show-playmode-buttons" );
if (!b_show_playmode_buttons)
- [self removePlaymodeButtons];
+ [self removePlaymodeButtons:YES];
/* interface builder action */
float f_threshold_height = f_min_video_height + [o_bottombar_view frame].size.height;
@@ -645,12 +645,12 @@ static VLCMainWindow *_o_sharedInstance = nil;
b_show_jump_buttons = config_GetInt( VLCIntf, "macosx-show-playback-buttons" );
if (b_show_jump_buttons)
- [self addJumpButtons];
+ [self addJumpButtons:NO];
else
- [self removeJumpButtons];
+ [self removeJumpButtons:NO];
}
-- (void)addJumpButtons
+- (void)addJumpButtons:(BOOL)b_fast
{
NSRect preliminaryFrame = [o_bwd_btn frame];
BOOL b_enabled = [o_bwd_btn isEnabled];
@@ -682,7 +682,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
#define moveItem( item ) \
frame = [item frame]; \
frame.origin.x = frame.origin.x + f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
moveItem( o_bwd_btn );
moveItem( o_play_btn );
@@ -698,7 +701,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
frame = [item frame]; \
frame.size.width = frame.size.width - f_space; \
frame.origin.x = frame.origin.x + f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
resizeItem( o_time_sld );
resizeItem( o_progress_bar );
@@ -709,21 +715,31 @@ static VLCMainWindow *_o_sharedInstance = nil;
preliminaryFrame.origin.x = [o_next_btn frame].origin.x + 80. + [o_fwd_btn frame].size.width;
[o_next_btn setFrame: preliminaryFrame];
- // wait until the animation is done
- [[self contentView] performSelector:@selector(addSubview:) withObject:o_prev_btn afterDelay:.2];
- [[self contentView] performSelector:@selector(addSubview:) withObject:o_next_btn afterDelay:.2];
+ // wait until the animation is done, if displayed
+ if (b_fast) {
+ [[self contentView] addSubview:o_prev_btn];
+ [[self contentView] addSubview:o_next_btn];
+ } else {
+ [[self contentView] performSelector:@selector(addSubview:) withObject:o_prev_btn afterDelay:.2];
+ [[self contentView] performSelector:@selector(addSubview:) withObject:o_next_btn afterDelay:.2];
+ }
[o_fwd_btn setAction:@selector(forward:)];
[o_bwd_btn setAction:@selector(backward:)];
}
-- (void)removeJumpButtons
+- (void)removeJumpButtons:(BOOL)b_fast
{
if (!o_prev_btn || !o_next_btn )
return;
- [[o_prev_btn animator] setHidden: YES];
- [[o_next_btn animator] setHidden: YES];
+ if( b_fast ) {
+ [o_prev_btn setHidden: YES];
+ [o_next_btn setHidden: YES];
+ } else {
+ [[o_prev_btn animator] setHidden: YES];
+ [[o_next_btn animator] setHidden: YES];
+ }
[o_prev_btn removeFromSuperviewWithoutNeedingDisplay];
[o_next_btn removeFromSuperviewWithoutNeedingDisplay];
[o_prev_btn release];
@@ -734,7 +750,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
#define moveItem( item ) \
frame = [item frame]; \
frame.origin.x = frame.origin.x - f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
moveItem( o_bwd_btn );
moveItem( o_play_btn );
@@ -750,7 +769,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
frame = [item frame]; \
frame.size.width = frame.size.width + f_space; \
frame.origin.x = frame.origin.x - f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
resizeItem( o_time_sld );
resizeItem( o_progress_bar );
@@ -769,12 +791,12 @@ static VLCMainWindow *_o_sharedInstance = nil;
b_show_playmode_buttons = config_GetInt( VLCIntf, "macosx-show-playmode-buttons" );
if (b_show_playmode_buttons)
- [self addPlaymodeButtons];
+ [self addPlaymodeButtons:NO];
else
- [self removePlaymodeButtons];
+ [self removePlaymodeButtons:NO];
}
-- (void)addPlaymodeButtons
+- (void)addPlaymodeButtons:(BOOL)b_fast
{
NSRect frame;
float f_space = [o_repeat_btn frame].size.width + [o_shuffle_btn frame].size.width - 6.;
@@ -785,7 +807,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
frame = [item frame]; \
frame.size.width = frame.size.width - f_space; \
frame.origin.x = frame.origin.x + f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
resizeItem( o_time_sld );
resizeItem( o_progress_bar );
@@ -793,11 +818,16 @@ static VLCMainWindow *_o_sharedInstance = nil;
resizeItem( o_time_sld_fancygradient_view );
#undef resizeItem
- [[o_repeat_btn animator] setHidden: NO];
- [[o_shuffle_btn animator] setHidden: NO];
+ if (b_fast) {
+ [o_repeat_btn setHidden: NO];
+ [o_shuffle_btn setHidden: NO];
+ } else {
+ [[o_repeat_btn animator] setHidden: NO];
+ [[o_shuffle_btn animator] setHidden: NO];
+ }
}
-- (void)removePlaymodeButtons
+- (void)removePlaymodeButtons:(BOOL)b_fast
{
NSRect frame;
float f_space = [o_repeat_btn frame].size.width + [o_shuffle_btn frame].size.width - 6.;
@@ -810,7 +840,10 @@ static VLCMainWindow *_o_sharedInstance = nil;
frame = [item frame]; \
frame.size.width = frame.size.width + f_space; \
frame.origin.x = frame.origin.x - f_space; \
- [[item animator] setFrame: frame]
+ if( b_fast ) \
+ [item setFrame: frame]; \
+ else \
+ [[item animator] setFrame: frame]
resizeItem( o_time_sld );
resizeItem( o_progress_bar );
More information about the vlc-commits
mailing list