[vlc-devel] [PATCH] libvlc: check if we are in the proper state before to send libvlc_MediaPlayerStopped
Tanguy Krotoff
tkrotoff at gmail.com
Tue Apr 1 16:24:02 CEST 2008
---
src/control/media_player.c | 25 +++++++++++++++----------
1 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/src/control/media_player.c b/src/control/media_player.c
index b59fafe..20faa24 100644
--- a/src/control/media_player.c
+++ b/src/control/media_player.c
@@ -627,6 +627,13 @@ void libvlc_media_player_pause( libvlc_media_player_t *p_mi,
void libvlc_media_player_stop( libvlc_media_player_t *p_mi,
libvlc_exception_t *p_e )
{
+ input_thread_t * p_input_thread = libvlc_get_input_thread( p_mi, p_e );
+
+ if( !p_input_thread )
+ return;
+
+ int state = var_GetInteger( p_input_thread, "state" );
+
if( p_mi->b_own_its_input_thread )
{
vlc_mutex_lock( &p_mi->object_lock );
@@ -635,20 +642,18 @@ void libvlc_media_player_stop( libvlc_media_player_t *p_mi,
}
else
{
- input_thread_t * p_input_thread = libvlc_get_input_thread( p_mi, p_e );
-
- if( !p_input_thread )
- return;
-
input_StopThread( p_input_thread );
vlc_object_release( p_input_thread );
}
- /* Send a stop notification event */
- libvlc_event_t event;
- libvlc_media_set_state( p_mi->p_md, libvlc_Stopped, NULL);
- event.type = libvlc_MediaPlayerStopped;
- libvlc_event_send( p_mi->p_event_manager, &event );
+ if( state == PLAYING_S || state == PAUSE_S )
+ {
+ /* Send a stop notification event */
+ libvlc_event_t event;
+ libvlc_media_set_state( p_mi->p_md, libvlc_Stopped, NULL );
+ event.type = libvlc_MediaPlayerStopped;
+ libvlc_event_send( p_mi->p_event_manager, &event );
+ }
}
/**************************************************************************
--
1.5.4.3
More information about the vlc-devel
mailing list