diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-02-10 14:58:13 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-02-10 15:02:23 +0100 |
commit | 151d7faca3a643a48e738ae9e2f4be0eab61c47d (patch) | |
tree | 9c996c9bd63f563c7c0f91937a59c0b13603183d /gst/gstevent.c | |
parent | 86c15749a48f4262a838bab2d977d2d3225cfd93 (diff) | |
download | gstreamer-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.c | 43 |
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), ©->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); } |