From 1bd08df850a0e7e4cf664a8d8fdf3ca89ac108b4 Mon Sep 17 00:00:00 2001 From: lilo_booter Date: Tue, 14 Dec 2004 21:38:13 +0000 Subject: [PATCH] Mutex locking in the get frame git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@560 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/framework/mlt_producer.c | 3 ++- src/framework/mlt_service.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/framework/mlt_producer.c b/src/framework/mlt_producer.c index 6dc08e1..c465181 100644 --- a/src/framework/mlt_producer.c +++ b/src/framework/mlt_producer.c @@ -399,7 +399,8 @@ mlt_position mlt_producer_get_length( mlt_producer this ) void mlt_producer_prepare_next( mlt_producer this ) { - mlt_producer_seek( this, mlt_producer_position( this ) + mlt_producer_get_speed( this ) ); + if ( mlt_producer_get_speed( this ) != 0 ) + mlt_producer_seek( this, mlt_producer_position( this ) + mlt_producer_get_speed( this ) ); } /** Get a frame. diff --git a/src/framework/mlt_service.c b/src/framework/mlt_service.c index d8173d6..a5e6df9 100644 --- a/src/framework/mlt_service.c +++ b/src/framework/mlt_service.c @@ -358,7 +358,6 @@ int mlt_service_get_frame( mlt_service this, mlt_frame_ptr frame, int index ) mlt_position in = mlt_properties_get_position( properties, "in" ); mlt_position out = mlt_properties_get_position( properties, "out" ); mlt_properties_inc_ref( properties ); - mlt_service_unlock( this ); result = this->get_frame( this, frame, index ); if ( result == 0 ) { @@ -370,9 +369,11 @@ int mlt_service_get_frame( mlt_service this, mlt_frame_ptr frame, int index ) } mlt_service_apply_filters( this, *frame, 1 ); mlt_deque_push_back( MLT_FRAME_SERVICE_STACK( *frame ), this ); + mlt_service_unlock( this ); } else { + mlt_service_unlock( this ); mlt_service_close( this ); } return result; -- 1.7.4.4