Commit 8d3f8b25 authored by Olivier Crete's avatar Olivier Crete

Make the agent properties into object properties

darcs-hash:20080403234841-3e2dc-3241e35b6475c8da7f9061fee1ffbfdf3e80e399.gz
parent 567e9350
...@@ -58,6 +58,10 @@ gst_nice_sink_get_property ( ...@@ -58,6 +58,10 @@ gst_nice_sink_get_property (
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec); GParamSpec *pspec);
static void
gst_nice_sink_dispose (GObject *object);
static GstStateChangeReturn static GstStateChangeReturn
gst_nice_sink_change_state ( gst_nice_sink_change_state (
GstElement * element, GstElement * element,
...@@ -109,15 +113,17 @@ gst_nice_sink_class_init (GstNiceSinkClass *klass) ...@@ -109,15 +113,17 @@ gst_nice_sink_class_init (GstNiceSinkClass *klass)
gobject_class = (GObjectClass *) klass; gobject_class = (GObjectClass *) klass;
gobject_class->set_property = gst_nice_sink_set_property; gobject_class->set_property = gst_nice_sink_set_property;
gobject_class->get_property = gst_nice_sink_get_property; gobject_class->get_property = gst_nice_sink_get_property;
gobject_class->dispose = gst_nice_sink_dispose;
gstelement_class = (GstElementClass *) klass; gstelement_class = (GstElementClass *) klass;
gstelement_class->change_state = gst_nice_sink_change_state; gstelement_class->change_state = gst_nice_sink_change_state;
g_object_class_install_property (gobject_class, PROP_AGENT, g_object_class_install_property (gobject_class, PROP_AGENT,
g_param_spec_pointer ( g_param_spec_object (
"agent", "agent",
"Agent", "Agent",
"The NiceAgent this source is bound to", "The NiceAgent this source is bound to",
NICE_TYPE_AGENT,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (gobject_class, PROP_STREAM, g_object_class_install_property (gobject_class, PROP_STREAM,
...@@ -162,6 +168,19 @@ gst_nice_sink_render ( ...@@ -162,6 +168,19 @@ gst_nice_sink_render (
return GST_FLOW_OK; return GST_FLOW_OK;
} }
static void
gst_nice_sink_dispose (GObject *object)
{
GstNiceSink *sink = GST_NICE_SINK (object);
if (sink->agent)
g_object_unref (sink->agent);
sink->agent = NULL;
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
}
static void static void
gst_nice_sink_set_property ( gst_nice_sink_set_property (
GObject *object, GObject *object,
...@@ -174,7 +193,11 @@ gst_nice_sink_set_property ( ...@@ -174,7 +193,11 @@ gst_nice_sink_set_property (
switch (prop_id) switch (prop_id)
{ {
case PROP_AGENT: case PROP_AGENT:
sink->agent = g_value_get_pointer (value); if (sink->agent)
GST_ERROR_OBJECT (object,
"Changing the agent on a nice sink not allowed");
else
sink->agent = g_value_dup_object (value);
break; break;
case PROP_STREAM: case PROP_STREAM:
...@@ -203,7 +226,7 @@ gst_nice_sink_get_property ( ...@@ -203,7 +226,7 @@ gst_nice_sink_get_property (
switch (prop_id) switch (prop_id)
{ {
case PROP_AGENT: case PROP_AGENT:
g_value_set_pointer (value, sink->agent); g_value_set_object (value, sink->agent);
break; break;
case PROP_STREAM: case PROP_STREAM:
......
...@@ -66,6 +66,10 @@ gst_nice_src_get_property ( ...@@ -66,6 +66,10 @@ gst_nice_src_get_property (
GValue *value, GValue *value,
GParamSpec *pspec); GParamSpec *pspec);
static void
gst_nice_src_dispose (GObject *object);
static GstStateChangeReturn static GstStateChangeReturn
gst_nice_src_change_state ( gst_nice_src_change_state (
GstElement * element, GstElement * element,
...@@ -117,15 +121,17 @@ gst_nice_src_class_init (GstNiceSrcClass *klass) ...@@ -117,15 +121,17 @@ gst_nice_src_class_init (GstNiceSrcClass *klass)
gobject_class = (GObjectClass *) klass; gobject_class = (GObjectClass *) klass;
gobject_class->set_property = gst_nice_src_set_property; gobject_class->set_property = gst_nice_src_set_property;
gobject_class->get_property = gst_nice_src_get_property; gobject_class->get_property = gst_nice_src_get_property;
gobject_class->dispose = gst_nice_src_dispose;
gstelement_class = (GstElementClass *) klass; gstelement_class = (GstElementClass *) klass;
gstelement_class->change_state = gst_nice_src_change_state; gstelement_class->change_state = gst_nice_src_change_state;
g_object_class_install_property (gobject_class, PROP_AGENT, g_object_class_install_property (gobject_class, PROP_AGENT,
g_param_spec_pointer ( g_param_spec_object (
"agent", "agent",
"Agent", "Agent",
"The NiceAgent this source is bound to", "The NiceAgent this source is bound to",
NICE_TYPE_AGENT,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (gobject_class, PROP_STREAM, g_object_class_install_property (gobject_class, PROP_STREAM,
...@@ -184,6 +190,18 @@ gst_nice_src_create ( ...@@ -184,6 +190,18 @@ gst_nice_src_create (
return GST_FLOW_OK; return GST_FLOW_OK;
} }
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 static void
gst_nice_src_set_property ( gst_nice_src_set_property (
GObject *object, GObject *object,
...@@ -196,7 +214,11 @@ gst_nice_src_set_property ( ...@@ -196,7 +214,11 @@ gst_nice_src_set_property (
switch (prop_id) switch (prop_id)
{ {
case PROP_AGENT: 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; break;
case PROP_STREAM: case PROP_STREAM:
...@@ -225,7 +247,7 @@ gst_nice_src_get_property ( ...@@ -225,7 +247,7 @@ gst_nice_src_get_property (
switch (prop_id) switch (prop_id)
{ {
case PROP_AGENT: case PROP_AGENT:
g_value_set_pointer (value, src->agent); g_value_set_object (value, src->agent);
break; break;
case PROP_STREAM: case PROP_STREAM:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment