diff options
author | Benjamin Otte <otte@gnome.org> | 2003-05-10 11:35:59 +0000 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2003-05-10 11:35:59 +0000 |
commit | d1e45d83b96f9e207f53eda0ae9cffd4eb5e50f6 (patch) | |
tree | e7f8d9c7679ee7639ea36eb85eecd4b6748d357c /sys/oss/gstosssrc.c | |
parent | d271f13fd1f3d683236c4f7c961f89880344e56a (diff) |
properly get rid of clocks on disposal - be parent of own clock
Original commit message from CVS:
properly get rid of clocks on disposal - be parent of own clock
Diffstat (limited to 'sys/oss/gstosssrc.c')
-rw-r--r-- | sys/oss/gstosssrc.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index db810f59..5f545db0 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -87,6 +87,8 @@ GST_PAD_TEMPLATE_FACTORY (osssrc_src_factory, static void gst_osssrc_class_init (GstOssSrcClass *klass); static void gst_osssrc_init (GstOssSrc *osssrc); +static void gst_osssrc_dispose (GObject *object); +static void gst_osssrc_finalize (GObject *object); static GstPadLinkReturn gst_osssrc_srcconnect (GstPad *pad, GstCaps *caps); static const GstFormat* gst_osssrc_get_formats (GstPad *pad); @@ -162,6 +164,8 @@ gst_osssrc_class_init (GstOssSrcClass *klass) gobject_class->set_property = gst_osssrc_set_property; gobject_class->get_property = gst_osssrc_get_property; + gobject_class->dispose = gst_osssrc_dispose; + gobject_class->finalize = gst_osssrc_finalize; gstelement_class->change_state = gst_osssrc_change_state; gstelement_class->send_event = gst_osssrc_send_event; @@ -195,8 +199,29 @@ gst_osssrc_init (GstOssSrc *osssrc) osssrc->provided_clock = GST_CLOCK (gst_oss_clock_new ("ossclock", gst_osssrc_get_time, osssrc)); + gst_object_set_parent (GST_OBJECT (osssrc->provided_clock), GST_OBJECT (osssrc)); + osssrc->clock = NULL; } +static void +gst_osssrc_dispose (GObject *object) +{ + GstOssSrc *osssrc = (GstOssSrc *) object; + + gst_object_unparent (GST_OBJECT (osssrc->provided_clock)); + + G_OBJECT_CLASS (parent_class)->dispose (object); +} +static void +gst_osssrc_finalize (GObject *object) +{ + GstOssSrc *osssrc = (GstOssSrc *) object; + + g_free (osssrc->common.device); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + static GstPadLinkReturn gst_osssrc_srcconnect (GstPad *pad, GstCaps *caps) |