* \param self the service to lock
*/
+#include <execinfo.h>
+
void mlt_service_lock( mlt_service self )
{
if ( self != NULL )
int mlt_service_attach( mlt_service self, mlt_filter filter )
{
+#if 0
+ void *buffer[1024];
+ int num, i;
+ char **sym;
+ printf("ATTACHING %p -> %p\n", self, filter);
+ for (i = 0; i < 1024; ++i) buffer[i] = 0;
+ num = backtrace(buffer, 1024);
+ sym = backtrace_symbols(buffer, num);
+ for (i = 0; i < num; ++i) {
+ //printf("%3d: %s\n", sym[i]);
+ }
+ free(sym);
+#endif
int error = self == NULL || filter == NULL;
if ( error == 0 )
{
mlt_properties_set_data( props, "service", self, 0, NULL, NULL );
mlt_events_fire( properties, "service-changed", NULL );
mlt_events_fire( props, "service-changed", NULL );
+ mlt_service cp = mlt_properties_get_data( properties, "_cut_parent", NULL );
+ if ( cp )
+ mlt_events_fire( MLT_SERVICE_PROPERTIES(cp), "service-changed", NULL );
mlt_events_listen( props, self, "service-changed", ( mlt_listener )mlt_service_filter_changed );
mlt_events_listen( props, self, "property-changed", ( mlt_listener )mlt_service_filter_property_changed );
}
base->filters[i] = base->filters[i + 1];
}
base->filters[to] = filter;
+ mlt_events_fire( MLT_SERVICE_PROPERTIES(self), "service-changed", NULL );
error = 0;
}
}