diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-03-07 15:29:30 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-03-07 15:29:30 +0000 |
commit | faf06d5ef4fbba98817ca1f863a9cfe8440f7265 (patch) | |
tree | 6c4ed123a66004d04bf48dd543851787dabd08c8 /src/xine-engine/demux.c | |
parent | 8e59691b2a3296f45355e8da5455bd203a64243d (diff) | |
download | xine-lib-faf06d5ef4fbba98817ca1f863a9cfe8440f7265.tar.gz xine-lib-faf06d5ef4fbba98817ca1f863a9cfe8440f7265.tar.bz2 |
workaround buggy pthread implementations with a timedwait
(thanks Ewald)
CVS patchset: 4358
CVS date: 2003/03/07 15:29:30
Diffstat (limited to 'src/xine-engine/demux.c')
-rw-r--r-- | src/xine-engine/demux.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c index e2f7c671c..1edfac777 100644 --- a/src/xine-engine/demux.c +++ b/src/xine-engine/demux.c @@ -125,10 +125,16 @@ void xine_demux_control_headers_done (xine_stream_t *stream) { while ((stream->header_count_audio<header_count_audio) || (stream->header_count_video<header_count_video)) { + struct timeval tv; + struct timespec ts; #ifdef LOG printf ("xine: waiting for headers.\n"); #endif - pthread_cond_wait (&stream->counter_changed, &stream->counter_lock); + gettimeofday(&tv, NULL); + ts.tv_sec = tv.tv_sec + 1; + ts.tv_nsec = tv.tv_usec * 1000; + /* use timedwait to workaround buggy pthread broadcast implementations */ + pthread_cond_timedwait (&stream->counter_changed, &stream->counter_lock, &ts); } #ifdef LOG printf ("xine: headers processed.\n"); |