input: add vlc_InputItemPreparseEnded event

This event is sent from playlist/preparsed thread to notify when an item is
preparsed. This event is sent when the preparse function terminate, ie. when
meta and sub items are parsed. It is also sent when the preparse function fails
to parse anything.

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
This commit is contained in:
Thomas Guillem 2015-02-04 08:55:52 +00:00 committed by Jean-Baptiste Kempf
parent ffdfe2ac24
commit 4935cbe1fe
5 changed files with 14 additions and 0 deletions

View File

@ -123,6 +123,7 @@ typedef enum vlc_event_type_t {
vlc_InputItemNameChanged,
vlc_InputItemInfoChanged,
vlc_InputItemErrorWhenReadingChanged,
vlc_InputItemPreparseEnded,
/* Service Discovery event */
vlc_ServicesDiscoveryItemAdded,

View File

@ -30,6 +30,7 @@
/**********************************************************************
* Item metadata
**********************************************************************/
void input_item_SignalPreparseEnded( input_item_t *p_i );
void input_item_SetPreparsed( input_item_t *p_i, bool b_preparsed );
void input_item_SetArtNotFound( input_item_t *p_i, bool b_not_found );
void input_item_SetArtFetched( input_item_t *p_i, bool b_art_fetched );

View File

@ -57,6 +57,13 @@ void input_item_SetErrorWhenReading( input_item_t *p_i, bool b_error )
vlc_event_send( &p_i->event_manager, &event );
}
}
void input_item_SignalPreparseEnded( input_item_t *p_i )
{
vlc_event_t event;
event.type = vlc_InputItemPreparseEnded;
vlc_event_send( &p_i->event_manager, &event );
}
void input_item_SetPreparsed( input_item_t *p_i, bool b_preparsed )
{
bool b_send_event = false;
@ -874,6 +881,7 @@ input_item_NewWithType( const char *psz_uri, const char *psz_name,
vlc_event_manager_register_event_type( p_em, vlc_InputItemNameChanged );
vlc_event_manager_register_event_type( p_em, vlc_InputItemInfoChanged );
vlc_event_manager_register_event_type( p_em, vlc_InputItemErrorWhenReadingChanged );
vlc_event_manager_register_event_type( p_em, vlc_InputItemPreparseEnded );
if( type != ITEM_TYPE_UNKNOWN )
p_input->i_type = type;

View File

@ -165,6 +165,7 @@ static void Preparse( vlc_object_t *obj, input_item_t *p_item,
if( !b_preparse )
{
input_item_SetPreparsed( p_item, true );
input_item_SignalPreparseEnded( p_item );
return;
}
@ -176,6 +177,7 @@ static void Preparse( vlc_object_t *obj, input_item_t *p_item,
var_SetAddress( obj, "item-change", p_item );
}
input_item_SignalPreparseEnded( p_item );
}
/**

View File

@ -45,6 +45,8 @@ playlist_preparser_t *playlist_preparser_New( vlc_object_t * );
*
* The input item is retained until the preparsing is done or until the
* preparser object is deleted.
* Listen to vlc_InputItemPreparseEnded event to get notified when item is
* preparsed.
*/
void playlist_preparser_Push( playlist_preparser_t *, input_item_t *,
input_item_meta_request_option_t );