* vlc_my_cool_object_new()
* {
* ...
- * vlc_event_manager_Create( &p_self->p_event_manager, p_this );
+ * vlc_event_manager_init( &p_self->p_event_manager, p_self, p_a_libvlc_object );
* vlc_event_manager_register_event_type(p_self->p_event_manager,
* vlc_MyCoolObjectDidSomething, p_e)
* ...
* vlc_my_cool_object_release()
* {
* ...
- * vlc_event_manager_release( p_self->p_event_manager );
+ * vlc_event_manager_fini( &p_self->p_event_manager );
* ...
* }
*
* vlc_event_t event;
* event.type = vlc_MyCoolObjectDidSomething;
* event.u.my_cool_object_did_something.what_it_did = kSomething;
- * vlc_event_send( p_self->p_event_manager, &event );
+ * vlc_event_send( &p_self->p_event_manager, &event );
* }
* */
-
+
/*****************************************************************************
* Event Type
*****************************************************************************/
{
void * p_obj;
vlc_mutex_t object_lock;
+ vlc_mutex_t event_sending_lock;
vlc_object_t *p_parent_object;
DECL_ARRAY(struct vlc_event_listeners_group_t *) listeners_groups;
} vlc_event_manager_t;
/* List of event */
/* Be sure to keep sync-ed with misc/events.c debug name table */
typedef enum vlc_event_type_t {
+ /* Input (thread) events */
+ vlc_InputStateChanged,
+ vlc_InputSelectedStreamChanged,
+
/* Input item events */
vlc_InputItemMetaChanged,
vlc_InputItemSubItemAdded,
vlc_InputItemDurationChanged,
vlc_InputItemPreparsedChanged,
+ vlc_InputItemNameChanged,
+ vlc_InputItemInfoChanged,
/* Service Discovery event */
vlc_ServicesDiscoveryItemAdded,
- vlc_ServicesDiscoveryItemRemoved
+ vlc_ServicesDiscoveryItemRemoved,
+ vlc_ServicesDiscoveryStarted,
+ vlc_ServicesDiscoveryEnded
} vlc_event_type_t;
/* Event definition */
void * p_obj; /* Sender object, automatically filled by vlc_event_send() */
union vlc_event_type_specific
{
+ /* Input (thread) events */
+ struct vlc_input_state_changed
+ {
+ int new_state;
+ } input_state_changed;
+ struct vlc_input_selected_stream_changed
+ {
+ void * unused;
+ } input_selected_stream_changed;
+
/* Input item events */
struct vlc_input_item_meta_changed
{
{
int new_status;
} input_item_preparsed_changed;
+ struct vlc_input_item_name_changed
+ {
+ const char * new_name;
+ } input_item_name_changed;
+ struct vlc_input_item_info_changed
+ {
+ void * unused;
+ } input_item_info_changed;
/* Service discovery events */
struct vlc_services_discovery_item_added
{
input_item_t * p_item;
} services_discovery_item_removed;
+ struct vlc_services_discovery_started
+ {
+ void * unused;
+ } services_discovery_started;
+ struct vlc_services_discovery_ended
+ {
+ void * unused;
+ } services_discovery_ended;
} u;
} vlc_event_t;
* which events are sent
* p_obj is here to give us a libvlc instance
*/
-VLC_EXPORT(int, vlc_event_manager_init, ( vlc_event_manager_t * p_em,
+#define vlc_event_manager_init_with_vlc_object(a,b) \
+ vlc_event_manager_init( a, b, b )
+
+#define vlc_event_manager_init(a,b,c) \
+ __vlc_event_manager_init(a, b, VLC_OBJECT(c))
+VLC_EXPORT(int, __vlc_event_manager_init, ( vlc_event_manager_t * p_em,
void * p_obj, vlc_object_t * ));
/*