From: ddennedy Date: Fri, 9 May 2008 04:29:32 +0000 (+0000) Subject: mlt_field.[hc]: added mlt_field_disconnect_service X-Git-Url: http://research.m1stereo.tv/gitweb?a=commitdiff_plain;h=4fcb6720ea4c619f8ba57e919b7202c77e6041f9;p=melted mlt_field.[hc]: added mlt_field_disconnect_service git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@1120 d19143bc-622f-0410-bfdd-b5b2a6649095 --- diff --git a/src/framework/mlt_field.c b/src/framework/mlt_field.c index d1409d6..e6131dd 100644 --- a/src/framework/mlt_field.c +++ b/src/framework/mlt_field.c @@ -191,3 +191,26 @@ void mlt_field_close( mlt_field this ) } } +void mlt_field_disconnect_service( mlt_field self, mlt_service service ) +{ + mlt_service p = mlt_service_producer( service ); + mlt_service c = mlt_service_consumer( service); + int i; + switch ( mlt_service_identify(c) ) + { + case filter_type: + i = mlt_filter_get_track( MLT_FILTER(c) ); + mlt_service_connect_producer( c, p, i ); + break; + case transition_type: + i = mlt_transition_get_a_track ( MLT_TRANSITION(c) ); + mlt_service_connect_producer( c, p, i ); + break; + case tractor_type: + self->producer = p; + mlt_tractor_connect( MLT_TRACTOR(c), p ); + default: + break; + } + mlt_events_fire( mlt_field_properties( self ), "service-changed", NULL ); +} diff --git a/src/framework/mlt_field.h b/src/framework/mlt_field.h index 839276e..d5b0c20 100644 --- a/src/framework/mlt_field.h +++ b/src/framework/mlt_field.h @@ -32,6 +32,7 @@ extern mlt_properties mlt_field_properties( mlt_field self ); extern int mlt_field_plant_filter( mlt_field self, mlt_filter that, int track ); extern int mlt_field_plant_transition( mlt_field self, mlt_transition that, int a_track, int b_track ); extern void mlt_field_close( mlt_field self ); +extern void mlt_field_disconnect_service( mlt_field self, mlt_service service ); #endif