return &this->parent;
}
+/** Get the consumer properties.
+*/
+
+mlt_properties mlt_consumer_properties( mlt_consumer this )
+{
+ return mlt_service_properties( &this->parent );
+}
+
/** Connect the consumer to the producer.
*/
return mlt_service_connect_producer( &this->parent, producer, 0 );
}
+/** Start the consumer.
+*/
+
+int mlt_consumer_start( mlt_consumer this )
+{
+ if ( this->start != NULL )
+ return this->start( this );
+ return 0;
+}
+
+/** Stop the consumer.
+*/
+
+int mlt_consumer_stop( mlt_consumer this )
+{
+ if ( this->stop != NULL )
+ return this->stop( this );
+ return 0;
+}
+
+/** Determine if the consumer is stopped.
+*/
+
+int mlt_consumer_is_stopped( mlt_consumer this )
+{
+ if ( this->is_stopped != NULL )
+ return this->is_stopped( this );
+ return 0;
+}
+
/** Close the consumer.
*/
void mlt_consumer_close( mlt_consumer this )
{
- if ( this->close != NULL )
- this->close( this );
+ // Get the childs close function
+ void ( *consumer_close )( ) = this->close;
+
+ // Make sure it only gets called once
+ this->close = NULL;
+
+ // Call the childs close if available
+ if ( consumer_close != NULL )
+ consumer_close( this );
else
mlt_service_close( &this->parent );
}