From 38f6a0ba2e2152135a4c102048de9288b87b35d4 Mon Sep 17 00:00:00 2001 From: Aleksandr Slobodeniuk Date: Thu, 1 Dec 2022 10:34:10 +0100 Subject: [PATCH] rtspsrc: fix seek event leaks Part-of: --- subprojects/gst-plugins-good/gst/rtsp/gstrtspsrc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/subprojects/gst-plugins-good/gst/rtsp/gstrtspsrc.c b/subprojects/gst-plugins-good/gst/rtsp/gstrtspsrc.c index 304563cc1b..63769f8308 100644 --- a/subprojects/gst-plugins-good/gst/rtsp/gstrtspsrc.c +++ b/subprojects/gst-plugins-good/gst/rtsp/gstrtspsrc.c @@ -1594,6 +1594,9 @@ gst_rtspsrc_finalize (GObject * object) if (rtspsrc->tls_interaction) g_object_unref (rtspsrc->tls_interaction); + if (rtspsrc->initial_seek) + gst_event_unref (rtspsrc->initial_seek); + /* free locks */ g_rec_mutex_clear (&rtspsrc->stream_rec_lock); g_rec_mutex_clear (&rtspsrc->state_rec_lock); @@ -9576,12 +9579,12 @@ gst_rtspsrc_send_event (GstElement * element, GstEvent * event) if (GST_EVENT_TYPE (event) == GST_EVENT_SEEK) { if (rtspsrc->state >= GST_RTSP_STATE_READY) { res = gst_rtspsrc_perform_seek (rtspsrc, event); - gst_event_unref (event); } else { /* Store for later use */ res = TRUE; - rtspsrc->initial_seek = event; + gst_event_replace (&rtspsrc->initial_seek, event); } + gst_event_unref (event); } else if (GST_EVENT_IS_DOWNSTREAM (event)) { res = gst_rtspsrc_push_event (rtspsrc, event); } else {