Frame::Frame( mlt_frame frame ) :
instance( frame )
{
+ inc_ref( );
}
Frame::Frame( Frame &frame ) :
return error;
}
-void Properties::listen( char *id, void *object, mlt_listener listener )
+Event *Properties::listen( char *id, void *object, mlt_listener listener )
{
- char key[ 128 ];
mlt_event event = mlt_events_listen( get_properties( ), object, id, listener );
- if ( event != NULL )
- {
- sprintf( key, "_%p", event );
- mlt_properties_set_data( get_properties( ), key, event, 0, ( mlt_destructor )mlt_event_close, NULL );
- }
+ return new Event( event );
}
Event *Properties::setup_wait_for( char *id )
void dump( FILE *output = stderr );
void debug( char *title = "Object", FILE *output = stderr );
int save( char *file );
- void listen( char *id, void *object, mlt_listener listener );
+ Event *listen( char *id, void *object, mlt_listener listener );
Event *setup_wait_for( char *id );
void wait_for( Event *, bool destroy = true );
};
%newobject Factory::filter( char *, char * );
%newobject Factory::transition( char *, char * );
%newobject Factory::consumer( char *, char * );
+%newobject Properties::listen( char *, void *, mlt_listener );
%newobject Service::producer( );
%newobject Service::consumer( );
%newobject Service::get_frame( int );
class RubyListener
{
+ private:
+ Mlt::Event *event;
+
public:
RubyListener( Mlt::Properties &properties, char *id, VALUE callback ) :
callback( callback )
{
- properties.listen( id, this, ( mlt_listener )ruby_listener );
+ event = properties.listen( id, this, ( mlt_listener )ruby_listener );
+ }
+
+ ~RubyList( )
+ {
+ delete event;
}
void mark( )