Author: krolik                       Date: Thu Mar 10 22:01:04 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- pthread leak patch sent by Piotr Pawlow

---- Files affected:
SOURCES:
   xine-lib-pthread_leak.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/xine-lib-pthread_leak.patch
diff -u /dev/null SOURCES/xine-lib-pthread_leak.patch:1.1
--- /dev/null   Thu Mar 10 23:01:04 2005
+++ SOURCES/xine-lib-pthread_leak.patch Thu Mar 10 23:00:59 2005
@@ -0,0 +1,65 @@
+diff -urN xine-lib-1.0.old/src/xine-engine/demux.c 
xine-lib-1.0/src/xine-engine/demux.c
+--- xine-lib-1.0.old/src/xine-engine/demux.c   2004-12-19 21:24:31.000000000 
+0100
++++ xine-lib-1.0/src/xine-engine/demux.c       2005-03-09 00:23:42.748241544 
+0100
+@@ -315,7 +315,6 @@
+   pthread_mutex_unlock (&stream->counter_lock);
+   
+   _x_handle_stream_end(stream, non_user);
+-  stream->demux_thread = 0;
+   return NULL;
+ }
+ 
+@@ -330,6 +329,8 @@
+   stream->demux_action_pending = 0;
+   
+   if( !stream->demux_thread_running ) {
++
++    _x_assert(stream->demux_thread == 0);
+     
+     stream->demux_thread_running = 1;
+     if ((err = pthread_create (&stream->demux_thread,
+@@ -362,8 +363,10 @@
+ 
+   lprintf ("joining thread %ld\n", stream->demux_thread );
+   
+-  if( stream->demux_thread )
++  if( stream->demux_thread ) {
+     pthread_join (stream->demux_thread, &p);
++    stream->demux_thread = 0;
++  }
+   
+   /*
+    * Wake up xine_play if it's waiting for a frame
+diff -urN xine-lib-1.0.old/src/xine-engine/xine.c 
xine-lib-1.0/src/xine-engine/xine.c
+--- xine-lib-1.0.old/src/xine-engine/xine.c    2004-12-20 22:22:21.000000000 
+0100
++++ xine-lib-1.0/src/xine-engine/xine.c        2005-03-09 00:27:07.623095832 
+0100
+@@ -276,8 +276,7 @@
+   if (stream->status == XINE_STATUS_STOP) {
+     _x_demux_control_end(stream, 0);
+     lprintf ("ignored\n");
+-    return;
+-  }
++  } else {
+ 
+   /* make sure we're not in "paused" state */
+   set_speed_internal (stream, XINE_FINE_SPEED_NORMAL);
+@@ -285,16 +284,16 @@
+   /* Don't change status if we're quitting */
+   if (stream->status != XINE_STATUS_QUIT)
+     stream->status = XINE_STATUS_STOP;
++  }
+ 
+   /*
+    * stop demux
+    */
++  if (stream->demux_plugin && stream->demux_thread) {
+   lprintf ("stopping demux\n");
+-  if (stream->demux_plugin) {
+     _x_demux_stop_thread( stream );
+-    lprintf ("stop thread done\n");
+-  }
+   lprintf ("demux stopped\n");
++  }
+   lprintf ("done\n");
+ }
+ 
================================================================

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to