X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fswig%2Fmltpp.i;h=7793f781d3927f72a4ab48cb05e1a934b5527808;hb=a73dbca8c02fda57a6789d08d716a20e1ba43c59;hp=d388aa6bf4ab50e80681635e48b51a8b1c0916e5;hpb=a300a3d71ba13c4063bcc919d4c0193ab66eeb73;p=melted diff --git a/mlt++/swig/mltpp.i b/mlt++/swig/mltpp.i index d388aa6..7793f78 100644 --- a/mlt++/swig/mltpp.i +++ b/mlt++/swig/mltpp.i @@ -34,16 +34,21 @@ namespace Mlt { %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 ); +%newobject Service::filter( int ); %newobject Producer::filter( int ); +%newobject Producer::cut( int, int ); %newobject Playlist::current( ); %newobject Playlist::clip_info( int ); %newobject Multitrack::track( int ); %newobject Tractor::multitrack( ); %newobject Tractor::field( ); %newobject Tractor::track( int ); +%newobject Miracle::execute( char * ); +%newobject Miracle::push( char *, Service & ); } /** Classes to wrap. @@ -65,6 +70,8 @@ namespace Mlt { %include %include %include +%include +%include #if defined(SWIGRUBY) @@ -74,11 +81,20 @@ static void ruby_listener( mlt_properties owner, void *object ); class RubyListener { + private: + VALUE callback; + 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 ); + } + + ~RubyListener( ) + { + delete event; } void mark( ) @@ -91,9 +107,6 @@ class RubyListener ID method = rb_intern( "call" ); rb_funcall( callback, method, 0 ); } - - private: - VALUE callback; }; static void ruby_listener( mlt_properties owner, void *object )