X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fsdl%2Fconsumer_sdl.c;h=06171b9cfaab2f092e0573a38c428a68e6a7bafc;hb=245af2ef6564488632b77c6e9018519ba134a320;hp=62e59f06457b0e82cdc3e1e608e4c9d689563138;hpb=f44c1d4653f43c8e7a63e6c3895f6f1f0ee0103b;p=melted diff --git a/src/modules/sdl/consumer_sdl.c b/src/modules/sdl/consumer_sdl.c index 62e59f0..06171b9 100644 --- a/src/modules/sdl/consumer_sdl.c +++ b/src/modules/sdl/consumer_sdl.c @@ -40,6 +40,7 @@ struct consumer_sdl_s mlt_properties properties; mlt_deque queue; pthread_t thread; + int joined; int running; uint8_t audio_buffer[ 4096 * 10 ]; int audio_avail; @@ -178,6 +179,7 @@ int consumer_start( mlt_consumer parent ) pthread_attr_t thread_attributes; this->running = 1; + this->joined = 0; // Allow the user to force resizing to window size if ( mlt_properties_get_int( this->properties, "resize" ) ) @@ -189,7 +191,7 @@ int consumer_start( mlt_consumer parent ) // Inherit the scheduling priority pthread_attr_init( &thread_attributes ); pthread_attr_setinheritsched( &thread_attributes, PTHREAD_INHERIT_SCHED ); - + pthread_create( &this->thread, &thread_attributes, consumer_thread, this ); } @@ -201,7 +203,7 @@ int consumer_stop( mlt_consumer parent ) // Get the actual object consumer_sdl this = parent->child; - if ( this->running ) + if ( this->joined == 0 ) { // Kill the thread and clean up this->running = 0; @@ -211,6 +213,7 @@ int consumer_stop( mlt_consumer parent ) pthread_mutex_unlock( &this->audio_mutex ); pthread_join( this->thread, NULL ); + this->joined = 1; } return 0;