? gst/.gstpad.c.swp
? gst/gstcaps.diff
? gst/test.wv
Index: gst/gstpad.c
===================================================================
RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v
retrieving revision 1.548
diff -u -p -u -p -r1.548 gstpad.c
--- gst/gstpad.c	22 Mar 2007 08:23:41 -0000	1.548
+++ gst/gstpad.c	22 Mar 2007 17:07:36 -0000
@@ -2343,6 +2343,9 @@ gst_pad_set_caps (GstPad * pad, GstCaps 
   g_return_val_if_fail (GST_IS_PAD (pad), FALSE);
   g_return_val_if_fail (caps == NULL || gst_caps_is_fixed (caps), FALSE);
 
+  if (!gst_pad_accept_caps (pad, caps))
+    goto could_not_set;
+
   GST_OBJECT_LOCK (pad);
   existing = GST_PAD_CAPS (pad);
   if (existing == caps)
@@ -2403,65 +2406,6 @@ could_not_set:
   }
 }
 
-static gboolean
-gst_pad_configure_sink (GstPad * pad, GstCaps * caps)
-{
-  GstPadSetCapsFunction setcaps;
-  gboolean res;
-
-  setcaps = GST_PAD_SETCAPSFUNC (pad);
-
-  /* See if pad accepts the caps - only needed if 
-   * no setcaps function */
-  if (setcaps == NULL)
-    if (!gst_pad_accept_caps (pad, caps))
-      goto not_accepted;
-
-  /* set caps on pad if call succeeds */
-  res = gst_pad_set_caps (pad, caps);
-  /* no need to unref the caps here, set_caps takes a ref and
-   * our ref goes away when we leave this function. */
-
-  return res;
-
-not_accepted:
-  {
-    GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
-        "caps %" GST_PTR_FORMAT " not accepted", caps);
-    return FALSE;
-  }
-}
-
-/* returns TRUE if the src pad could be configured to accept the given caps */
-static gboolean
-gst_pad_configure_src (GstPad * pad, GstCaps * caps, gboolean dosetcaps)
-{
-  GstPadSetCapsFunction setcaps;
-  gboolean res;
-
-  setcaps = GST_PAD_SETCAPSFUNC (pad);
-
-  /* See if pad accepts the caps - only needed if 
-   * no setcaps function */
-  if (setcaps == NULL)
-    if (!gst_pad_accept_caps (pad, caps))
-      goto not_accepted;
-
-  if (dosetcaps)
-    res = gst_pad_set_caps (pad, caps);
-  else
-    res = TRUE;
-
-  return res;
-
-not_accepted:
-  {
-    GST_CAT_DEBUG_OBJECT (GST_CAT_CAPS, pad,
-        "caps %" GST_PTR_FORMAT " not accepted", caps);
-    return FALSE;
-  }
-}
-
 /**
  * gst_pad_get_pad_template_caps:
  * @pad: a #GstPad to get the template capabilities from.
@@ -2742,7 +2686,7 @@ gst_pad_alloc_buffer_full (GstPad * pad,
   /* we got a new datatype on the pad, see if it can handle it */
   if (G_UNLIKELY (caps_changed)) {
     GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
-    if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, setcaps)))
+    if (G_UNLIKELY (setcaps && !gst_pad_set_caps (pad, caps)))
       goto not_negotiated;
   }
   return ret;
@@ -3443,7 +3387,7 @@ gst_pad_chain_unchecked (GstPad * pad, G
   /* we got a new datatype on the pad, see if it can handle it */
   if (G_UNLIKELY (caps_changed)) {
     GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
-    if (G_UNLIKELY (!gst_pad_configure_sink (pad, caps)))
+    if (G_UNLIKELY (!gst_pad_set_caps (pad, caps)))
       goto not_negotiated;
   }
 
@@ -3620,7 +3564,7 @@ gst_pad_push (GstPad * pad, GstBuffer * 
   /* we got a new datatype from the pad, it had better handle it */
   if (G_UNLIKELY (caps_changed)) {
     GST_DEBUG_OBJECT (pad, "caps changed to %p %" GST_PTR_FORMAT, caps, caps);
-    if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, TRUE)))
+    if (G_UNLIKELY (!gst_pad_set_caps (pad, caps)))
       goto not_negotiated;
   }
 
