} vlc_event_listeners_group_t;
#ifdef DEBUG_EVENT
-static const char * ppsz_event_type_to_name[] =
+static const char * ppsz_event_type_to_name[] =
{
[vlc_InputItemMetaChanged] = "vlc_InputItemMetaChanged",
[vlc_InputItemSubItemAdded] = "vlc_InputItemSubItemAdded",
#endif
/*****************************************************************************
- *
+ *
*****************************************************************************/
/**
FOREACH_ARRAY( listener, listeners_group->listeners )
free( listener );
FOREACH_END()
+ ARRAY_RESET( listeners_group->listeners );
free( listeners_group );
FOREACH_END()
+ ARRAY_RESET( p_em->listeners_groups );
}
/**
listeners_group->event_type = event_type;
ARRAY_INIT( listeners_group->listeners );
-
+
vlc_mutex_lock( &p_em->object_lock );
ARRAY_APPEND( p_em->listeners_groups, listeners_group );
vlc_mutex_unlock( &p_em->object_lock );
if( !array_of_cached_listeners )
{
msg_Err( p_em->p_parent_object, "Not enough memory in vlc_event_send" );
+ vlc_mutex_unlock( &p_em->object_lock );
return;
}
#ifdef DEBUG_EVENT
cached_listener->psz_debug_name = strdup(cached_listener->psz_debug_name);
#endif
- cached_listener += sizeof(vlc_event_listener_t);
+ cached_listener++;
FOREACH_END()
break;
}
FOREACH_END()
vlc_mutex_unlock( &p_em->object_lock );
-
+
/* Call the function attached */
cached_listener = array_of_cached_listeners;
for( i = 0; i < i_cached_listeners; i++ )
cached_listener->psz_debug_name,
ppsz_event_type_to_name[p_event->type],
cached_listener->p_user_data );
+ free(cached_listener->psz_debug_name);
#endif
cached_listener->pf_callback( p_event, cached_listener->p_user_data );
- cached_listener += sizeof(vlc_event_listener_t) ;
+ cached_listener++;
}
free( array_of_cached_listeners );
listener = malloc(sizeof(vlc_event_listener_t));
if( !listener )
return VLC_ENOMEM;
-
+
listener->p_user_data = p_user_data;
listener->pf_callback = pf_callback;
#ifdef DEBUG_EVENT