X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgststreamcollection.c;h=ec12e4a460affc2d54556b79879567070f1f7433;hb=a143d9cb0caee85bbe0c5e8b86e9f05918153c9d;hp=5ad89409444d298f8d4085805ff4bdda527f5e86;hpb=efbacf1931d2f407e7f1c9f8f7dce994504a1188;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gststreamcollection.c b/gst/gststreamcollection.c index 5ad8940..ec12e4a 100644 --- a/gst/gststreamcollection.c +++ b/gst/gststreamcollection.c @@ -41,14 +41,11 @@ GST_DEBUG_CATEGORY_STATIC (stream_collection_debug); #define GST_CAT_DEFAULT stream_collection_debug -#define GST_STREAM_COLLECTION_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_STREAM_COLLECTION, GstStreamCollectionPrivate)) - struct _GstStreamCollectionPrivate { /* Maybe switch this to a GArray if performance is * ever an issue? */ - GQueue *streams; + GQueue streams; }; /* stream signals and properties */ @@ -68,7 +65,6 @@ enum static guint gst_stream_collection_signals[LAST_SIGNAL] = { 0 }; static void gst_stream_collection_dispose (GObject * object); -static void gst_stream_collection_finalize (GObject * object); static void gst_stream_collection_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); @@ -88,7 +84,7 @@ proxy_stream_notify_cb (GstStream * stream, GParamSpec * pspec, #define gst_stream_collection_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstStreamCollection, gst_stream_collection, - GST_TYPE_OBJECT, _do_init); + GST_TYPE_OBJECT, G_ADD_PRIVATE (GstStreamCollection) _do_init); static void gst_stream_collection_class_init (GstStreamCollectionClass * klass) @@ -97,8 +93,6 @@ gst_stream_collection_class_init (GstStreamCollectionClass * klass) gobject_class = (GObjectClass *) klass; - g_type_class_add_private (klass, sizeof (GstStreamCollectionPrivate)); - gobject_class->set_property = gst_stream_collection_set_property; gobject_class->get_property = gst_stream_collection_get_property; @@ -130,14 +124,13 @@ gst_stream_collection_class_init (GstStreamCollectionClass * klass) 2, GST_TYPE_STREAM, G_TYPE_PARAM); gobject_class->dispose = gst_stream_collection_dispose; - gobject_class->finalize = gst_stream_collection_finalize; } static void gst_stream_collection_init (GstStreamCollection * collection) { - collection->priv = GST_STREAM_COLLECTION_GET_PRIVATE (collection); - collection->priv->streams = g_queue_new (); + collection->priv = gst_stream_collection_get_instance_private (collection); + g_queue_init (&collection->priv->streams); } static void @@ -158,41 +151,36 @@ gst_stream_collection_dispose (GObject * object) collection->upstream_id = NULL; } - if (collection->priv->streams) { - g_queue_foreach (collection->priv->streams, - (GFunc) release_gst_stream, collection); - g_queue_clear (collection->priv->streams); - } + g_queue_foreach (&collection->priv->streams, + (GFunc) release_gst_stream, collection); + g_queue_clear (&collection->priv->streams); G_OBJECT_CLASS (parent_class)->dispose (object); } -static void -gst_stream_collection_finalize (GObject * object) -{ - GstStreamCollection *collection = GST_STREAM_COLLECTION_CAST (object); - - if (collection->priv->streams) - g_queue_free (collection->priv->streams); - - G_OBJECT_CLASS (parent_class)->finalize (object); -} - /** * gst_stream_collection_new: * @upstream_id: (allow-none): The stream id of the parent stream * * Create a new #GstStreamCollection. * - * Returns: The new #GstStreamCollection. + * Returns: (transfer full): The new #GstStreamCollection. * * Since: 1.10 */ GstStreamCollection * gst_stream_collection_new (const gchar * upstream_id) { - return g_object_new (GST_TYPE_STREAM_COLLECTION, "upstream-id", upstream_id, + GstStreamCollection *collection; + + collection = + g_object_new (GST_TYPE_STREAM_COLLECTION, "upstream-id", upstream_id, NULL); + + /* Clear floating flag */ + g_object_ref_sink (collection); + + return collection; } static void @@ -295,11 +283,10 @@ gst_stream_collection_add_stream (GstStreamCollection * collection, { g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), FALSE); g_return_val_if_fail (GST_IS_STREAM (stream), FALSE); - g_return_val_if_fail (collection->priv->streams, FALSE); GST_DEBUG_OBJECT (collection, "Adding stream %" GST_PTR_FORMAT, stream); - g_queue_push_tail (collection->priv->streams, stream); + g_queue_push_tail (&collection->priv->streams, stream); g_signal_connect (stream, "notify", (GCallback) proxy_stream_notify_cb, collection); @@ -320,9 +307,8 @@ guint gst_stream_collection_get_size (GstStreamCollection * collection) { g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), 0); - g_return_val_if_fail (collection->priv->streams, 0); - return g_queue_get_length (collection->priv->streams); + return g_queue_get_length (&collection->priv->streams); } /** @@ -334,7 +320,7 @@ gst_stream_collection_get_size (GstStreamCollection * collection) * * The caller should not modify the returned #GstStream * - * Returns: (transfer none): A #GstStream + * Returns: (transfer none) (nullable): A #GstStream * * Since: 1.10 */ @@ -342,7 +328,6 @@ GstStream * gst_stream_collection_get_stream (GstStreamCollection * collection, guint index) { g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), NULL); - g_return_val_if_fail (collection->priv->streams, NULL); - return g_queue_peek_nth (collection->priv->streams, index); + return g_queue_peek_nth (&collection->priv->streams, index); }