X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_tractor.c;h=5e0caca72ebf9dcbe575ac6a288199b85a79ad9d;hb=ec7f7d58e000242e918c2ae2cebd172bffe6e9d4;hp=f68079a1b436ff2e0f47eed4c6e99887d6b234b2;hpb=fc5ebbfed65635009b29bdd52a1c0deebadc9157;p=melted diff --git a/src/framework/mlt_tractor.c b/src/framework/mlt_tractor.c index f68079a..5e0caca 100644 --- a/src/framework/mlt_tractor.c +++ b/src/framework/mlt_tractor.c @@ -41,6 +41,7 @@ struct mlt_tractor_s */ static int producer_get_frame( mlt_producer this, mlt_frame_ptr frame, int track ); +static void producer_close( mlt_producer this ); /** Constructor for the tractor. @@ -55,10 +56,12 @@ mlt_tractor mlt_tractor_init( ) mlt_producer producer = &this->parent; if ( mlt_producer_init( producer, this ) == 0 ) { - producer->get_frame = producer_get_frame; mlt_properties_set( mlt_producer_properties( producer ), "resource", "" ); mlt_properties_set( mlt_producer_properties( producer ), "mlt_type", "mlt_producer" ); mlt_properties_set( mlt_producer_properties( producer ), "mlt_service", "tractor" ); + + producer->get_frame = producer_get_frame; + producer->close = producer_close; } else { @@ -202,7 +205,16 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int tra void mlt_tractor_close( mlt_tractor this ) { + this->parent.close = NULL; mlt_producer_close( &this->parent ); free( this ); } +/** Close the producer. +*/ + +void producer_close( mlt_producer this ) +{ + mlt_tractor_close( this->child ); +} +