*
* This implements a way to send and receive event for an object (which can be
* a simple C struct or less).
- *
+ *
* This is in direct concurrency with the Variable based Callback
* (see src/misc/variables.c).
*
*
* (vlc_cool_object_t doesn't need to have the VLC_COMMON_MEMBERS.)
*
- * struct vlc_cool_object_t
+ * struct vlc_cool_object_t
* {
* ...
* vlc_event_manager_t p_event_manager;
{
void * p_obj;
vlc_mutex_t object_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 item events */
vlc_InputItemMetaChanged,
{
input_item_t * p_new_child;
} input_item_subitem_added;
-
+
/* Service discovery events */
struct vlc_services_discovery_item_added
{
/*
* Add a callback for an event.
*/
-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 ));
+#define vlc_event_attach(a, b, c, d) __vlc_event_attach(a, b, c, d, #c)
+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,
+ const char * psz_debug_name ));
/*
* Remove a callback for an event.