{
GstMiniObject *item;
- if (queue->starting_segment != NULL) {
+ if (queue->stream_start_event != NULL) {
+ item = GST_MINI_OBJECT_CAST (queue->stream_start_event);
+ queue->stream_start_event = NULL;
+ } else if (queue->starting_segment != NULL) {
item = GST_MINI_OBJECT_CAST (queue->starting_segment);
queue->starting_segment = NULL;
} else {
gst_event_unref (queue->starting_segment);
queue->starting_segment = NULL;
queue->segment_event_received = FALSE;
+ gst_event_replace (&queue->stream_start_event, NULL);
/* we deleted a lot of something */
GST_QUEUE2_SIGNAL_DEL (queue);
* from downstream */
queue->unexpected = FALSE;
break;
+ case GST_EVENT_STREAM_START:
+ if (!QUEUE_IS_USING_QUEUE (queue)) {
+ gst_event_replace (&queue->stream_start_event, event);
+ gst_event_unref (event);
+ item = NULL;
+ }
+ break;
default:
if (!QUEUE_IS_USING_QUEUE (queue))
goto unexpected_event;
}
queue->segment_event_received = FALSE;
queue->starting_segment = NULL;
+ gst_event_replace (&queue->stream_start_event, NULL);
GST_QUEUE2_MUTEX_UNLOCK (queue);
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
gst_event_unref (queue->starting_segment);
queue->starting_segment = NULL;
}
+ gst_event_replace (&queue->stream_start_event, NULL);
GST_QUEUE2_MUTEX_UNLOCK (queue);
break;
case GST_STATE_CHANGE_READY_TO_NULL: