gst/mpegstream/: Ref events before sending them to multiple pads, after all gst_pad_s...
authorTim-Philipp Müller <tim@centricular.net>
Tue, 29 Nov 2005 11:26:35 +0000 (11:26 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Tue, 29 Nov 2005 11:26:35 +0000 (11:26 +0000)
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_event):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_newsegment),
(gst_mpeg_parse_send_event):
Ref events before sending them to multiple pads, after all
gst_pad_send_event() takes ownership of events. Don't leak
events that have not been handled (fixes #322745).

ChangeLog
common
gst/mpegstream/gstmpegdemux.c
gst/mpegstream/gstmpegparse.c

index 55daa8a..14752eb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-11-29  Michal Benes  <michal dot benes at xeris dot cz>
+
+       Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_event):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_newsegment),
+       (gst_mpeg_parse_send_event):
+         Ref events before sending them to multiple pads, after all
+         gst_pad_send_event() takes ownership of events. Don't leak
+         events that have not been handled (fixes #322745).
+
 2005-11-28  Martin Soto  <martinsoto@users.sourceforge.net>
 
        * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
diff --git a/common b/common
index b0b08bc..33084fb 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit b0b08bcd66ca385364b6f90663585b09693aec67
+Subproject commit 33084fbe0531733bc02aa1d9de608206d5553a15
index 01629fd..07b0232 100644 (file)
@@ -317,6 +317,8 @@ gst_mpeg_demux_send_event (GstMPEGParse * mpeg_parse, GstEvent * event,
 
   if (parent_class->send_event)
     return parent_class->send_event (mpeg_parse, event, time);
+  else
+    gst_event_unref (event);
 
   return TRUE;
 }
index 351e008..70484d5 100644 (file)
@@ -364,6 +364,7 @@ gst_mpeg_parse_send_newsegment (GstMPEGParse * mpeg_parse, gdouble rate,
     return CLASS (mpeg_parse)->send_event (mpeg_parse, event, start_time);
   }
 
+  gst_event_unref (event);
   return FALSE;
 }
 
@@ -380,6 +381,7 @@ gst_mpeg_parse_send_event (GstMPEGParse * mpeg_parse, GstEvent * event,
   while (TRUE) {
     switch (gst_iterator_next (it, &pad)) {
       case GST_ITERATOR_OK:
+        gst_event_ref (event);
         gst_pad_push_event (GST_PAD (pad), event);
         gst_object_unref (GST_OBJECT (pad));
         break;
@@ -396,6 +398,7 @@ gst_mpeg_parse_send_event (GstMPEGParse * mpeg_parse, GstEvent * event,
 
 done:
   gst_iterator_free (it);
+  gst_event_unref (event);
 
   return ret;
 }