continue;
}
+ if (!sel->playing) {
+ GST_DEBUG_OBJECT (selpad, "Waiting for playing");
+ GST_INPUT_SELECTOR_WAIT (sel);
+ GST_DEBUG_OBJECT (selpad, "Done waiting");
+ continue;
+ }
+
/* FIXME: If no upstream latency was queried yet, do one now */
clock_id =
gst_clock_new_single_shot_id (clock,
g_mutex_init (&sel->lock);
g_cond_init (&sel->cond);
sel->eos = FALSE;
+ sel->playing = FALSE;
sel->upstream_latency = 0;
sel->last_output_ts = GST_CLOCK_TIME_NONE;
GST_INPUT_SELECTOR_BROADCAST (self);
GST_INPUT_SELECTOR_UNLOCK (self);
break;
+ case GST_STATE_CHANGE_PAUSED_TO_PLAYING:{
+ GST_INPUT_SELECTOR_LOCK (self);
+ self->playing = TRUE;
+ GST_INPUT_SELECTOR_BROADCAST (self);
+ GST_INPUT_SELECTOR_UNLOCK (self);
+ }
case GST_STATE_CHANGE_PLAYING_TO_PAUSED:{
GList *walk;
case GST_STATE_CHANGE_PAUSED_TO_READY:
gst_input_selector_reset (self);
break;
+ case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+ GST_INPUT_SELECTOR_LOCK (self);
+ self->playing = FALSE;
+ GST_INPUT_SELECTOR_UNLOCK (self);
default:
break;
}