From: Dan Dennedy Date: Thu, 2 Jan 2014 06:40:38 +0000 (-0800) Subject: Let mlt_events_fire() return the number of listeners. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=3ff21e23e4df8980059f0bec092473dd54409d8f;p=mlt Let mlt_events_fire() return the number of listeners. Callers can determine if there is a listener that overrides some behavior. --- diff --git a/src/framework/mlt_events.c b/src/framework/mlt_events.c index 2a9f0153..7eff3df4 100644 --- a/src/framework/mlt_events.c +++ b/src/framework/mlt_events.c @@ -181,10 +181,12 @@ int mlt_events_register( mlt_properties self, const char *id, mlt_transmitter tr * \public \memberof mlt_events_struct * \param self a properties list * \param id the name of an event + * \return the number of listeners */ -void mlt_events_fire( mlt_properties self, const char *id, ... ) +int mlt_events_fire( mlt_properties self, const char *id, ... ) { + int result = 0; mlt_events events = mlt_events_fetch( self ); if ( events != NULL ) { @@ -215,10 +217,12 @@ void mlt_events_fire( mlt_properties self, const char *id, ... ) transmitter( event->listener, event->owner, event->service, args ); else event->listener( event->owner, event->service ); + ++result; } } } } + return result; } /** Register a listener. diff --git a/src/framework/mlt_events.h b/src/framework/mlt_events.h index 55bb18f4..832cd343 100644 --- a/src/framework/mlt_events.h +++ b/src/framework/mlt_events.h @@ -44,7 +44,7 @@ typedef void ( *mlt_listener )( ); extern void mlt_events_init( mlt_properties self ); extern int mlt_events_register( mlt_properties self, const char *id, mlt_transmitter transmitter ); -extern void mlt_events_fire( mlt_properties self, const char *id, ... ); +extern int mlt_events_fire( mlt_properties self, const char *id, ... ); extern mlt_event mlt_events_listen( mlt_properties self, void *service, const char *id, mlt_listener listener ); extern void mlt_events_block( mlt_properties self, void *service ); extern void mlt_events_unblock( mlt_properties self, void *service ); diff --git a/src/mlt++/MltProperties.cpp b/src/mlt++/MltProperties.cpp index 3da531a9..eb7d8674 100644 --- a/src/mlt++/MltProperties.cpp +++ b/src/mlt++/MltProperties.cpp @@ -102,9 +102,9 @@ void Properties::unblock( void *object ) mlt_events_unblock( get_properties( ), object != NULL ? object : get_properties( ) ); } -void Properties::fire_event( const char *event ) +int Properties::fire_event( const char *event ) { - mlt_events_fire( get_properties( ), event, NULL ); + return mlt_events_fire( get_properties( ), event, NULL ); } bool Properties::is_valid( ) diff --git a/src/mlt++/MltProperties.h b/src/mlt++/MltProperties.h index 6c5b8e87..9ccbcf9d 100644 --- a/src/mlt++/MltProperties.h +++ b/src/mlt++/MltProperties.h @@ -53,7 +53,7 @@ namespace Mlt void unlock( ); void block( void *object = NULL ); void unblock( void *object = NULL ); - void fire_event( const char *event ); + int fire_event( const char *event ); bool is_valid( ); int count( ); char *get( const char *name );