gst/base/gstbasesink.c: Fix preroll lockup.

Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_change_state):
Fix preroll lockup.
This commit is contained in:
Wim Taymans 2005-03-10 17:43:48 +00:00
parent bd9cd13058
commit 6c611baadf
3 changed files with 21 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2005-03-10 Wim Taymans <wim@fluendo.com>
* gst/base/gstbasesink.c: (gst_basesink_change_state):
Fix preroll lockup.
2005-03-10 Wim Taymans <wim@fluendo.com>
* REQUIREMENTS:

View file

@ -814,6 +814,13 @@ gst_basesink_change_state (GstElement * element)
}
GST_PREROLL_UNLOCK (basesink->sinkpad);
break;
default:
break;
}
GST_ELEMENT_CLASS (parent_class)->change_state (element);
switch (transition) {
case GST_STATE_PLAYING_TO_PAUSED:
{
gboolean eos;
@ -850,6 +857,7 @@ gst_basesink_change_state (GstElement * element)
basesink->need_preroll = FALSE;
basesink->have_preroll = FALSE;
GST_PREROLL_UNLOCK (basesink->sinkpad);
/* make sure the element is finished processing */
GST_STREAM_LOCK (basesink->sinkpad);
GST_STREAM_UNLOCK (basesink->sinkpad);
@ -860,7 +868,6 @@ gst_basesink_change_state (GstElement * element)
break;
}
GST_ELEMENT_CLASS (parent_class)->change_state (element);
DEBUG ("state change < %p %x\n", basesink, transition);
return ret;
}

View file

@ -814,6 +814,13 @@ gst_basesink_change_state (GstElement * element)
}
GST_PREROLL_UNLOCK (basesink->sinkpad);
break;
default:
break;
}
GST_ELEMENT_CLASS (parent_class)->change_state (element);
switch (transition) {
case GST_STATE_PLAYING_TO_PAUSED:
{
gboolean eos;
@ -850,6 +857,7 @@ gst_basesink_change_state (GstElement * element)
basesink->need_preroll = FALSE;
basesink->have_preroll = FALSE;
GST_PREROLL_UNLOCK (basesink->sinkpad);
/* make sure the element is finished processing */
GST_STREAM_LOCK (basesink->sinkpad);
GST_STREAM_UNLOCK (basesink->sinkpad);
@ -860,7 +868,6 @@ gst_basesink_change_state (GstElement * element)
break;
}
GST_ELEMENT_CLASS (parent_class)->change_state (element);
DEBUG ("state change < %p %x\n", basesink, transition);
return ret;
}