ghostpad: avoid excessive notify for caps

Avoid an object property notify if the caps on the other pad were already
set (and thus notified).
This commit is contained in:
Wim Taymans 2009-06-04 18:26:04 +02:00
parent fa7db7d247
commit 814b46b6a6

View file

@ -673,14 +673,19 @@ static void
on_int_notify (GstPad * internal, GParamSpec * unused, GstGhostPad * pad)
{
GstCaps *caps;
gboolean changed;
g_object_get (internal, "caps", &caps, NULL);
GST_OBJECT_LOCK (pad);
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
changed = (GST_PAD_CAPS (pad) != caps);
if (changed)
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
GST_OBJECT_UNLOCK (pad);
g_object_notify (G_OBJECT (pad), "caps");
if (changed)
g_object_notify (G_OBJECT (pad), "caps");
if (caps)
gst_caps_unref (caps);
}
@ -689,17 +694,20 @@ static void
on_src_target_notify (GstPad * target, GParamSpec * unused, GstGhostPad * pad)
{
GstCaps *caps;
gboolean changed;
g_object_get (target, "caps", &caps, NULL);
GST_OBJECT_LOCK (pad);
changed = (GST_PAD_CAPS (pad) != caps);
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
GST_OBJECT_UNLOCK (pad);
g_object_notify (G_OBJECT (pad), "caps");
if (changed)
g_object_notify (G_OBJECT (pad), "caps");
if (caps)
gst_caps_unref (caps);
}
static gboolean