From: Benjamin O. <co...@us...> - 2003-04-08 21:08:04
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: company Date: Tue Apr 08 2003 14:08:02 PDT Log message: pad linking only works when both elements are not playing Modified files: gst : gstpad.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.213&r2=1.214 ====Begin Diffs==== Index: gstpad.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.213 retrieving revision 1.214 diff -u -d -r1.213 -r1.214 --- gstpad.c 30 Mar 2003 18:30:07 -0000 1.213 +++ gstpad.c 8 Apr 2003 21:07:46 -0000 1.214 @@ -989,6 +989,7 @@ GST_INFO (GST_CAT_PADS, "*actually* linking %s:%s and %s:%s", GST_DEBUG_PAD_NAME (realsrc), GST_DEBUG_PAD_NAME (realsink)); } + /* FIXME: shouldn't we convert this to g_return_val_if_fail? */ if (GST_RPAD_PEER (realsrc) != NULL) { GST_INFO (GST_CAT_PADS, "Real source pad %s:%s has a peer, failed", GST_DEBUG_PAD_NAME (realsrc)); @@ -1005,10 +1006,13 @@ return FALSE; } if (GST_PAD_PARENT (realsink) == NULL) { - GST_INFO (GST_CAT_PADS, "Real src pad %s:%s has no parent, failed", + GST_INFO (GST_CAT_PADS, "Real sink pad %s:%s has no parent, failed", GST_DEBUG_PAD_NAME (realsrc)); return FALSE; } + g_return_val_if_fail (GST_STATE (GST_PAD_PARENT (realsrc)) != GST_STATE_PLAYING, FALSE); + g_return_val_if_fail (GST_STATE (GST_PAD_PARENT (realsink)) != GST_STATE_PLAYING, FALSE); + if (!gst_pad_check_schedulers (realsrc, realsink)) { g_warning ("linking pads with different scheds requires " |