summaryrefslogtreecommitdiffstats
path: root/sys/oss/gstosssrc.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2003-05-10 11:35:59 +0000
committerBenjamin Otte <otte@gnome.org>2003-05-10 11:35:59 +0000
commitd1e45d83b96f9e207f53eda0ae9cffd4eb5e50f6 (patch)
treee7f8d9c7679ee7639ea36eb85eecd4b6748d357c /sys/oss/gstosssrc.c
parentd271f13fd1f3d683236c4f7c961f89880344e56a (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.c25
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)