summaryrefslogtreecommitdiff
path: root/gst/gstevent.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2012-02-10 14:58:13 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2012-02-10 15:02:23 +0100
commit151d7faca3a643a48e738ae9e2f4be0eab61c47d (patch)
tree9c996c9bd63f563c7c0f91937a59c0b13603183d /gst/gstevent.c
parent86c15749a48f4262a838bab2d977d2d3225cfd93 (diff)
downloadgstreamer-151d7faca3a643a48e738ae9e2f4be0eab61c47d.tar.gz
clean up object init
Make an _init method where the parent mini-object and other fields are initialized. Check that the passed structure doesn't already have a parent. Use the _new_custom () constructors
Diffstat (limited to 'gst/gstevent.c')
-rw-r--r--gst/gstevent.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/gst/gstevent.c b/gst/gstevent.c
index 841b9c34ac..8d624a1b97 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -251,6 +251,8 @@ _gst_event_copy (GstEvent * event)
GST_EVENT_STRUCTURE (copy) = gst_structure_copy (s);
gst_structure_set_parent_refcount (GST_EVENT_STRUCTURE (copy),
&copy->event.mini_object.refcount);
+ } else {
+ GST_EVENT_STRUCTURE (copy) = NULL;
}
return GST_EVENT_CAST (copy);
}
@@ -268,20 +270,6 @@ gst_event_init (GstEventImpl * event, gsize size, GstEventType type)
GST_EVENT_SEQNUM (event) = gst_util_seqnum_next ();
}
-static GstEvent *
-gst_event_new (GstEventType type)
-{
- GstEventImpl *event;
-
- event = g_slice_new0 (GstEventImpl);
-
- GST_CAT_DEBUG (GST_CAT_EVENT, "creating new event %p %s %d", event,
- gst_event_type_get_name (type), type);
-
- gst_event_init (event, sizeof (GstEventImpl), type);
-
- return GST_EVENT_CAST (event);
-}
/**
* gst_event_new_custom:
@@ -305,23 +293,30 @@ gst_event_new (GstEventType type)
GstEvent *
gst_event_new_custom (GstEventType type, GstStructure * structure)
{
- GstEvent *event;
+ GstEventImpl *event;
+
+ event = g_slice_new0 (GstEventImpl);
+
+ GST_CAT_DEBUG (GST_CAT_EVENT, "creating new event %p %s %d", event,
+ gst_event_type_get_name (type), type);
- /* structure must not have a parent */
- event = gst_event_new (type);
if (structure) {
+ /* structure must not have a parent */
if (!gst_structure_set_parent_refcount (structure,
- &event->mini_object.refcount))
+ &event->event.mini_object.refcount))
goto had_parent;
- GST_EVENT_STRUCTURE (event) = structure;
}
- return event;
+ gst_event_init (event, sizeof (GstEventImpl), type);
+
+ GST_EVENT_STRUCTURE (event) = structure;
+
+ return GST_EVENT_CAST (event);
/* ERRORS */
had_parent:
{
- gst_event_unref (event);
+ g_slice_free1 (GST_MINI_OBJECT_SIZE (event), event);
g_warning ("structure is already owned by another object");
return NULL;
}
@@ -484,7 +479,7 @@ gst_event_set_seqnum (GstEvent * event, guint32 seqnum)
GstEvent *
gst_event_new_flush_start (void)
{
- return gst_event_new (GST_EVENT_FLUSH_START);
+ return gst_event_new_custom (GST_EVENT_FLUSH_START, NULL);
}
/**
@@ -562,7 +557,7 @@ gst_event_parse_flush_stop (GstEvent * event, gboolean * reset_time)
GstEvent *
gst_event_new_eos (void)
{
- return gst_event_new (GST_EVENT_EOS);
+ return gst_event_new_custom (GST_EVENT_EOS, NULL);
}
/**
@@ -1605,5 +1600,5 @@ gst_event_parse_sink_message (GstEvent * event, GstMessage ** msg)
GstEvent *
gst_event_new_stream_start (void)
{
- return gst_event_new (GST_EVENT_STREAM_START);
+ return gst_event_new_custom (GST_EVENT_STREAM_START, NULL);
}