queue: don't ignore event return value

Pass the event return value upstream.
Remove strange goto construct.
This commit is contained in:
Wim Taymans 2013-12-11 14:42:34 +01:00
parent 12b3a37b5e
commit e5a73cc2ff
2 changed files with 14 additions and 18 deletions

View file

@ -758,16 +758,16 @@ no_item:
static gboolean static gboolean
gst_queue_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_queue_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
{ {
gboolean ret = TRUE;
GstQueue *queue; GstQueue *queue;
queue = GST_QUEUE (parent); queue = GST_QUEUE (parent);
switch (GST_EVENT_TYPE (event)) { switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_FLUSH_START: case GST_EVENT_FLUSH_START:
{
STATUS (queue, pad, "received flush start event"); STATUS (queue, pad, "received flush start event");
/* forward event */ /* forward event */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
/* now unblock the chain function */ /* now unblock the chain function */
GST_QUEUE_MUTEX_LOCK (queue); GST_QUEUE_MUTEX_LOCK (queue);
@ -783,13 +783,11 @@ gst_queue_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
* flush_start downstream. */ * flush_start downstream. */
gst_pad_pause_task (queue->srcpad); gst_pad_pause_task (queue->srcpad);
GST_CAT_LOG_OBJECT (queue_dataflow, queue, "loop stopped"); GST_CAT_LOG_OBJECT (queue_dataflow, queue, "loop stopped");
goto done; break;
}
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
{
STATUS (queue, pad, "received flush stop event"); STATUS (queue, pad, "received flush stop event");
/* forward event */ /* forward event */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
GST_QUEUE_MUTEX_LOCK (queue); GST_QUEUE_MUTEX_LOCK (queue);
gst_queue_locked_flush (queue, FALSE); gst_queue_locked_flush (queue, FALSE);
@ -801,8 +799,7 @@ gst_queue_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
GST_QUEUE_MUTEX_UNLOCK (queue); GST_QUEUE_MUTEX_UNLOCK (queue);
STATUS (queue, pad, "after flush"); STATUS (queue, pad, "after flush");
goto done; break;
}
default: default:
if (GST_EVENT_IS_SERIALIZED (event)) { if (GST_EVENT_IS_SERIALIZED (event)) {
/* serialized events go in the queue */ /* serialized events go in the queue */
@ -824,12 +821,11 @@ gst_queue_handle_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
GST_QUEUE_MUTEX_UNLOCK (queue); GST_QUEUE_MUTEX_UNLOCK (queue);
} else { } else {
/* non-serialized events are forwarded downstream immediately */ /* non-serialized events are forwarded downstream immediately */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
} }
break; break;
} }
done: return ret;
return TRUE;
/* ERRORS */ /* ERRORS */
out_eos: out_eos:

View file

@ -2186,6 +2186,7 @@ static gboolean
gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent, gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
GstEvent * event) GstEvent * event)
{ {
gboolean ret = TRUE;
GstQueue2 *queue; GstQueue2 *queue;
queue = GST_QUEUE2 (parent); queue = GST_QUEUE2 (parent);
@ -2196,7 +2197,7 @@ gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
GST_CAT_LOG_OBJECT (queue_dataflow, queue, "received flush start event"); GST_CAT_LOG_OBJECT (queue_dataflow, queue, "received flush start event");
if (GST_PAD_MODE (queue->srcpad) == GST_PAD_MODE_PUSH) { if (GST_PAD_MODE (queue->srcpad) == GST_PAD_MODE_PUSH) {
/* forward event */ /* forward event */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
/* now unblock the chain function */ /* now unblock the chain function */
GST_QUEUE2_MUTEX_LOCK (queue); GST_QUEUE2_MUTEX_LOCK (queue);
@ -2224,7 +2225,7 @@ gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
gst_event_unref (event); gst_event_unref (event);
} }
goto done; break;
} }
case GST_EVENT_FLUSH_STOP: case GST_EVENT_FLUSH_STOP:
{ {
@ -2232,7 +2233,7 @@ gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
if (GST_PAD_MODE (queue->srcpad) == GST_PAD_MODE_PUSH) { if (GST_PAD_MODE (queue->srcpad) == GST_PAD_MODE_PUSH) {
/* forward event */ /* forward event */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
GST_QUEUE2_MUTEX_LOCK (queue); GST_QUEUE2_MUTEX_LOCK (queue);
gst_queue2_locked_flush (queue, FALSE); gst_queue2_locked_flush (queue, FALSE);
@ -2257,7 +2258,7 @@ gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
gst_event_unref (event); gst_event_unref (event);
} }
goto done; break;
} }
default: default:
if (GST_EVENT_IS_SERIALIZED (event)) { if (GST_EVENT_IS_SERIALIZED (event)) {
@ -2270,12 +2271,11 @@ gst_queue2_handle_sink_event (GstPad * pad, GstObject * parent,
GST_QUEUE2_MUTEX_UNLOCK (queue); GST_QUEUE2_MUTEX_UNLOCK (queue);
} else { } else {
/* non-serialized events are passed upstream. */ /* non-serialized events are passed upstream. */
gst_pad_push_event (queue->srcpad, event); ret = gst_pad_push_event (queue->srcpad, event);
} }
break; break;
} }
done: return ret;
return TRUE;
/* ERRORS */ /* ERRORS */
out_flushing: out_flushing: