From 5da72b7761d4ae2bc99d869cb6f58ba0b8f817ab Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont <pdherbemont@videolan.org> Date: Mon, 7 Jan 2008 14:46:08 +0000 Subject: [PATCH] libvlc.h: Define and implement libvlc_media_instance_is_pausable(). --- include/vlc/libvlc.h | 4 ++++ src/control/media_instance.c | 28 +++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index ac15fd6801dc..76a0757980a1 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -386,6 +386,10 @@ VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_is_seekable( libvlc_media_instance_t *p_mi, libvlc_exception_t *p_e ); +VLC_PUBLIC_API vlc_bool_t libvlc_media_instance_can_pause( + libvlc_media_instance_t *p_mi, + libvlc_exception_t *p_e ); + /** @}*/ /***************************************************************************** diff --git a/src/control/media_instance.c b/src/control/media_instance.c index e428b15234c4..f56c7af3702c 100644 --- a/src/control/media_instance.c +++ b/src/control/media_instance.c @@ -131,8 +131,12 @@ input_state_changed( vlc_object_t * p_this, char const * psz_cmd, { libvlc_media_instance_t * p_mi = p_userdata; libvlc_event_t event; + libvlc_event_type_t type = newval.i_int; - switch ( newval.i_int ) + if( strcmp( psz_cmd, "state" ) ) + type = var_GetBool( p_this, "state" ); + + switch ( type ) { case END_S: libvlc_media_descriptor_set_state( p_mi->p_md, libvlc_NothingSpecial, NULL); @@ -521,6 +525,7 @@ void libvlc_media_instance_play( libvlc_media_instance_t *p_mi, } var_AddCallback( p_input_thread, "state", input_state_changed, p_mi ); var_AddCallback( p_input_thread, "seekable", input_state_changed, p_mi ); + var_AddCallback( p_input_thread, "pausable", input_state_changed, p_mi ); var_AddCallback( p_input_thread, "intf-change", input_position_changed, p_mi ); var_AddCallback( p_input_thread, "intf-change", input_time_changed, p_mi ); @@ -827,3 +832,24 @@ vlc_bool_t libvlc_media_instance_is_seekable( return val.b_bool; } + +vlc_bool_t libvlc_media_instance_can_pause( + libvlc_media_instance_t *p_mi, + libvlc_exception_t *p_e ) +{ + input_thread_t *p_input_thread; + vlc_value_t val; + + p_input_thread = libvlc_get_input_thread ( p_mi, p_e ); + if ( !p_input_thread ) + { + /* We do return the right value, no need to throw an exception */ + if( libvlc_exception_raised( p_e ) ) + libvlc_exception_clear( p_e ); + return VLC_FALSE; + } + var_Get( p_input_thread, "can-pause", &val ); + vlc_object_release( p_input_thread ); + + return val.b_bool; +} -- GitLab