X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fevent.c;h=a98f23c7ab0e2266220625c601e93c5efce09521;hb=b5277240aa78e2515cc4f32ca4b582160b2ee8d8;hp=b98f14ca01cae1b2f36e7e44a0b358e5945d7288;hpb=ee1330c497b5c78f5fcfd0145391f219e489e13a;p=vlc diff --git a/src/control/event.c b/src/control/event.c index b98f14ca01..a98f23c7ab 100644 --- a/src/control/event.c +++ b/src/control/event.c @@ -26,12 +26,11 @@ #include #include - /* * Private functions */ -static vlc_bool_t +static bool listeners_are_equal( libvlc_event_listener_t * listener1, libvlc_event_listener_t * listener2 ) { @@ -40,7 +39,7 @@ listeners_are_equal( libvlc_event_listener_t * listener1, listener1->p_user_data == listener2->p_user_data; } -static vlc_bool_t +static bool group_contains_listener( libvlc_event_listeners_group_t * group, libvlc_event_listener_t * searched_listener ) { @@ -48,36 +47,15 @@ group_contains_listener( libvlc_event_listeners_group_t * group, for( i = 0; i < vlc_array_count(&group->listeners); i++ ) { if( listeners_are_equal(searched_listener, vlc_array_item_at_index(&group->listeners, i)) ) - return VLC_TRUE; + return true; } - return VLC_FALSE; + return false; } /* * Internal libvlc functions */ -/************************************************************************** - * libvlc_event_init (internal) : - * - * initialization function. - **************************************************************************/ -void libvlc_event_init( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) -{ - (void)p_instance;(void)p_e; - /* Will certainly be used to install libvlc_instance event */ -} - -/************************************************************************** - * libvlc_event_fini (internal) : - * - * finalization function. - **************************************************************************/ -void libvlc_event_fini( libvlc_instance_t *p_instance ) -{ - (void)p_instance; -} - /************************************************************************** * libvlc_event_manager_init (internal) : * @@ -100,8 +78,8 @@ libvlc_event_manager_new( void * p_obj, libvlc_instance_t * p_libvlc_inst, p_em->p_libvlc_instance = p_libvlc_inst; libvlc_retain( p_libvlc_inst ); vlc_array_init( &p_em->listeners_groups ); - vlc_mutex_init( p_libvlc_inst->p_libvlc_int, &p_em->object_lock ); - vlc_mutex_init_recursive( p_libvlc_inst->p_libvlc_int, &p_em->event_sending_lock ); + vlc_mutex_init( &p_em->object_lock ); + vlc_mutex_init_recursive( &p_em->event_sending_lock ); return p_em; } @@ -123,7 +101,7 @@ void libvlc_event_manager_release( libvlc_event_manager_t * p_em ) p_lg = vlc_array_item_at_index( &p_em->listeners_groups, i ); for( j = 0; j < vlc_array_count(&p_lg->listeners); j++) - free( vlc_array_item_at_index( &p_em->listeners_groups, i ) ); + free( vlc_array_item_at_index( &p_lg->listeners, j ) ); vlc_array_clear( &p_lg->listeners ); free( p_lg ); @@ -217,13 +195,13 @@ void libvlc_event_send( libvlc_event_manager_t * p_em, vlc_mutex_lock( &p_em->event_sending_lock ); listener_cached = array_listeners_cached; - listeners_group->b_sublistener_removed = VLC_FALSE; + listeners_group->b_sublistener_removed = false; for( i = 0; i < i_cached_listeners; i++ ) { if( listeners_group->b_sublistener_removed ) { /* If a callback was removed, this gets called */ - vlc_bool_t valid_listener; + bool valid_listener; vlc_mutex_lock( &p_em->object_lock ); valid_listener = group_contains_listener( listeners_group, listener_cached ); vlc_mutex_unlock( &p_em->object_lock ); @@ -233,7 +211,7 @@ void libvlc_event_send( libvlc_event_manager_t * p_em, continue; } } - + listener_cached->pf_callback( p_event, listener_cached->p_user_data ); listener_cached++; } @@ -251,22 +229,29 @@ void libvlc_event_send( libvlc_event_manager_t * p_em, * * Get the char * name of an event type. **************************************************************************/ -static const char * event_type_to_name[] = +static const char event_type_to_name[][35] = { #define EVENT(a) [a]=#a - EVENT(libvlc_MediaDescriptorMetaChanged), - EVENT(libvlc_MediaDescriptorSubItemAdded), - EVENT(libvlc_MediaDescriptorDurationChanged), - EVENT(libvlc_MediaDescriptorPreparsedChanged), - EVENT(libvlc_MediaDescriptorFreed), - EVENT(libvlc_MediaDescriptorStateChanged), - - EVENT(libvlc_MediaInstancePlayed), - EVENT(libvlc_MediaInstancePaused), - EVENT(libvlc_MediaInstanceEndReached), - EVENT(libvlc_MediaInstanceStopped), - EVENT(libvlc_MediaInstanceTimeChanged), - EVENT(libvlc_MediaInstancePositionChanged), + EVENT(libvlc_MediaMetaChanged), + EVENT(libvlc_MediaSubItemAdded), + EVENT(libvlc_MediaDurationChanged), + EVENT(libvlc_MediaPreparsedChanged), + EVENT(libvlc_MediaFreed), + EVENT(libvlc_MediaStateChanged), + + EVENT(libvlc_MediaPlayerNothingSpecial), + EVENT(libvlc_MediaPlayerOpening), + EVENT(libvlc_MediaPlayerBuffering), + EVENT(libvlc_MediaPlayerPlaying), + EVENT(libvlc_MediaPlayerPaused), + EVENT(libvlc_MediaPlayerStopped), + EVENT(libvlc_MediaPlayerForward), + EVENT(libvlc_MediaPlayerBackward), + EVENT(libvlc_MediaPlayerEndReached), + EVENT(libvlc_MediaPlayerTimeChanged), + EVENT(libvlc_MediaPlayerPositionChanged), + EVENT(libvlc_MediaPlayerSeekableChanged), + EVENT(libvlc_MediaPlayerPausableChanged), EVENT(libvlc_MediaListItemAdded), EVENT(libvlc_MediaListWillAddItem), @@ -286,7 +271,8 @@ static const char * event_type_to_name[] = EVENT(libvlc_MediaDiscovererEnded) #undef EVENT }; -static const char * unkwown_event_name = "Unknown Event"; + +static const char unkwown_event_name[] = "Unknown Event"; const char * libvlc_event_type_name( libvlc_event_type_t event_type ) { @@ -316,7 +302,7 @@ void libvlc_event_attach( libvlc_event_manager_t * p_event_manager, libvlc_exception_raise( p_e, "No Memory left" ); return; } - + listener->event_type = event_type; listener->p_user_data = p_user_data; listener->pf_callback = pf_callback; @@ -370,10 +356,10 @@ void libvlc_event_detach( libvlc_event_manager_t *p_event_manager, listener->p_user_data == p_user_data ) { /* that's our listener */ - + /* Mark this group as edited so that libvlc_event_send * will recheck what listener to call */ - listeners_group->b_sublistener_removed = VLC_FALSE; + listeners_group->b_sublistener_removed = false; free( listener ); vlc_array_remove( &listeners_group->listeners, j );