mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 02:00:33 +00:00
ghostpad: Use gst_pad_set_caps() instead of manually changing caps
gst_pad_set_caps() does essentially the same but additionally calls the pad's setcaps function. Fixes bug #658076.
This commit is contained in:
parent
7079d8c7f4
commit
fcadf09779
1 changed files with 2 additions and 32 deletions
|
@ -1019,25 +1019,11 @@ static void
|
||||||
on_int_notify (GstPad * internal, GParamSpec * unused, GstGhostPad * pad)
|
on_int_notify (GstPad * internal, GParamSpec * unused, GstGhostPad * pad)
|
||||||
{
|
{
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
gboolean changed;
|
|
||||||
|
|
||||||
g_object_get (internal, "caps", &caps, NULL);
|
g_object_get (internal, "caps", &caps, NULL);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (pad, "notified %p %" GST_PTR_FORMAT, caps, caps);
|
GST_DEBUG_OBJECT (pad, "notified %p %" GST_PTR_FORMAT, caps, caps);
|
||||||
|
gst_pad_set_caps (GST_PAD_CAST (pad), caps);
|
||||||
GST_OBJECT_LOCK (pad);
|
|
||||||
changed = (GST_PAD_CAPS (pad) != caps);
|
|
||||||
if (changed)
|
|
||||||
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
|
|
||||||
GST_OBJECT_UNLOCK (pad);
|
|
||||||
|
|
||||||
if (changed) {
|
|
||||||
#if GLIB_CHECK_VERSION(2,26,0)
|
|
||||||
g_object_notify_by_pspec ((GObject *) pad, pspec_caps);
|
|
||||||
#else
|
|
||||||
g_object_notify ((GObject *) pad, "caps");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (caps)
|
if (caps)
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
@ -1049,7 +1035,6 @@ on_src_target_notify (GstPad * target, GParamSpec * unused, gpointer user_data)
|
||||||
GstProxyPad *proxypad;
|
GstProxyPad *proxypad;
|
||||||
GstGhostPad *gpad;
|
GstGhostPad *gpad;
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
gboolean changed;
|
|
||||||
|
|
||||||
g_object_get (target, "caps", &caps, NULL);
|
g_object_get (target, "caps", &caps, NULL);
|
||||||
|
|
||||||
|
@ -1075,22 +1060,7 @@ on_src_target_notify (GstPad * target, GParamSpec * unused, gpointer user_data)
|
||||||
GST_PROXY_UNLOCK (proxypad);
|
GST_PROXY_UNLOCK (proxypad);
|
||||||
GST_OBJECT_UNLOCK (target);
|
GST_OBJECT_UNLOCK (target);
|
||||||
|
|
||||||
GST_OBJECT_LOCK (gpad);
|
gst_pad_set_caps (GST_PAD_CAST (gpad), caps);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (gpad, "notified %p %" GST_PTR_FORMAT, caps, caps);
|
|
||||||
|
|
||||||
changed = (GST_PAD_CAPS (gpad) != caps);
|
|
||||||
if (changed)
|
|
||||||
gst_caps_replace (&(GST_PAD_CAPS (gpad)), caps);
|
|
||||||
GST_OBJECT_UNLOCK (gpad);
|
|
||||||
|
|
||||||
if (changed) {
|
|
||||||
#if GLIB_CHECK_VERSION(2,26,0)
|
|
||||||
g_object_notify_by_pspec ((GObject *) gpad, pspec_caps);
|
|
||||||
#else
|
|
||||||
g_object_notify ((GObject *) gpad, "caps");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
g_object_unref (gpad);
|
g_object_unref (gpad);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue