Commit 18207216 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* Fix the play/pause button status

* the prime manage thread now runs every .1 sec instead of .3,
  this might improve response sometimes.
parent 28b7857d
...@@ -57,7 +57,6 @@ struct intf_sys_t ...@@ -57,7 +57,6 @@ struct intf_sys_t
input_thread_t * p_input; input_thread_t * p_input;
/* special actions */ /* special actions */
vlc_bool_t b_playing;
vlc_bool_t b_mute; vlc_bool_t b_mute;
int i_play_status; int i_play_status;
......
...@@ -732,19 +732,14 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -732,19 +732,14 @@ static VLCMain *_o_sharedMainInstance = nil;
if( p_input ) if( p_input )
{ {
msg_Dbg( p_intf, "input has changed, refreshing interface" ); msg_Dbg( p_intf, "input has changed, refreshing interface" );
p_intf->p_sys->i_play_status = PLAYING_S; p_intf->p_sys->b_input_update = VLC_TRUE;
p_intf->p_sys->b_playing = TRUE;
p_intf->p_sys->b_current_title_update = 1;
p_intf->p_sys->b_intf_update = TRUE;
p_intf->p_sys->b_input_update = TRUE;
} }
} }
else if( p_input->b_dead ) else if( p_input->b_die || p_input->b_dead )
{ {
/* input stopped */ /* input stopped */
p_intf->p_sys->b_playing = FALSE; p_intf->p_sys->b_intf_update = VLC_TRUE;
p_intf->p_sys->b_intf_update = TRUE; p_intf->p_sys->i_play_status = END_S;
p_intf->p_sys->i_play_status = PAUSE_S;
[o_scrollfield setStringValue: _NS("VLC media player") ]; [o_scrollfield setStringValue: _NS("VLC media player") ];
vlc_object_release( p_input ); vlc_object_release( p_input );
p_input = NULL; p_input = NULL;
...@@ -753,7 +748,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -753,7 +748,7 @@ static VLCMain *_o_sharedMainInstance = nil;
vlc_mutex_unlock( &p_intf->change_lock ); vlc_mutex_unlock( &p_intf->change_lock );
o_sleep_date = [NSDate dateWithTimeIntervalSinceNow: .3]; o_sleep_date = [NSDate dateWithTimeIntervalSinceNow: .1];
[NSThread sleepUntilDate: o_sleep_date]; [NSThread sleepUntilDate: o_sleep_date];
} }
...@@ -772,6 +767,13 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -772,6 +767,13 @@ static VLCMain *_o_sharedMainInstance = nil;
} }
#define p_input p_intf->p_sys->p_input #define p_input p_intf->p_sys->p_input
if( p_intf->p_sys->b_input_update )
{
/* Called when new input is opened */
p_intf->p_sys->b_current_title_update = VLC_TRUE;
p_intf->p_sys->b_intf_update = VLC_TRUE;
p_intf->p_sys->b_input_update = VLC_FALSE;
}
if( p_intf->p_sys->b_intf_update ) if( p_intf->p_sys->b_intf_update )
{ {
vlc_bool_t b_input = VLC_FALSE; vlc_bool_t b_input = VLC_FALSE;
...@@ -868,7 +870,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -868,7 +870,7 @@ static VLCMain *_o_sharedMainInstance = nil;
[o_scrollfield setStringValue: o_temp ]; [o_scrollfield setStringValue: o_temp ];
p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, /*p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
if( p_vout != NULL ) if( p_vout != NULL )
{ {
...@@ -879,17 +881,17 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -879,17 +881,17 @@ static VLCMain *_o_sharedMainInstance = nil;
{ {
if( [[o_vout_wnd className] isEqualToString: @"VLCWindow"] ) if( [[o_vout_wnd className] isEqualToString: @"VLCWindow"] )
{ {
;//[o_vout_wnd updateTitle]; ;[o_vout_wnd updateTitle];
} }
} }
vlc_object_release( (vlc_object_t *)p_vout ); vlc_object_release( (vlc_object_t *)p_vout );
} }*/
[o_playlist updateRowSelection]; [o_playlist updateRowSelection];
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
p_intf->p_sys->b_current_title_update = FALSE; p_intf->p_sys->b_current_title_update = FALSE;
} }
if( p_intf->p_sys->b_playing && [o_timeslider isEnabled] ) if( p_input && [o_timeslider isEnabled] )
{ {
/* Update the slider */ /* Update the slider */
vlc_value_t time; vlc_value_t time;
...@@ -923,9 +925,9 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -923,9 +925,9 @@ static VLCMain *_o_sharedMainInstance = nil;
[self playStatusUpdated: p_intf->p_sys->i_play_status]; [self playStatusUpdated: p_intf->p_sys->i_play_status];
} }
} }
else if( p_intf->p_sys->b_playing && !p_intf->b_die ) else
{ {
p_intf->p_sys->i_play_status = PAUSE_S; p_intf->p_sys->i_play_status = END_S;
p_intf->p_sys->b_intf_update = VLC_TRUE; p_intf->p_sys->b_intf_update = VLC_TRUE;
[self playStatusUpdated: p_intf->p_sys->i_play_status]; [self playStatusUpdated: p_intf->p_sys->i_play_status];
[self setSubmenusEnabled: FALSE]; [self setSubmenusEnabled: FALSE];
...@@ -942,77 +944,71 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -942,77 +944,71 @@ static VLCMain *_o_sharedMainInstance = nil;
- (void)setupMenus - (void)setupMenus
{ {
playlist_t *p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, #define p_input p_intf->p_sys->p_input
FIND_ANYWHERE ); if( p_input != NULL )
if( p_playlist != NULL )
{ {
#define p_input p_playlist->p_input [o_controls setupVarMenuItem: o_mi_program target: (vlc_object_t *)p_input
if( p_input != NULL ) var: "program" selector: @selector(toggleVar:)];
{
[o_controls setupVarMenuItem: o_mi_program target: (vlc_object_t *)p_input
var: "program" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_title target: (vlc_object_t *)p_input [o_controls setupVarMenuItem: o_mi_title target: (vlc_object_t *)p_input
var: "title" selector: @selector(toggleVar:)]; var: "title" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_chapter target: (vlc_object_t *)p_input [o_controls setupVarMenuItem: o_mi_chapter target: (vlc_object_t *)p_input
var: "chapter" selector: @selector(toggleVar:)]; var: "chapter" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_audiotrack target: (vlc_object_t *)p_input [o_controls setupVarMenuItem: o_mi_audiotrack target: (vlc_object_t *)p_input
var: "audio-es" selector: @selector(toggleVar:)]; var: "audio-es" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_videotrack target: (vlc_object_t *)p_input [o_controls setupVarMenuItem: o_mi_videotrack target: (vlc_object_t *)p_input
var: "video-es" selector: @selector(toggleVar:)]; var: "video-es" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_subtitle target: (vlc_object_t *)p_input [o_controls setupVarMenuItem: o_mi_subtitle target: (vlc_object_t *)p_input
var: "spu-es" selector: @selector(toggleVar:)]; var: "spu-es" selector: @selector(toggleVar:)];
aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT, aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
if ( p_aout != NULL ) if ( p_aout != NULL )
{ {
[o_controls setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout [o_controls setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout
var: "audio-channels" selector: @selector(toggleVar:)]; var: "audio-channels" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout [o_controls setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout
var: "audio-device" selector: @selector(toggleVar:)]; var: "audio-device" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_visual target: (vlc_object_t *)p_aout [o_controls setupVarMenuItem: o_mi_visual target: (vlc_object_t *)p_aout
var: "visual" selector: @selector(toggleVar:)]; var: "visual" selector: @selector(toggleVar:)];
vlc_object_release( (vlc_object_t *)p_aout ); vlc_object_release( (vlc_object_t *)p_aout );
} }
vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT, vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE ); FIND_ANYWHERE );
if ( p_vout != NULL ) if ( p_vout != NULL )
{ {
vlc_object_t * p_dec_obj; vlc_object_t * p_dec_obj;
[o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout
var: "video-device" selector: @selector(toggleVar:)]; var: "video-device" selector: @selector(toggleVar:)];
[o_controls setupVarMenuItem: o_mi_deinterlace target: (vlc_object_t *)p_vout [o_controls setupVarMenuItem: o_mi_deinterlace target: (vlc_object_t *)p_vout
var: "deinterlace" selector: @selector(toggleVar:)]; var: "deinterlace" selector: @selector(toggleVar:)];
p_dec_obj = (vlc_object_t *)vlc_object_find( p_dec_obj = (vlc_object_t *)vlc_object_find(
(vlc_object_t *)p_vout, (vlc_object_t *)p_vout,
VLC_OBJECT_DECODER, VLC_OBJECT_DECODER,
FIND_PARENT ); FIND_PARENT );
if ( p_dec_obj != NULL ) if ( p_dec_obj != NULL )
{ {
[o_controls setupVarMenuItem: o_mi_ffmpeg_pp target: [o_controls setupVarMenuItem: o_mi_ffmpeg_pp target:
(vlc_object_t *)p_dec_obj var:"ffmpeg-pp-q" selector: (vlc_object_t *)p_dec_obj var:"ffmpeg-pp-q" selector:
@selector(toggleVar:)]; @selector(toggleVar:)];
vlc_object_release(p_dec_obj); vlc_object_release(p_dec_obj);
}
vlc_object_release( (vlc_object_t *)p_vout );
} }
vlc_object_release( (vlc_object_t *)p_vout );
} }
#undef p_input
} }
vlc_object_release( (vlc_object_t *)p_playlist ); #undef p_input
} }
- (void)updateMessageArray - (void)updateMessageArray
...@@ -1099,7 +1095,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -1099,7 +1095,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (void)playStatusUpdated:(int)i_status - (void)playStatusUpdated:(int)i_status
{ {
if( i_status != PAUSE_S ) if( i_status == PLAYING_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];
...@@ -1147,7 +1143,7 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -1147,7 +1143,7 @@ static VLCMain *_o_sharedMainInstance = nil;
- (IBAction)timesliderUpdate:(id)sender - (IBAction)timesliderUpdate:(id)sender
{ {
input_thread_t * p_input; #define p_input p_intf->p_sys->p_input
float f_updated; float f_updated;
switch( [[NSApp currentEvent] type] ) switch( [[NSApp currentEvent] type] )
...@@ -1162,9 +1158,6 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -1162,9 +1158,6 @@ static VLCMain *_o_sharedMainInstance = nil;
return; return;
} }
p_input = vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
if( p_input != NULL ) if( p_input != NULL )
{ {
vlc_value_t time; vlc_value_t time;
...@@ -1184,9 +1177,8 @@ static VLCMain *_o_sharedMainInstance = nil; ...@@ -1184,9 +1177,8 @@ static VLCMain *_o_sharedMainInstance = nil;
(int) (i_seconds / 60 % 60), (int) (i_seconds / 60 % 60),
(int) (i_seconds % 60)]; (int) (i_seconds % 60)];
[o_timefield setStringValue: o_time]; [o_timefield setStringValue: o_time];
vlc_object_release( p_input );
} }
#undef p_input
} }
- (void)terminate - (void)terminate
......
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