videomixer: Make selection of a sinkpad number threadsafe
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 5 May 2010 17:35:48 +0000 (19:35 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 5 May 2010 17:35:48 +0000 (19:35 +0200)
gst/videomixer/videomixer.c

index c77604e81d496062e2c9cb053e7c39344522eea9..3c94c63945d4b8e19449f0318164d7db147c0a8a 100644 (file)
@@ -1101,7 +1101,9 @@ gst_videomixer_request_new_pad (GstElement * element,
     gchar *name = NULL;
     GstVideoMixerCollect *mixcol = NULL;
 
-    if (req_name == NULL || strlen (req_name) < 6) {
+    GST_VIDEO_MIXER_STATE_LOCK (mix);
+    if (req_name == NULL || strlen (req_name) < 6
+        || !g_str_has_prefix (req_name, "sink_")) {
       /* no name given when requesting the pad, use next available int */
       serial = mix->next_sinkpad++;
     } else {
@@ -1116,7 +1118,6 @@ gst_videomixer_request_new_pad (GstElement * element,
         templ->direction, "template", templ, NULL);
     g_free (name);
 
-    GST_VIDEO_MIXER_STATE_LOCK (mix);
     mixpad->zorder = mix->numpads;
     mixpad->xpos = DEFAULT_PAD_XPOS;
     mixpad->ypos = DEFAULT_PAD_YPOS;