query: copy structure in _add_allocation_meta()
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 10 Jul 2012 08:31:00 +0000 (10:31 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 10 Jul 2012 08:31:00 +0000 (10:31 +0200)
Make gst_query_add_allocation_meta() take a copy of the passed caps instead of
taking ownership. This makes it easier for the caller in most cases because it
doesn't have to make a copy and deal with NULL values.

gst/gstquery.c
gst/gstquery.h
libs/gst/base/gstbasetransform.c

index 9e518a0..e9b42a8 100644 (file)
@@ -1675,13 +1675,13 @@ allocation_meta_free (AllocationMeta * am)
  * gst_query_add_allocation_meta:
  * @query: a GST_QUERY_ALLOCATION type query #GstQuery
  * @api: the metadata API
- * @params: (transfer full) (allow-none): API specific parameters
+ * @params: (transfer none) (allow-none): API specific parameters
  *
  * Add @api with @params as one of the supported metadata API to @query.
  */
 void
 gst_query_add_allocation_meta (GstQuery * query, GType api,
-    GstStructure * params)
+    const GstStructure * params)
 {
   GArray *array;
   GstStructure *structure;
@@ -1697,7 +1697,7 @@ gst_query_add_allocation_meta (GstQuery * query, GType api,
       (GDestroyNotify) allocation_meta_free);
 
   am.api = api;
-  am.params = params;
+  am.params = (params ? gst_structure_copy (params) : NULL);
 
   g_array_append_val (array, am);
 }
index c8fc62a..500ab45 100644 (file)
@@ -428,7 +428,7 @@ void            gst_query_set_nth_allocation_param   (GstQuery *query, guint ind
                                                       const GstAllocationParams *params);
 
 /* metadata */
-void            gst_query_add_allocation_meta        (GstQuery *query, GType api, GstStructure *params);
+void            gst_query_add_allocation_meta        (GstQuery *query, GType api, const GstStructure *params);
 guint           gst_query_get_n_allocation_metas     (GstQuery *query);
 GType           gst_query_parse_nth_allocation_meta  (GstQuery *query, guint index,
                                                       const GstStructure **params);
index d17b055..b0bae07 100644 (file)
@@ -1373,7 +1373,7 @@ gst_base_transform_default_propose_allocation (GstBaseTransform * trans,
 
       api = gst_query_parse_nth_allocation_meta (decide_query, i, &params);
       GST_DEBUG_OBJECT (trans, "proposing metadata %s", g_type_name (api));
-      gst_query_add_allocation_meta (query, api, gst_structure_copy (params));
+      gst_query_add_allocation_meta (query, api, params);
     }
     ret = TRUE;
   }