]> git.sesse.net Git - vlc/commitdiff
Force the sending threads to wakeup at exit - closes #1292
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 16 Sep 2007 12:36:29 +0000 (12:36 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 16 Sep 2007 12:36:29 +0000 (12:36 +0000)
modules/access_output/udp.c
modules/stream_out/rtp.c

index e409e0d81d045e87ad5ce093bcb2853af2dd90ca..e5e2cb3edcf79362de0cb32cc27b3bbd4ceb8d82 100644 (file)
@@ -302,6 +302,8 @@ static void Close( vlc_object_t * p_this )
     int i;
 
     vlc_object_kill( p_sys->p_thread );
+    block_FifoWake( p_sys->p_thread->p_fifo );
+
     for( i = 0; i < 10; i++ )
     {
         block_t *p_dummy = block_New( p_access, p_sys->i_mtu );
@@ -485,6 +487,8 @@ static void ThreadWrite( vlc_object_t *p_this )
         }
 #endif
         p_pk = block_FifoGet( p_thread->p_fifo );
+        if( p_pk == NULL )
+            continue; /* forced wake-up */
 
         i_date = p_thread->i_caching + p_pk->i_dts;
         if( i_date_last > 0 )
index 0d2365fe9b1b22375b270d15c067d8831659ad74..8f42d97d880f66a6a2bda09e9a67ac64097c2477 100644 (file)
@@ -1135,6 +1135,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
     sout_stream_sys_t *p_sys = p_stream->p_sys;
 
     vlc_object_kill( id );
+    block_FifoWake( id->p_fifo );
 
     vlc_mutex_lock( &p_sys->lock_es );
     TAB_REMOVE( p_sys->i_es, p_sys->es, id );
@@ -1311,6 +1312,9 @@ static void ThreadSend( vlc_object_t *p_this )
     while( !id->b_die )
     {
         block_t *out = block_FifoGet( id->p_fifo );
+        if( out == NULL )
+            continue; /* Forced wakeup */
+
         mtime_t  i_date = out->i_dts + i_caching;
         ssize_t  len = out->i_buffer;