[vlc-devel] [PATCH] libvlc: libvlc_MediaSubItemTreeAdded event type added

Rafaël Carré funman at videolan.org
Mon Sep 2 13:08:54 CEST 2013


Hello Sergey,

This looks good, I guess Jakob probably missed libvlc when he added this
event.

I am curious, how can this be used ? I guess you're going to use it in
activex/npapi plugins.

Le 01/09/2013 16:00, Sergey Radionov a écrit :
> ---
>  include/vlc/libvlc_events.h |  5 +++++
>  lib/event.c                 |  1 +
>  lib/media.c                 | 26 ++++++++++++++++++++++++++
>  3 files changed, 32 insertions(+)
> 
> diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h
> index 2cfedbf..ae1a94b 100644
> --- a/include/vlc/libvlc_events.h
> +++ b/include/vlc/libvlc_events.h
> @@ -52,6 +52,7 @@ enum libvlc_event_e {
>      libvlc_MediaParsedChanged,
>      libvlc_MediaFreed,
>      libvlc_MediaStateChanged,
> +    libvlc_MediaSubItemTreeAdded,
>  
>      libvlc_MediaPlayerMediaChanged=0x100,
>      libvlc_MediaPlayerNothingSpecial,
> @@ -137,6 +138,10 @@ typedef struct libvlc_event_t
>          {
>              libvlc_state_t new_state;
>          } media_state_changed;
> +        struct
> +        {
> +            libvlc_media_t * item;
> +        } media_subitemtree_added;
>  
>          /* media instance */
>          struct
> diff --git a/lib/event.c b/lib/event.c
> index c71a48a..87f7d12 100644
> --- a/lib/event.c
> +++ b/lib/event.c
> @@ -259,6 +259,7 @@ static const event_name_t event_list[] = {
>      DEF(MediaParsedChanged)
>      DEF(MediaFreed)
>      DEF(MediaStateChanged)
> +    DEF(MediaSubItemTreeAdded)
>  
>      DEF(MediaPlayerMediaChanged)
>      DEF(MediaPlayerNothingSpecial)
> diff --git a/lib/media.c b/lib/media.c
> index 593f5c6..7acfb69 100644
> --- a/lib/media.c
> +++ b/lib/media.c
> @@ -120,6 +120,23 @@ static void input_item_subitem_added( const vlc_event_t *p_event,
>  }
>  
>  /**************************************************************************
> + * input_item_subitemtree_added (Private) (vlc event Callback)
> + **************************************************************************/
> +static void input_item_subitemtree_added( const vlc_event_t * p_event,
> +                                          void * user_data )
> +{
> +    libvlc_media_t * p_md = user_data;
> +    libvlc_event_t event;
> +
> +    /* Construct the event */
> +    event.type = libvlc_MediaSubItemTreeAdded;
> +    event.u.media_subitemtree_added.item = p_md;
> +
> +    /* Send the event */
> +    libvlc_event_send( p_md->p_event_manager, &event );
> +}
> +
> +/**************************************************************************
>   * input_item_meta_changed (Private) (vlc event Callback)
>   **************************************************************************/
>  static void input_item_meta_changed( const vlc_event_t *p_event,
> @@ -201,6 +218,10 @@ static void install_input_item_observer( libvlc_media_t *p_md )
>                        vlc_InputItemPreparsedChanged,
>                        input_item_preparsed_changed,
>                        p_md );
> +    vlc_event_attach( &p_md->p_input_item->event_manager,
> +                      vlc_InputItemSubItemTreeAdded,
> +                      input_item_subitemtree_added,
> +                      p_md );
>  }
>  
>  /**************************************************************************
> @@ -224,6 +245,10 @@ static void uninstall_input_item_observer( libvlc_media_t *p_md )
>                        vlc_InputItemPreparsedChanged,
>                        input_item_preparsed_changed,
>                        p_md );
> +    vlc_event_detach( &p_md->p_input_item->event_manager,
> +                      vlc_InputItemSubItemTreeAdded,
> +                      input_item_subitemtree_added,
> +                      p_md );
>  }
>  
>  /**************************************************************************
> @@ -277,6 +302,7 @@ libvlc_media_t * libvlc_media_new_from_input_item(
>      libvlc_event_manager_register_event_type(em, libvlc_MediaDurationChanged);
>      libvlc_event_manager_register_event_type(em, libvlc_MediaStateChanged);
>      libvlc_event_manager_register_event_type(em, libvlc_MediaParsedChanged);
> +    libvlc_event_manager_register_event_type(em, libvlc_MediaSubItemTreeAdded);
>  
>      vlc_gc_incref( p_md->p_input_item );
>  
> 




More information about the vlc-devel mailing list