From ce7221cf77a4de5b122ca6a2ff794009ea533d6e Mon Sep 17 00:00:00 2001 From: Andreas Frisch Date: Thu, 7 May 2009 11:20:47 +0000 Subject: [PATCH] prevent infinite loop on hacky EOS detection (fixes playlist getting stuck at the end of one mp3 in mediaplayer) --- src/gstdvbaudiosink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gstdvbaudiosink.c b/src/gstdvbaudiosink.c index 1745887..f8c56df 100644 --- a/src/gstdvbaudiosink.c +++ b/src/gstdvbaudiosink.c @@ -471,7 +471,6 @@ gst_dvbaudiosink_event (GstBaseSink * sink, GstEvent * event) int retval; pfd[0].fd = READ_SOCKET(self); pfd[0].events = POLLIN; - #if 0 /* needs driver support */ pfd[1].fd = self->fd; @@ -486,7 +485,7 @@ gst_dvbaudiosink_event (GstBaseSink * sink, GstEvent * event) break; GST_DEBUG_OBJECT (self, "EOS wait ended because of buffer empty. now waiting for PTS %llx", self->pts_eos); #endif - + long long lastdiff = 0; do { unsigned long long cur; ioctl(self->fd, AUDIO_GET_PTS, &cur); @@ -495,9 +494,10 @@ gst_dvbaudiosink_event (GstBaseSink * sink, GstEvent * event) GST_DEBUG_OBJECT (self, "at %llx (diff %llx)", cur, diff); - if (diff <= 0x1400) + if ( diff <= 0x1000 || lastdiff == diff ) break; + lastdiff = diff; retval = poll(pfd, 1, 1000); /* check for flush */ if (pfd[0].revents & POLLIN) -- 2.20.1