closedcaption: Don't leak caps event
authorEdward Hervey <edward@centricular.com>
Tue, 7 Feb 2023 07:49:24 +0000 (08:49 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 8 Feb 2023 22:10:20 +0000 (22:10 +0000)
All events that we handle should be unreffed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3906>

subprojects/gst-plugins-bad/ext/closedcaption/gstceaccoverlay.c

index 4327648..dbcecfe 100644 (file)
@@ -1000,7 +1000,6 @@ gst_cea_cc_overlay_cc_event (GstPad * pad, GstObject * parent, GstEvent * event)
             ("received non-TIME newsegment event on text input"));
       }
 
-      gst_event_unref (event);
       ret = TRUE;
 
       /* wake up the video chain, it might be waiting for a text buffer or
@@ -1027,7 +1026,6 @@ gst_cea_cc_overlay_cc_event (GstPad * pad, GstObject * parent, GstEvent * event)
       GST_CEA_CC_OVERLAY_BROADCAST (overlay);
       GST_CEA_CC_OVERLAY_UNLOCK (overlay);
 
-      gst_event_unref (event);
       ret = TRUE;
       break;
     }
@@ -1039,7 +1037,6 @@ gst_cea_cc_overlay_cc_event (GstPad * pad, GstObject * parent, GstEvent * event)
       gst_cea_cc_overlay_pop_text (overlay);
       gst_segment_init (&overlay->cc_segment, GST_FORMAT_TIME);
       GST_CEA_CC_OVERLAY_UNLOCK (overlay);
-      gst_event_unref (event);
       ret = TRUE;
       break;
     case GST_EVENT_FLUSH_START:
@@ -1048,7 +1045,6 @@ gst_cea_cc_overlay_cc_event (GstPad * pad, GstObject * parent, GstEvent * event)
       overlay->cc_flushing = TRUE;
       GST_CEA_CC_OVERLAY_BROADCAST (overlay);
       GST_CEA_CC_OVERLAY_UNLOCK (overlay);
-      gst_event_unref (event);
       ret = TRUE;
       break;
     case GST_EVENT_EOS:
@@ -1059,14 +1055,18 @@ gst_cea_cc_overlay_cc_event (GstPad * pad, GstObject * parent, GstEvent * event)
        * a text segment update */
       GST_CEA_CC_OVERLAY_BROADCAST (overlay);
       GST_CEA_CC_OVERLAY_UNLOCK (overlay);
-      gst_event_unref (event);
       ret = TRUE;
       break;
     default:
-      ret = gst_pad_event_default (pad, parent, event);
       break;
   }
 
+  if (ret) {
+    gst_event_unref (event);
+  } else {
+    ret = gst_pad_event_default (pad, parent, event);
+  }
+
   return ret;
 }