splitmux: Recheck state after unlocking mutex.
authorJan Schmidt <jan@centricular.com>
Sun, 7 Aug 2016 14:56:38 +0000 (00:56 +1000)
committerJan Schmidt <jan@centricular.com>
Sun, 7 Aug 2016 14:56:38 +0000 (00:56 +1000)
After dropping the splitmux lock, re-check the state,
don't just fall through and sleep unconditionally,
as we may have already missed the wakeup.

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

gst/multifile/gstsplitmuxsink.c

index bf66a11..d3908c0 100644 (file)
@@ -1233,6 +1233,9 @@ handle_mq_input (GstPad * pad, GstPadProbeInfo * info, MqStreamCtx * ctx)
         GST_SPLITMUX_UNLOCK (splitmux);
         gst_pad_send_event (ctx->sinkpad, event);
         GST_SPLITMUX_LOCK (splitmux);
+        /* state may have changed while we were unlocked. Loop again if so */
+        if (splitmux->state != SPLITMUX_STATE_ENDING_FILE)
+          break;
         /* fallthrough */
       }
       case SPLITMUX_STATE_START_NEXT_FRAGMENT: