videomixer2: Solve segmentation fault when src caps are configured
authorDavid Fernandez <d.fernandezlop@gmail.com>
Thu, 13 Mar 2014 09:35:30 +0000 (10:35 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 25 Jun 2014 14:44:38 +0000 (16:44 +0200)
Change function pointers to NULL while holding the lock to avoid
race conditions

https://bugzilla.gnome.org/show_bug.cgi?id=701110

gst/videomixer/videomixer2.c

index b97e0ad..2997c73 100644 (file)
@@ -1642,16 +1642,16 @@ gst_videomixer2_src_setcaps (GstPad * pad, GstVideoMixer2 * mix, GstCaps * caps)
 
   GST_INFO_OBJECT (pad, "set src caps: %" GST_PTR_FORMAT, caps);
 
-  mix->blend = NULL;
-  mix->overlay = NULL;
-  mix->fill_checker = NULL;
-  mix->fill_color = NULL;
-
   if (!gst_video_info_from_caps (&info, caps))
     goto done;
 
   GST_VIDEO_MIXER2_LOCK (mix);
 
+  mix->blend = NULL;
+  mix->overlay = NULL;
+  mix->fill_checker = NULL;
+  mix->fill_color = NULL;
+
   if (GST_VIDEO_INFO_FPS_N (&mix->info) != GST_VIDEO_INFO_FPS_N (&info) ||
       GST_VIDEO_INFO_FPS_D (&mix->info) != GST_VIDEO_INFO_FPS_D (&info)) {
     if (mix->segment.position != -1) {