mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 18:51:11 +00:00
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:
parent
fa7db7d247
commit
814b46b6a6
1 changed files with 12 additions and 4 deletions
|
@ -673,14 +673,19 @@ 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_OBJECT_LOCK (pad);
|
GST_OBJECT_LOCK (pad);
|
||||||
|
changed = (GST_PAD_CAPS (pad) != caps);
|
||||||
|
if (changed)
|
||||||
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
|
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
|
||||||
GST_OBJECT_UNLOCK (pad);
|
GST_OBJECT_UNLOCK (pad);
|
||||||
|
|
||||||
|
if (changed)
|
||||||
g_object_notify (G_OBJECT (pad), "caps");
|
g_object_notify (G_OBJECT (pad), "caps");
|
||||||
|
|
||||||
if (caps)
|
if (caps)
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
}
|
}
|
||||||
|
@ -689,17 +694,20 @@ static void
|
||||||
on_src_target_notify (GstPad * target, GParamSpec * unused, GstGhostPad * pad)
|
on_src_target_notify (GstPad * target, GParamSpec * unused, GstGhostPad * pad)
|
||||||
{
|
{
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
gboolean changed;
|
||||||
|
|
||||||
g_object_get (target, "caps", &caps, NULL);
|
g_object_get (target, "caps", &caps, NULL);
|
||||||
|
|
||||||
GST_OBJECT_LOCK (pad);
|
GST_OBJECT_LOCK (pad);
|
||||||
|
changed = (GST_PAD_CAPS (pad) != caps);
|
||||||
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
|
gst_caps_replace (&(GST_PAD_CAPS (pad)), caps);
|
||||||
GST_OBJECT_UNLOCK (pad);
|
GST_OBJECT_UNLOCK (pad);
|
||||||
|
|
||||||
|
if (changed)
|
||||||
g_object_notify (G_OBJECT (pad), "caps");
|
g_object_notify (G_OBJECT (pad), "caps");
|
||||||
|
|
||||||
if (caps)
|
if (caps)
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
Loading…
Reference in a new issue