diff options
author | Olivier Crete <olivier.crete@collabora.co.uk> | 2008-04-03 23:48:00 +0000 |
---|---|---|
committer | Olivier Crete <olivier.crete@collabora.co.uk> | 2008-04-03 23:48:00 +0000 |
commit | 8d3f8b25fba619794e8ffe6908227499fd28bb94 (patch) | |
tree | 1f1176f3b5995695879efce95157700b6d15a4df /gst/gstnicesrc.c | |
parent | 567e93500e1ec4c1ba1cc5f87d9861205b27afc4 (diff) | |
download | libnice-8d3f8b25fba619794e8ffe6908227499fd28bb94.tar.gz |
Make the agent properties into object properties
darcs-hash:20080403234841-3e2dc-3241e35b6475c8da7f9061fee1ffbfdf3e80e399.gz
Diffstat (limited to 'gst/gstnicesrc.c')
-rw-r--r-- | gst/gstnicesrc.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/gst/gstnicesrc.c b/gst/gstnicesrc.c index a97d93b..ada4deb 100644 --- a/gst/gstnicesrc.c +++ b/gst/gstnicesrc.c @@ -66,6 +66,10 @@ gst_nice_src_get_property ( GValue *value, GParamSpec *pspec); + +static void +gst_nice_src_dispose (GObject *object); + static GstStateChangeReturn gst_nice_src_change_state ( GstElement * element, @@ -117,15 +121,17 @@ gst_nice_src_class_init (GstNiceSrcClass *klass) gobject_class = (GObjectClass *) klass; gobject_class->set_property = gst_nice_src_set_property; gobject_class->get_property = gst_nice_src_get_property; + gobject_class->dispose = gst_nice_src_dispose; gstelement_class = (GstElementClass *) klass; gstelement_class->change_state = gst_nice_src_change_state; g_object_class_install_property (gobject_class, PROP_AGENT, - g_param_spec_pointer ( + g_param_spec_object ( "agent", "Agent", "The NiceAgent this source is bound to", + NICE_TYPE_AGENT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_STREAM, @@ -185,6 +191,18 @@ gst_nice_src_create ( } static void +gst_nice_src_dispose (GObject *object) +{ + GstNiceSrc *src = GST_NICE_SRC (object); + + if (src->agent) + g_object_unref (src->agent); + src->agent = NULL; + + GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object)); +} + +static void gst_nice_src_set_property ( GObject *object, guint prop_id, @@ -196,7 +214,11 @@ gst_nice_src_set_property ( switch (prop_id) { case PROP_AGENT: - src->agent = g_value_get_pointer (value); + if (src->agent) + GST_ERROR_OBJECT (object, + "Changing the agent on a nice src not allowed"); + else + src->agent = g_value_dup_object (value); break; case PROP_STREAM: @@ -225,7 +247,7 @@ gst_nice_src_get_property ( switch (prop_id) { case PROP_AGENT: - g_value_set_pointer (value, src->agent); + g_value_set_object (value, src->agent); break; case PROP_STREAM: |