From: Pierre d'Herbemont Date: Sun, 1 Jun 2008 19:47:49 +0000 (+0200) Subject: playlist: Listen to duration changed events, and remove a vout->playlist dependency. X-Git-Tag: 0.9.0-test0~442 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=61ee17a85417817e8046fe5373f160f5349cbf07;p=vlc playlist: Listen to duration changed events, and remove a vout->playlist dependency. --- diff --git a/src/input/input.c b/src/input/input.c index 4ab5b55225..9914457420 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -2162,14 +2162,6 @@ static int UpdateFromAccess( input_thread_t *p_input ) static void UpdateItemLength( input_thread_t *p_input, int64_t i_length ) { input_item_SetDuration( p_input->p->input.p_item, (mtime_t) i_length ); - - if( !p_input->b_preparsing ) - { - pl_Yield( p_input ); - var_SetInteger( libvlc_priv (p_input->p_libvlc)->p_playlist, - "item-change", p_input->p->input.p_item->i_id ); - pl_Release( p_input ); - } } /***************************************************************************** diff --git a/src/playlist/item.c b/src/playlist/item.c index c2bc35c68e..1dee00b5a5 100644 --- a/src/playlist/item.c +++ b/src/playlist/item.c @@ -107,10 +107,10 @@ static void input_item_subitem_added( const vlc_event_t * p_event, } /***************************************************************************** - * An input item's meta has changed (Event Callback) + * An input item's meta or duration has changed (Event Callback) *****************************************************************************/ -static void input_item_meta_changed( const vlc_event_t * p_event, - void * user_data ) +static void input_item_changed( const vlc_event_t * p_event, + void * user_data ) { playlist_item_t * p_item = user_data; var_SetInteger( p_item->p_playlist, @@ -126,6 +126,10 @@ static void install_input_item_observer( playlist_item_t * p_item ) vlc_InputItemSubItemAdded, input_item_subitem_added, p_item ); + vlc_event_attach( &p_item->p_input->event_manager, + vlc_InputItemDurationChanged, + input_item_meta_changed, + p_item ); vlc_event_attach( &p_item->p_input->event_manager, vlc_InputItemMetaChanged, input_item_meta_changed, @@ -138,6 +142,10 @@ static void uninstall_input_item_observer( playlist_item_t * p_item ) vlc_InputItemMetaChanged, input_item_meta_changed, p_item ); + vlc_event_detach( &p_item->p_input->event_manager, + vlc_InputItemDurationChanged, + input_item_meta_changed, + p_item ); vlc_event_detach( &p_item->p_input->event_manager, vlc_InputItemSubItemAdded, input_item_subitem_added,