From: Benjamin O. <co...@us...> - 2003-04-12 13:38:46
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: company Date: Sat Apr 12 2003 06:38:45 PDT Log message: signal EOS on parent bins, when the last element playing sends EOS Modified files: gst : gstelement.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.192&r2=1.193 ====Begin Diffs==== Index: gstelement.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.192 retrieving revision 1.193 diff -u -d -r1.192 -r1.193 --- gstelement.c 11 Apr 2003 00:00:42 -0000 1.192 +++ gstelement.c 12 Apr 2003 13:38:32 -0000 1.193 @@ -2794,14 +2794,26 @@ void gst_element_set_eos (GstElement *element) { + GstElement *parent; + GstElementState parent_state; + g_return_if_fail (GST_IS_ELEMENT (element)); GST_DEBUG (GST_CAT_EVENT, "setting EOS on element %s", GST_OBJECT_NAME (element)); + parent = GST_ELEMENT (GST_OBJECT_PARENT (element)); + if (parent) + parent_state = GST_STATE (parent); + gst_element_set_state (element, GST_STATE_PAUSED); g_signal_emit (G_OBJECT (element), gst_element_signals[EOS], 0); + + if (parent && parent_state == GST_STATE_PLAYING && + GST_STATE (parent) == GST_STATE_PAUSED) { + gst_element_set_eos (parent); + } } |