ghostpad: hold a reference to the target pad while unlinking it

https://bugzilla.gnome.org/show_bug.cgi?id=725809
This commit is contained in:
George Kiagiadakis 2014-03-06 12:40:23 +02:00 committed by Tim-Philipp Müller
parent 3e043378d8
commit c72ba7e3d9

View file

@ -836,7 +836,7 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
GST_DEBUG_OBJECT (gpad, "clearing target"); GST_DEBUG_OBJECT (gpad, "clearing target");
/* clear old target */ /* clear old target */
if ((oldtarget = GST_PROXY_PAD_TARGET (gpad))) { if ((oldtarget = gst_pad_get_peer (internal))) {
GST_OBJECT_UNLOCK (gpad); GST_OBJECT_UNLOCK (gpad);
/* unlink internal pad */ /* unlink internal pad */
@ -844,6 +844,8 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
gst_pad_unlink (internal, oldtarget); gst_pad_unlink (internal, oldtarget);
else else
gst_pad_unlink (oldtarget, internal); gst_pad_unlink (oldtarget, internal);
gst_object_unref (oldtarget);
} else { } else {
GST_OBJECT_UNLOCK (gpad); GST_OBJECT_UNLOCK (gpad);
} }