From 59f2cb3cb9fb4d77deb45ba7db7940658ee9c084 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 8 Apr 2010 11:54:19 +0200 Subject: [PATCH] shout2: Don't wait if we're late In fact, due to signedness issues, a negative delay would be changed to an almost infinite wait causing shout2send to "lock up". Reported by Christopher Montgomery. --- ext/shout2/gstshout2.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c index ec238ae..26f4130 100644 --- a/ext/shout2/gstshout2.c +++ b/ext/shout2/gstshout2.c @@ -648,13 +648,17 @@ gst_shout2send_render (GstBaseSink * basesink, GstBuffer * buf) delay = shout_delay (sink->conn); - GST_LOG_OBJECT (sink, "waiting %d msec", delay); - if (gst_poll_wait (sink->timer, GST_MSECOND * delay) == -1) { - GST_LOG_OBJECT (sink, "unlocked"); - - fret = gst_base_sink_wait_preroll (basesink); - if (fret != GST_FLOW_OK) - return fret; + if (delay > 0) { + GST_LOG_OBJECT (sink, "waiting %d msec", delay); + if (gst_poll_wait (sink->timer, GST_MSECOND * delay) == -1) { + GST_LOG_OBJECT (sink, "unlocked"); + + fret = gst_base_sink_wait_preroll (basesink); + if (fret != GST_FLOW_OK) + return fret; + } + } else { + GST_LOG_OBJECT (sink, "we're %d msec late", -delay); } GST_LOG_OBJECT (sink, "sending %u bytes of data", GST_BUFFER_SIZE (buf)); -- 2.7.4