ringbuffer: check for ringbuffer state first

Check for the state of the ringbuffer before doing the checks of the other
buffer properties, when we're not started, we don't care about those values.
This commit is contained in:
Wim Taymans 2010-06-25 17:18:34 +02:00
parent 3a00a97fd2
commit 2ced0a3d5d

View file

@ -1960,6 +1960,12 @@ gst_ring_buffer_prepare_read (GstRingBuffer * buf, gint * segment,
g_return_val_if_fail (GST_IS_RING_BUFFER (buf), FALSE); g_return_val_if_fail (GST_IS_RING_BUFFER (buf), FALSE);
if (buf->callback == NULL) {
/* push mode, fail when nothing is started */
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED)
return FALSE;
}
g_return_val_if_fail (buf->data != NULL, FALSE); g_return_val_if_fail (buf->data != NULL, FALSE);
g_return_val_if_fail (segment != NULL, FALSE); g_return_val_if_fail (segment != NULL, FALSE);
g_return_val_if_fail (readptr != NULL, FALSE); g_return_val_if_fail (readptr != NULL, FALSE);
@ -1967,12 +1973,6 @@ gst_ring_buffer_prepare_read (GstRingBuffer * buf, gint * segment,
data = GST_BUFFER_DATA (buf->data); data = GST_BUFFER_DATA (buf->data);
if (buf->callback == NULL) {
/* push mode, fail when nothing is started */
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED)
return FALSE;
}
/* get the position of the pointer */ /* get the position of the pointer */
segdone = g_atomic_int_get (&buf->segdone); segdone = g_atomic_int_get (&buf->segdone);