pulsesink: Don't request more shared memory than needed
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 9 Jun 2010 18:53:06 +0000 (20:53 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 9 Jun 2010 18:53:06 +0000 (20:53 +0200)
ext/pulse/pulsesink.c

index 7772d9278b7936b2bf90028531aac70ee3f7ee73..991a3e067b4a9b15ff7d2b2be069c494ea4314eb 100644 (file)
@@ -1325,6 +1325,15 @@ gst_pulseringbuffer_commit (GstRingBuffer * buf, guint64 * sample,
           goto was_paused;
       }
 
+      /* make sure we only buffer up latency-time samples */
+      if (pbuf->m_writable > buf->spec.segsize) {
+        /* limit buffering to latency-time value */
+        pbuf->m_writable = buf->spec.segsize;
+
+        GST_LOG_OBJECT (psink, "Limiting buffering to %" G_GSIZE_FORMAT,
+            pbuf->m_writable);
+      }
+
       GST_LOG_OBJECT (psink, "requesting %u bytes of shared memory",
           pbuf->m_writable);
       if (pa_stream_begin_write (pbuf->stream, &pbuf->m_data,
@@ -1334,13 +1343,10 @@ gst_pulseringbuffer_commit (GstRingBuffer * buf, guint64 * sample,
       }
       GST_LOG_OBJECT (psink, "got %u bytes of shared memory", pbuf->m_writable);
 
-      /* make sure we only buffer up latency-time samples */
+      /* Just to make sure that we didn't get more than requested */
       if (pbuf->m_writable > buf->spec.segsize) {
         /* limit buffering to latency-time value */
         pbuf->m_writable = buf->spec.segsize;
-
-        GST_LOG_OBJECT (psink, "Limiting buffering to %" G_GSIZE_FORMAT,
-            pbuf->m_writable);
       }
     }