Commit 1c7da3ea authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* Fixed hotkey/OSD behaviour for OS X. Also prevents code duplicity.

  Testing would be welcomed very much.
parent 18dd0278
...@@ -44,120 +44,73 @@ ...@@ -44,120 +44,73 @@
- (IBAction)play:(id)sender - (IBAction)play:(id)sender
{ {
vlc_value_t val; vlc_value_t val;
playlist_t * p_playlist;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
val.i_int = PLAYING_S;
if( p_input )
{
var_Get( p_input, "state", &val );
}
if( p_input && val.i_int != PAUSE_S )
{
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Pause" ) );
val.i_int = PAUSE_S;
var_Set( p_input, "state", val );
}
else
{
p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_playlist ) if( p_playlist )
{ {
vlc_mutex_lock( &p_playlist->object_lock ); vlc_mutex_lock( &p_playlist->object_lock );
if( p_playlist->i_size ) if( p_playlist->i_size <= 0 )
{ {
vlc_mutex_unlock( &p_playlist->object_lock ); vlc_mutex_unlock( &p_playlist->object_lock );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Play" ) );
playlist_Play( p_playlist );
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
[o_open openFileGeneric: nil];
} }
else else
{ {
vlc_mutex_unlock( &p_playlist->object_lock ); vlc_mutex_unlock( &p_playlist->object_lock );
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
[o_open openFileGeneric: nil];
}
} }
} }
if( p_input ) vlc_object_release( p_input ); val.i_int = config_GetInt( p_intf, "key-play-pause" );
var_Set( p_intf->p_vlc, "key-pressed", val );
} }
- (IBAction)stop:(id)sender - (IBAction)stop:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, val.i_int = config_GetInt( p_intf, "key-stop" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_playlist != NULL )
{
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Stop" ) );
playlist_Stop( p_playlist );
vlc_object_release( p_playlist );
}
} }
- (IBAction)faster:(id)sender - (IBAction)faster:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, val.i_int = config_GetInt( p_intf, "key-faster" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_input != NULL )
{
vlc_value_t val; val.b_bool = VLC_TRUE;
var_Set( p_input, "rate-faster", val );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Faster" ) );
vlc_object_release( p_input );
}
} }
- (IBAction)slower:(id)sender - (IBAction)slower:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, val.i_int = config_GetInt( p_intf, "key-slower" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_input != NULL )
{
vlc_value_t val; val.b_bool = VLC_TRUE;
var_Set( p_input, "rate-slower", val );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Slower" ) );
vlc_object_release( p_input );
}
} }
- (IBAction)prev:(id)sender - (IBAction)prev:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, val.i_int = config_GetInt( p_intf, "key-prev" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_playlist )
{
playlist_Prev( p_playlist );
vlc_object_release( p_playlist );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Previous" ) );
}
} }
- (IBAction)next:(id)sender - (IBAction)next:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, val.i_int = config_GetInt( p_intf, "key-next" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_playlist )
{
playlist_Next( p_playlist );
vlc_object_release( p_playlist );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Next" ) );
}
} }
- (IBAction)random:(id)sender - (IBAction)random:(id)sender
{ {
intf_thread_t * p_intf = VLCIntf;
vlc_value_t val; vlc_value_t val;
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_playlist == NULL ) if( p_playlist == NULL )
...@@ -184,8 +137,8 @@ ...@@ -184,8 +137,8 @@
- (IBAction)repeat:(id)sender - (IBAction)repeat:(id)sender
{ {
intf_thread_t * p_intf = VLCIntf;
vlc_value_t val; vlc_value_t val;
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_playlist == NULL ) if( p_playlist == NULL )
...@@ -216,8 +169,8 @@ ...@@ -216,8 +169,8 @@
- (IBAction)loop:(id)sender - (IBAction)loop:(id)sender
{ {
intf_thread_t * p_intf = VLCIntf;
vlc_value_t val; vlc_value_t val;
intf_thread_t * p_intf = VLCIntf;
playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, playlist_t * p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_playlist == NULL ) if( p_playlist == NULL )
...@@ -248,71 +201,45 @@ ...@@ -248,71 +201,45 @@
- (IBAction)forward:(id)sender - (IBAction)forward:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, val.i_int = config_GetInt( p_intf, "key-jump+10sec" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_input != NULL )
{
vlc_value_t time;
time.i_time = 10 * 1000000;
var_Set( p_input, "time-offset", time );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Jump +10 Seconds" ) );
vlc_object_release( p_input );
}
} }
- (IBAction)backward:(id)sender - (IBAction)backward:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
input_thread_t * p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT, val.i_int = config_GetInt( p_intf, "key-jump-10sec" );
FIND_ANYWHERE ); var_Set( p_intf->p_vlc, "key-pressed", val );
if( p_input != NULL )
{
vlc_value_t time;
time.i_time = -10 * 1000000;
var_Set( p_input, "time-offset", time );
vout_OSDMessage( p_intf, DEFAULT_CHAN, _( "Jump -10 Seconds" ) );
vlc_object_release( p_input );
}
} }
- (IBAction)volumeUp:(id)sender - (IBAction)volumeUp:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
val.i_int = config_GetInt( p_intf, "key-vol-up" );
if( p_intf->p_sys->b_mute ) var_Set( p_intf->p_vlc, "key-pressed", val );
{
[self mute: nil];
}
aout_VolumeUp( p_intf, 1, NULL );
[self updateVolumeSlider]; [self updateVolumeSlider];
} }
- (IBAction)volumeDown:(id)sender - (IBAction)volumeDown:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
val.i_int = config_GetInt( p_intf, "key-vol-down" );
if( p_intf->p_sys->b_mute ) var_Set( p_intf->p_vlc, "key-pressed", val );
{
[self mute: nil];
}
aout_VolumeDown( p_intf, 1, NULL );
[self updateVolumeSlider]; [self updateVolumeSlider];
} }
- (IBAction)mute:(id)sender - (IBAction)mute:(id)sender
{ {
vlc_value_t val;
intf_thread_t * p_intf = VLCIntf; intf_thread_t * p_intf = VLCIntf;
audio_volume_t i_volume; val.i_int = config_GetInt( p_intf, "key-vol-mute" );
var_Set( p_intf->p_vlc, "key-pressed", val );
aout_VolumeMute( p_intf, &i_volume );
p_intf->p_sys->b_mute = ( i_volume == 0 );
[self updateVolumeSlider]; [self updateVolumeSlider];
} }
...@@ -332,9 +259,6 @@ ...@@ -332,9 +259,6 @@
aout_VolumeGet( p_intf, &i_volume ); aout_VolumeGet( p_intf, &i_volume );
[o_volumeslider setFloatValue: (float)(i_volume / AOUT_VOLUME_STEP)]; [o_volumeslider setFloatValue: (float)(i_volume / AOUT_VOLUME_STEP)];
vout_OSDMessage( p_intf, DEFAULT_CHAN, "Vol %d%%",
i_volume*200/AOUT_VOLUME_MAX );
} }
- (IBAction)windowAction:(id)sender - (IBAction)windowAction:(id)sender
...@@ -670,13 +594,14 @@ ...@@ -670,13 +594,14 @@
else if( [[o_mi title] isEqualToString: _NS("Step Forward")] || else if( [[o_mi title] isEqualToString: _NS("Step Forward")] ||
[[o_mi title] isEqualToString: _NS("Step Backward")] ) [[o_mi title] isEqualToString: _NS("Step Backward")] )
{ {
bEnabled = FALSE;
if( p_playlist != NULL && p_input != NULL ) if( p_playlist != NULL && p_input != NULL )
{ {
bEnabled = TRUE; /* FIXME p_input seekable */ var_Get( p_input, "seekable", &val);
} if( val.b_bool )
else
{ {
bEnabled = FALSE; bEnabled = TRUE;
}
} }
} }
else if( [[o_mi title] isEqualToString: _NS("Mute")] ) else if( [[o_mi title] isEqualToString: _NS("Mute")] )
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <vlc/intf.h> #include <vlc/intf.h>
#include <vlc/vout.h> #include <vlc/vout.h>
#include <vlc/aout.h> #include <vlc/aout.h>
#include <vlc/input.h>
#include <Cocoa/Cocoa.h> #include <Cocoa/Cocoa.h>
......
...@@ -271,7 +271,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -271,7 +271,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (id)init - (id)init
{ {
if (_o_sharedMainInstance) { if( _o_sharedMainInstance) {
[self dealloc]; [self dealloc];
} else { } else {
_o_sharedMainInstance = [super init]; _o_sharedMainInstance = [super init];
...@@ -1082,7 +1082,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -1082,7 +1082,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (void)playStatusUpdated:(int)i_status - (void)playStatusUpdated:(int)i_status
{ {
if( i_status ) if( i_status != PAUSE_S )
{ {
[o_btn_play setImage: o_img_pause]; [o_btn_play setImage: o_img_pause];
[o_btn_play setAlternateImage: o_img_pause_pressed]; [o_btn_play setAlternateImage: o_img_pause_pressed];
......
...@@ -1149,14 +1149,15 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) ...@@ -1149,14 +1149,15 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
- (BOOL)canBecomeKeyWindow - (BOOL)canBecomeKeyWindow
{ {
return( YES ); return YES;
} }
/*
/* Sometimes crashes VLC....
- (BOOL)performKeyEquivalent:(NSEvent *)o_event - (BOOL)performKeyEquivalent:(NSEvent *)o_event
{ {
return [[VLCMain sharedInstance] hasDefinedShortcutKey:o_event]; return [[VLCMain sharedInstance] hasDefinedShortcutKey:o_event];
} }*/
*/
- (void)keyDown:(NSEvent *)o_event - (void)keyDown:(NSEvent *)o_event
{ {
unichar key = 0; unichar key = 0;
...@@ -1189,13 +1190,9 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) ...@@ -1189,13 +1190,9 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
} }
else if ( key == ' ' ) else if ( key == ' ' )
{ {
playlist_t *p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST, vlc_value_t val;
FIND_ANYWHERE ); val.i_int = config_GetInt( p_vout, "key-play-pause" );
if ( p_playlist != NULL ) var_Set( p_vout->p_vlc, "key-pressed", val );
{
playlist_Pause( p_playlist );
vlc_object_release( p_playlist);
}
} }
else else
{ {
...@@ -1212,7 +1209,14 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic ) ...@@ -1212,7 +1209,14 @@ static void QTFreePicture( vout_thread_t *p_vout, picture_t *p_pic )
- (void)updateTitle - (void)updateTitle
{ {
NSMutableString * o_title; NSMutableString * o_title;
playlist_t * p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST, playlist_t * p_playlist;
if( p_vout == NULL )
{
return;
}
p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_playlist == NULL ) if( p_playlist == NULL )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment