X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_consumer.c;h=29f248eed10825bf6de7dfab9871cac731f3ed1e;hb=431b31b728b23fe9b35bf79a5d165876d581e6b8;hp=32c76680561a44741ed4b0d03e4493f6f712b560;hpb=0a763f7b10f28184bba59fd8cecbc29999c131ef;p=melted diff --git a/src/framework/mlt_consumer.c b/src/framework/mlt_consumer.c index 32c7668..29f248e 100644 --- a/src/framework/mlt_consumer.c +++ b/src/framework/mlt_consumer.c @@ -639,22 +639,26 @@ void mlt_consumer_close( mlt_consumer this ) // Get the childs close function void ( *consumer_close )( ) = this->close; - // Just in case... - mlt_consumer_stop( this ); - - // Make sure it only gets called once - this->close = NULL; - this->parent.close = NULL; - - // Destroy the push mutex and condition - pthread_cond_broadcast( &this->put_cond ); - pthread_mutex_destroy( &this->put_mutex ); - pthread_cond_destroy( &this->put_cond ); + if ( consumer_close ) + { + // Just in case... + mlt_consumer_stop( this ); - // Call the childs close if available - if ( consumer_close != NULL ) + this->close = NULL; consumer_close( this ); + } else + { + + // Make sure it only gets called once + this->parent.close = NULL; + + // Destroy the push mutex and condition + pthread_cond_broadcast( &this->put_cond ); + pthread_mutex_destroy( &this->put_mutex ); + pthread_cond_destroy( &this->put_cond ); + mlt_service_close( &this->parent ); + } } }