diff options
author | Olivier Crete <olivier.crete@collabora.co.uk> | 2008-04-03 23:17:00 +0000 |
---|---|---|
committer | Olivier Crete <olivier.crete@collabora.co.uk> | 2008-04-03 23:17:00 +0000 |
commit | 47a2f406097413f1213ee7f335025eb806ad1180 (patch) | |
tree | 0c10081fc9a37f36965314f5fe6215d5f6082b54 /gst | |
parent | 91b090d003bb69b6d035cbd8c6d26a90f30c4d5a (diff) | |
download | libnice-47a2f406097413f1213ee7f335025eb806ad1180.tar.gz |
Error if the elements try to go to ready without an agent set
darcs-hash:20080403231722-3e2dc-bded4a5e1db4984708083e3d94ce58471de156d1.gz
Diffstat (limited to 'gst')
-rw-r--r-- | gst/gstnicesink.c | 33 | ||||
-rw-r--r-- | gst/gstnicesrc.c | 36 |
2 files changed, 69 insertions, 0 deletions
diff --git a/gst/gstnicesink.c b/gst/gstnicesink.c index 04f7fa1..53a4752 100644 --- a/gst/gstnicesink.c +++ b/gst/gstnicesink.c @@ -58,6 +58,10 @@ gst_nice_sink_get_property ( guint prop_id, GValue *value, GParamSpec *pspec); +static GstStateChangeReturn +gst_nice_sink_change_state ( + GstElement * element, + GstStateChange transition); static const GstElementDetails gst_nice_sink_details = GST_ELEMENT_DETAILS ( @@ -96,6 +100,7 @@ static void gst_nice_sink_class_init (GstNiceSinkClass *klass) { GstBaseSinkClass *gstbasesink_class; + GstElementClass *gstelement_class; GObjectClass *gobject_class; gstbasesink_class = (GstBaseSinkClass *) klass; @@ -105,6 +110,9 @@ gst_nice_sink_class_init (GstNiceSinkClass *klass) gobject_class->set_property = gst_nice_sink_set_property; gobject_class->get_property = gst_nice_sink_get_property; + gstelement_class = (GstElementClass *) klass; + gstelement_class->change_state = gst_nice_sink_change_state; + g_object_class_install_property (gobject_class, PROP_AGENT, g_param_spec_pointer ( "agent", @@ -212,3 +220,28 @@ gst_nice_sink_get_property ( } } +static GstStateChangeReturn +gst_nice_sink_change_state (GstElement * element, GstStateChange transition) +{ + GstNiceSink *sink; + GstStateChangeReturn ret; + + sink = GST_NICE_SINK (element); + + switch (transition) { + case GST_STATE_CHANGE_NULL_TO_READY: + if (sink->agent == NULL) + { + GST_ERROR_OBJECT (element, + "Trying to start Nice sink without an agent set"); + return GST_STATE_CHANGE_FAILURE; + } + break; + default: + break; + } + + ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); + + return ret; +} diff --git a/gst/gstnicesrc.c b/gst/gstnicesrc.c index 3dab030..7075c36 100644 --- a/gst/gstnicesrc.c +++ b/gst/gstnicesrc.c @@ -66,6 +66,11 @@ gst_nice_src_get_property ( GValue *value, GParamSpec *pspec); +static GstStateChangeReturn +gst_nice_src_change_state ( + GstElement * element, + GstStateChange transition); + static const GstElementDetails gst_nice_src_details = GST_ELEMENT_DETAILS ( "ICE source", @@ -103,6 +108,7 @@ static void gst_nice_src_class_init (GstNiceSrcClass *klass) { GstBaseSrcClass *gstbasesrc_class; + GstElementClass *gstelement_class; GObjectClass *gobject_class; gstbasesrc_class = (GstBaseSrcClass *) klass; @@ -112,6 +118,9 @@ gst_nice_src_class_init (GstNiceSrcClass *klass) gobject_class->set_property = gst_nice_src_set_property; gobject_class->get_property = gst_nice_src_get_property; + 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 ( "agent", @@ -231,3 +240,30 @@ gst_nice_src_get_property ( } } +static GstStateChangeReturn +gst_nice_src_change_state (GstElement * element, GstStateChange transition) +{ + GstNiceSrc *src; + GstStateChangeReturn ret; + + src = GST_NICE_SRC (element); + + switch (transition) { + case GST_STATE_CHANGE_NULL_TO_READY: + if (src->agent == NULL) + { + GST_ERROR_OBJECT (element, + "Trying to start Nice source without an agent set"); + return GST_STATE_CHANGE_FAILURE; + } + break; + default: + break; + } + + ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); + + return ret; +} + + |