diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c index 92cb9adc63..ca4ff742a3 100644 --- a/gst/playback/gstdecodebin3.c +++ b/gst/playback/gstdecodebin3.c @@ -2403,8 +2403,10 @@ ghost_pad_event_probe (GstPad * pad, GstPadProbeInfo * info, gst_event_unref (event); } /* Finally handle the switch */ - if (streams) + if (streams) { handle_stream_switch (dbin, streams, seqnum); + g_list_free_full (streams, g_free); + } ret = GST_PAD_PROBE_HANDLED; } break; @@ -2450,8 +2452,10 @@ gst_decodebin3_send_event (GstElement * element, GstEvent * event) } #endif /* Finally handle the switch */ - if (streams) + if (streams) { handle_stream_switch (dbin, streams, seqnum); + g_list_free_full (streams, g_free); + } gst_event_unref (event); return TRUE; diff --git a/gst/playback/gstplaybin3.c b/gst/playback/gstplaybin3.c index 337a85ac8a..5baae3ddb0 100644 --- a/gst/playback/gstplaybin3.c +++ b/gst/playback/gstplaybin3.c @@ -2371,7 +2371,14 @@ update_select_streams_event (GstPlayBin3 * playbin, GstEvent * event) } gst_event_unref (event); - return gst_event_new_select_streams (to_use); + event = gst_event_new_select_streams (to_use); + + if (streams) + g_list_free_full (streams, g_free); + if (to_use) + g_list_free_full (to_use, g_free); + + return event; } static gboolean