summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f94d6d1)
raw | patch | inline | side by side (parent: f94d6d1)
author | David Schleef <ds@schleef.org> | |
Wed, 24 Dec 2003 01:39:08 +0000 (01:39 +0000) | ||
committer | David Schleef <ds@schleef.org> | |
Wed, 24 Dec 2003 01:39:08 +0000 (01:39 +0000) |
Original commit message from CVS:
Add some sanity tests to gstpad.c. Check that pad is linked before
calling gst_pad_try_set_caps() on it in spideridentity.
Add some sanity tests to gstpad.c. Check that pad is linked before
calling gst_pad_try_set_caps() on it in spideridentity.
gst/autoplug/gstspideridentity.c | patch | blob | history | |
gst/gstpad.c | patch | blob | history |
index e43677774aeefdfcf01d3fe96afeb0cf38c47a70..3df2552ede7514a220aa0f01ac6d6317a1aebab4 100644 (file)
plug:
GST_INFO ("typefind function found caps");
ident->caps = find.caps;
- g_assert (GST_PAD_LINK_SUCCESSFUL (gst_pad_try_set_caps (ident->src, find.caps)));
+ if (GST_PAD_IS_LINKED (ident->src)) {
+ GstPadLinkReturn ret;
+
+ ret = gst_pad_try_set_caps (ident->src, find.caps);
+ if (GST_PAD_LINK_FAILED (ret)){
+ g_critical("could not set caps on spideridentity src pad\n");
+ }
+ }
{
gchar *str = gst_caps_to_string (find.caps);
GST_LOG_OBJECT (ident, "spider starting caps: %s", str);
diff --git a/gst/gstpad.c b/gst/gstpad.c
index 61d294c32f04b714919ed8eddcdfdd1b552dadfc..09c1f85e801dba9425df6e3a8b16ec71c6dd8dfc 100644 (file)
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
static void gst_pad_dispose (GObject *object);
static void gst_pad_set_pad_template (GstPad *pad, GstPadTemplate *templ);
-static GstCaps * _gst_pad_default_fixate_func (GstPad *pad, GstCaps *caps, gpointer unused);
+static GstCaps * _gst_pad_default_fixate_func (GstPad *pad, GstCaps *caps, gpointer unused);
+
+static void gst_pad_link_free (GstPadLink *link);
#ifndef GST_DISABLE_LOADSAVE
static xmlNodePtr gst_pad_save_thyself (GstObject *object, xmlNodePtr parent);
src_sched = gst_pad_get_scheduler (GST_PAD (realsrc));
sink_sched = gst_pad_get_scheduler (GST_PAD (realsink));
+ gst_pad_link_free (GST_RPAD_LINK (realsrc));
+
/* first clear peers */
GST_RPAD_PEER (realsrc) = NULL;
GST_RPAD_PEER (realsink) = NULL;
+ GST_RPAD_LINK (realsrc) = NULL;
+ GST_RPAD_LINK (realsink) = NULL;
/* now tell the scheduler */
if (src_sched && src_sched == sink_sched) {
g_return_val_if_fail (pad != NULL, GST_PAD_LINK_REFUSED);
g_return_val_if_fail (GST_IS_PAD (pad), GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (GST_PAD_LINK_SRC (pad), GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (GST_PAD_LINK_SINK (pad), GST_PAD_LINK_REFUSED);
+
link = gst_pad_link_new ();
link->srcpad = GST_PAD_LINK_SRC (pad);
g_return_val_if_fail (pad != NULL, GST_PAD_LINK_REFUSED);
g_return_val_if_fail (GST_IS_PAD (pad), GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (GST_PAD_PEER (pad), GST_PAD_LINK_REFUSED);
g_return_val_if_fail (!GST_FLAG_IS_SET (pad, GST_PAD_NEGOTIATING),
GST_PAD_LINK_REFUSED);
return GST_PAD_LINK_REFUSED;
}
+ g_return_val_if_fail (GST_PAD_LINK_SRC (pad), GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (GST_PAD_LINK_SINK (pad), GST_PAD_LINK_REFUSED);
+
link = gst_pad_link_new ();
link->srcpad = GST_PAD_LINK_SRC (pad);
return FALSE;
}
+ g_return_val_if_fail (realsrc != NULL, GST_PAD_LINK_REFUSED);
+ g_return_val_if_fail (realsink != NULL, GST_PAD_LINK_REFUSED);
+
link = gst_pad_link_new ();
if (GST_RPAD_DIRECTION (realsrc) == GST_PAD_SRC) {