From b78a27beb22a535c60daf6a5da06673b2b554bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 9 Jun 2010 15:42:37 +0200 Subject: [PATCH] pulsesink: Fix playback if PA doesn't give us a large enough shared memory buffer --- ext/pulse/pulsesink.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c index efea9ae9fe..48fac1df55 100644 --- a/ext/pulse/pulsesink.c +++ b/ext/pulse/pulsesink.c @@ -1345,15 +1345,16 @@ gst_pulseringbuffer_commit (GstRingBuffer * buf, guint64 * sample, } } - avail = out_samples; + if (pbuf->m_writable < towrite) + towrite = pbuf->m_writable; + avail = towrite / bps; + GST_LOG_OBJECT (psink, "writing %u samples at offset %" G_GUINT64_FORMAT, (guint) avail, offset); if (G_LIKELY (inr == outr && !reverse)) { - /* no rate conversion, simply write out the samples */ /* copy the data into internal buffer */ - assert (pbuf->m_writable >= towrite); memcpy ((guint8 *) pbuf->m_data + pbuf->m_towrite, data, towrite); pbuf->m_towrite += towrite;