g_free (date_string);
gst_adaptive_demux_clock_set_utc_time (demux->realtime_clock, utc_now);
+
+ g_date_time_unref (utc_now);
+ gst_date_time_unref (datetime);
}
}
}
GstEvent *event = (GstEvent *) mo;
if (GST_EVENT_TYPE (event) == GST_EVENT_GAP)
slot->pushed_timed_data = TRUE;
- gst_pad_push_event (slot->pad, event);
+ gst_pad_push_event (slot->pad, gst_event_ref (event));
if (GST_EVENT_IS_STICKY (event))
gst_event_store_mark_delivered (&track->sticky_events, event);
+ gst_event_unref (event);
} else if (GST_IS_BUFFER (mo)) {
GstBuffer *buffer = (GstBuffer *) mo;
gst_adaptive_demux_loop_start (GstAdaptiveDemuxLoop * loop)
{
g_mutex_lock (&loop->lock);
- if (loop->thread != NULL && !loop->stopped)
+ if (loop->thread != NULL)
goto done; /* Already running */
loop->stopped = FALSE;
gst_adaptive_demux_loop_stop (GstAdaptiveDemuxLoop * loop, gboolean wait)
{
g_mutex_lock (&loop->lock);
- loop->stopped = TRUE;
- if (loop->loop != NULL) {
+ if (!loop->stopped) {
+ loop->stopped = TRUE;
+
GSource *s = g_idle_source_new ();
g_source_set_callback (s, (GSourceFunc) do_quit_cb,
gst_adaptive_demux_loop_ref (loop),
while (loop->loop != NULL)
g_cond_wait (&loop->cond, &loop->lock);
}
+
+ if (loop->thread != NULL) {
+ g_thread_unref (loop->thread);
+ loop->thread = NULL;
+ }
}
g_mutex_unlock (&loop->lock);