[vlc-devel] commit: live555 timeout prevention thread fixes (Sebastien Escudier )

git version control git at videolan.org
Wed Oct 15 16:11:18 CEST 2008


vlc | branch: master | Sebastien Escudier <sebastien-devel at celeos.eu> | Thu Oct  9 13:46:39 2008 +0200| [7aca939ab1ed52290efac498101ad4faa6c6e32c] | committer: Rémi Denis-Courmont 

live555 timeout prevention thread fixes

Signed-off-by: Rémi Denis-Courmont <rdenis at simphalempin.com>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7aca939ab1ed52290efac498101ad4faa6c6e32c
---

 modules/demux/live555.cpp |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/modules/demux/live555.cpp b/modules/demux/live555.cpp
index 687dc88..4e7f303 100644
--- a/modules/demux/live555.cpp
+++ b/modules/demux/live555.cpp
@@ -407,15 +407,15 @@ error:
     if( p_sys->i_track ) free( p_sys->track );
     if( p_sys->p_out_asf ) stream_DemuxDelete( p_sys->p_out_asf );
     if( p_sys->rtsp && p_sys->ms ) p_sys->rtsp->teardownMediaSession( *p_sys->ms );
-    if( p_sys->ms ) Medium::close( p_sys->ms );
-    if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
-    if( p_sys->env ) p_sys->env->reclaim();
     if( p_sys->p_timeout )
     {
         vlc_cancel( p_sys->p_timeout->handle );
         vlc_join( p_sys->p_timeout->handle, NULL );
         free( p_sys->p_timeout );
     }
+    if( p_sys->ms ) Medium::close( p_sys->ms );
+    if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
+    if( p_sys->env ) p_sys->env->reclaim();
     delete p_sys->scheduler;
     free( p_sys->p_sdp );
     free( p_sys->psz_path );
@@ -448,15 +448,15 @@ static void Close( vlc_object_t *p_this )
     if( p_sys->i_track ) free( p_sys->track );
     if( p_sys->p_out_asf ) stream_DemuxDelete( p_sys->p_out_asf );
     if( p_sys->rtsp && p_sys->ms ) p_sys->rtsp->teardownMediaSession( *p_sys->ms );
-    if( p_sys->ms ) Medium::close( p_sys->ms );
-    if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
-    if( p_sys->env ) p_sys->env->reclaim();
     if( p_sys->p_timeout )
     {
         vlc_cancel( p_sys->p_timeout->handle );
         vlc_join( p_sys->p_timeout->handle, NULL );
         free( p_sys->p_timeout );
     }
+    if( p_sys->ms ) Medium::close( p_sys->ms );
+    if( p_sys->rtsp ) RTSPClient::close( p_sys->rtsp );
+    if( p_sys->env ) p_sys->env->reclaim();
     delete p_sys->scheduler;
     free( p_sys->p_sdp );
     free( p_sys->psz_path );
@@ -1042,15 +1042,22 @@ static int Play( demux_t *p_demux )
         {
             msg_Dbg( p_demux, "We have a timeout of %d seconds",  p_sys->i_timeout );
             p_sys->p_timeout = (timeout_thread_t *)malloc( sizeof(timeout_thread_t) );
-            p_sys->p_timeout->p_sys = p_demux->p_sys; /* lol, object recursion :D */
-            if( vlc_clone( &p_sys->p_timeout->handle,  TimeoutPrevention,
-                           p_sys->p_timeout, VLC_THREAD_PRIORITY_LOW ) )
+            if( p_sys->p_timeout )
             {
-                msg_Err( p_demux, "cannot spawn liveMedia timeout thread" );
-                free( p_sys->p_timeout );
-                p_sys->p_timeout = NULL;
+                memset( p_sys->p_timeout, 0, sizeof(timeout_thread_t) );
+                p_sys->p_timeout->p_sys = p_demux->p_sys; /* lol, object recursion :D */
+                if( vlc_clone( &p_sys->p_timeout->handle,  TimeoutPrevention,
+                               p_sys->p_timeout, VLC_THREAD_PRIORITY_LOW ) )
+                {
+                    msg_Err( p_demux, "cannot spawn liveMedia timeout thread" );
+                    free( p_sys->p_timeout );
+                    p_sys->p_timeout = NULL;
+                }
+                else
+                    msg_Dbg( p_demux, "spawned timeout thread" );
             }
-            msg_Dbg( p_demux, "spawned timeout thread" );
+            else
+                msg_Err( p_demux, "cannot spawn liveMedia timeout thread" );
         }
     }
     p_sys->i_pcr = 0;




More information about the vlc-devel mailing list