summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2017-11-24 09:40:07 +0100
committerEdward Hervey <bilboed@bilboed.com>2017-12-01 09:48:39 +0100
commite33d740474b0ce21a17faa04d1b5d347ac9f789c (patch)
tree6db9f1c0cd44ad31d96e18737038ed2df23514b3
parentb81223213f26ff96481a048222b3ff71dd87c4b5 (diff)
ghostpad: access internal pad with lock held
-rw-r--r--gst/gstghostpad.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gst/gstghostpad.c b/gst/gstghostpad.c
index 39755cfe9..d649f18e9 100644
--- a/gst/gstghostpad.c
+++ b/gst/gstghostpad.c
@@ -836,15 +836,16 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
g_return_val_if_fail (GST_IS_GHOST_PAD (gpad), FALSE);
g_return_val_if_fail (GST_PAD_CAST (gpad) != newtarget, FALSE);
- if (newtarget == GST_PROXY_PAD_INTERNAL (gpad)) {
+ GST_OBJECT_LOCK (gpad);
+ internal = GST_PROXY_PAD_INTERNAL (gpad);
+
+ if (newtarget == internal) {
+ GST_OBJECT_UNLOCK (gpad);
GST_WARNING_OBJECT (gpad, "Target has already been set to %s:%s",
GST_DEBUG_PAD_NAME (newtarget));
return FALSE;
}
- GST_OBJECT_LOCK (gpad);
- internal = GST_PROXY_PAD_INTERNAL (gpad);
-
if (newtarget)
GST_DEBUG_OBJECT (gpad, "set target %s:%s", GST_DEBUG_PAD_NAME (newtarget));
else