include/vlc_events.h: Opt for the vlc_object_name_function_name naming scheme.
# define VLC_EVENTS_H
#include <vlc_arrays.h>
+#include <vlc_meta.h>
/**
* \file
{
vlc_event_type_t type;
void * p_obj; /* Sender object, automatically filled by event_Send() */
- union event_type_specific
+ union vlc_event_type_specific
{
- struct
+ struct vlc_input_item_meta_changed
{
- int meta; /* One of the meta identified in include/vlc_meta.h */
+ vlc_meta_type_t meta_type;
} input_item_meta_changed;
} u;
} vlc_event_t;
* p_obj points to the object that owns the event manager, and from
* which events are sent
*/
-int event_manager_Create( vlc_event_manager_t * p_em, void * p_obj );
+VLC_EXPORT(int, vlc_event_manager_init, ( vlc_event_manager_t * p_em,
+ void * p_obj ));
/*
* Destroy
*/
-void event_manager_Destroy( vlc_event_manager_t * p_em );
+VLC_EXPORT(void, vlc_event_manager_fini, ( vlc_event_manager_t * p_em ));
/*
* Tells a specific event manager that it will handle event_type object
*/
-int event_manager_RegisterEventType( vlc_event_manager_t * p_em,
- vlc_event_type_t event_type );
+VLC_EXPORT(int, vlc_event_manager_register_event_type,
+ ( vlc_event_manager_t * p_em, vlc_event_type_t event_type ));
/*
* Send an event to the listener attached to this p_em.
*/
-void event_Send( vlc_event_manager_t * p_em, vlc_event_t * p_event );
+VLC_EXPORT(void, vlc_event_send, ( vlc_event_manager_t * p_em,
+ vlc_event_t * p_event ));
/*
* Add a callback for an event.
*/
-int event_Attach( vlc_event_manager_t * p_event_manager,
- vlc_event_type_t event_type,
- vlc_event_callback_t pf_callback,
- void *p_user_data );
+VLC_EXPORT(int, vlc_event_attach, ( vlc_event_manager_t * p_event_manager,
+ vlc_event_type_t event_type,
+ vlc_event_callback_t pf_callback,
+ void *p_user_data ));
/*
* Remove a callback for an event.
*/
-int event_Detach( vlc_event_manager_t *p_event_manager,
- vlc_event_type_t event_type,
- vlc_event_callback_t pf_callback,
- void *p_user_data );
+VLC_EXPORT(int, vlc_event_detach, ( vlc_event_manager_t *p_event_manager,
+ vlc_event_type_t event_type,
+ vlc_event_callback_t pf_callback,
+ void *p_user_data ));
#endif /* VLC_EVENTS_H */
#include <vlc_es.h>
#include <vlc_meta.h>
#include <vlc_epg.h>
+#include <vlc_events.h>
struct vlc_meta_t;
int i_nb_played; /**< Number of times played */
vlc_meta_t *p_meta;
-
+
+ vlc_event_manager_t event_manager;
+
vlc_mutex_t lock; /**< Lock for the item */
};
p_i->p_meta = NULL;
vlc_mutex_init( p_o, &p_i->lock );
+ vlc_event_manager_init( &p_i->event_manager, p_i );
+ vlc_event_manager_register_event_type( &p_i->event_manager,
+ vlc_InputItemMetaChanged );
}
static inline void input_ItemCopyOptions( input_item_t *p_parent,
{
int i;
+ vlc_event_manager_fini( &p_i->event_manager );
+
free( p_i->psz_name );
free( p_i->psz_uri );
if( p_i->p_stats )
static inline void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz_val )
{
+ vlc_event_t event;
if( !p_i->p_meta )
p_i->p_meta = vlc_meta_New();
vlc_meta_Set( p_i->p_meta, meta_type, psz_val );
+
+ /* Notify interested third parties */
+ event.type = vlc_InputItemMetaChanged;
+ event.u.input_item_meta_changed.meta_type = meta_type;
+ vlc_event_send( &p_i->event_manager, &event );
}
static inline const char * input_item_GetMeta( input_item_t *p_i, vlc_meta_type_t meta_type )
* necessarily a vlc_object_t (an input_item_t is not a vlc_object_t
* for instance).
*/
-int event_manager_Create( vlc_event_manager_t * p_em, void * p_obj )
+int vlc_event_manager_init( vlc_event_manager_t * p_em, void * p_obj )
{
p_em->p_obj = p_obj;
ARRAY_INIT( p_em->listeners_groups );
/**
* Destroy the event manager
*/
-void event_manager_Destroy( vlc_event_manager_t * p_em )
+void vlc_event_manager_fini( vlc_event_manager_t * p_em )
{
struct vlc_event_listeners_group_t * listeners_group;
struct vlc_event_listener_t * listener;
/**
* Destroy the event manager
*/
-int event_manager_RegisterEventType(
+int vlc_event_manager_register_event_type(
vlc_event_manager_t * p_em,
vlc_event_type_t event_type )
{
/**
* Send an event to the listener attached to this p_em.
*/
-void event_Send( vlc_event_manager_t * p_em,
- vlc_event_t * p_event )
+void vlc_event_send( vlc_event_manager_t * p_em,
+ vlc_event_t * p_event )
{
vlc_event_listeners_group_t * listeners_group;
vlc_event_listener_t * listener;
/**
* Add a callback for an event.
*/
-int event_Attach( vlc_event_manager_t * p_event_manager,
- vlc_event_type_t event_type,
- vlc_event_callback_t pf_callback,
- void *p_user_data )
+int vlc_event_attach( vlc_event_manager_t * p_event_manager,
+ vlc_event_type_t event_type,
+ vlc_event_callback_t pf_callback,
+ void *p_user_data )
{
vlc_event_listeners_group_t * listeners_group;
vlc_event_listener_t * listener;
/**
* Remove a callback for an event.
*/
-int event_Detach( vlc_event_manager_t *p_event_manager,
- vlc_event_type_t event_type,
- vlc_event_callback_t pf_callback,
- void *p_user_data )
+int vlc_event_detach( vlc_event_manager_t *p_event_manager,
+ vlc_event_type_t event_type,
+ vlc_event_callback_t pf_callback,
+ void *p_user_data )
{
vlc_event_listeners_group_t * listeners_group;
struct vlc_event_listener_t * listener;