]> git.sesse.net Git - mlt/commitdiff
Improve refresh handling for sdl_audio consumer.
authorDan Dennedy <dan@dennedy.org>
Sat, 9 Mar 2013 21:16:15 +0000 (13:16 -0800)
committerDan Dennedy <dan@dennedy.org>
Sat, 9 Mar 2013 21:16:15 +0000 (13:16 -0800)
This may eventually be applied as well to sdl_preview.

src/modules/sdl/consumer_sdl_audio.c

index 2ae110daa1f4f2a7656b28c9e247279c5785b1b2..31e71829edc5a3cd725edaefeb008a31aaaec1e4 100644 (file)
@@ -144,7 +144,8 @@ static void consumer_refresh_cb( mlt_consumer sdl, mlt_consumer parent, char *na
        {
                consumer_sdl self = parent->child;
                pthread_mutex_lock( &self->refresh_mutex );
-               self->refresh_count = self->refresh_count <= 0 ? 1 : self->refresh_count + 1;
+               if ( self->refresh_count < 2 )
+                       self->refresh_count = self->refresh_count <= 0 ? 1 : self->refresh_count + 1;
                pthread_cond_broadcast( &self->refresh_cond );
                pthread_mutex_unlock( &self->refresh_mutex );
        }
@@ -537,7 +538,7 @@ static void *consumer_thread( void *arg )
                        else if ( self->running )
                        {
                                pthread_mutex_lock( &self->refresh_mutex );
-                               if ( refresh == 0 && self->refresh_count <= 0 )
+                               if ( ( refresh == 0 && self->refresh_count <= 0 ) || self->refresh_count > 1 )
                                {
                                        consumer_play_video( self, frame );
                                        pthread_cond_wait( &self->refresh_cond, &self->refresh_mutex );