videomixer: fix double unlock in segment seek segment code path
authorTim-Philipp Müller <tim@centricular.com>
Fri, 4 Jul 2014 19:22:10 +0000 (20:22 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 4 Jul 2014 19:26:46 +0000 (20:26 +0100)
We only want to unlock if we push an event downstream and
jump to done_unlock label afterwards. We would also unlock
in case of a segment seek and then unlock again later, and
nothing good can come of that.

(This code looks a bit dodgy anyway though, shouldn't it
also bail out with FLOW_EOS here in case of a segment seek
scenario, just without the event?)

gst/videomixer/videomixer2.c

index 4471dc3..418005e 100644 (file)
@@ -1246,8 +1246,8 @@ gst_videomixer2_collected (GstCollectPads * pads, GstVideoMixer2 * mix)
 
   if (output_end_time >= mix->segment.stop) {
     GST_DEBUG_OBJECT (mix, "Segment done");
-    GST_VIDEO_MIXER2_UNLOCK (mix);
     if (!(mix->segment.flags & GST_SEGMENT_FLAG_SEGMENT)) {
+      GST_VIDEO_MIXER2_UNLOCK (mix);
       gst_pad_push_event (mix->srcpad, gst_event_new_eos ());
 
       ret = GST_FLOW_EOS;