]> git.sesse.net Git - mlt/commitdiff
Let mlt_events_fire() return the number of listeners.
authorDan Dennedy <dan@dennedy.org>
Thu, 2 Jan 2014 06:40:38 +0000 (22:40 -0800)
committerDan Dennedy <dan@dennedy.org>
Thu, 2 Jan 2014 06:40:38 +0000 (22:40 -0800)
Callers can determine if there is a listener that overrides some
behavior.

src/framework/mlt_events.c
src/framework/mlt_events.h
src/mlt++/MltProperties.cpp
src/mlt++/MltProperties.h

index 2a9f01530681a4d7b8632ba3d9f61e0e4d892779..7eff3df4dfae46656c71230503a76c58048a546b 100644 (file)
@@ -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.
index 55bb18f495b0a24e0f7c5a6f90467a84d0250866..832cd3430faa82dfdc1aa729a190539687176d7c 100644 (file)
@@ -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 );
index 3da531a99757c147de77884b869fac6b57a28316..eb7d867410816544c9ed7635206651d0d5b3d60c 100644 (file)
@@ -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( )
index 6c5b8e87ab89d403b15c71fdf5a524e3c386f5b8..9ccbcf9d1d36c1bd324f5bb28a8eccaf2e18122a 100644 (file)
@@ -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 );