diff options
author | Colin Walters <walters@verbum.org> | 2004-05-07 20:26:46 +0000 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2004-05-07 20:26:46 +0000 |
commit | 39a537b7ae873400b412626edfdc1789ec22dd4e (patch) | |
tree | 74ad773897af0248d824bee35e44678f184b18e8 /ext | |
parent | e9d760851b7902d955720288b8cc300e07f37d2c (diff) |
fix a number of memleaks
Original commit message from CVS:
fix a number of memleaks
Diffstat (limited to 'ext')
-rw-r--r-- | ext/flac/gstflacdec.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index af5e8b97..e8881f1c 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -56,6 +56,7 @@ enum static void gst_flacdec_base_init (gpointer g_class); static void gst_flacdec_class_init (FlacDecClass * klass); static void gst_flacdec_init (FlacDec * flacdec); +static void gst_flacdec_dispose (GObject * object); static void gst_flacdec_loop (GstElement * element); static GstElementStateReturn gst_flacdec_change_state (GstElement * element); @@ -168,6 +169,8 @@ gst_flacdec_class_init (FlacDecClass * klass) parent_class = g_type_class_ref (GST_TYPE_ELEMENT); + gobject_class->dispose = gst_flacdec_dispose; + gstelement_class->change_state = gst_flacdec_change_state; } @@ -227,6 +230,21 @@ gst_flacdec_init (FlacDec * flacdec) FLAC__seekable_stream_decoder_set_client_data (flacdec->decoder, flacdec); } +static void +gst_flacdec_dispose (GObject * object) +{ + FlacDec *flacdec; + + flacdec = GST_FLACDEC (object); + + if (flacdec->decoder) + FLAC__seekable_stream_decoder_delete (flacdec->decoder); + flacdec->decoder = NULL; + + G_OBJECT_CLASS (parent_class)->dispose (object); +} + + static gboolean gst_flacdec_update_metadata (FlacDec * flacdec, const FLAC__StreamMetadata * metadata) |