gloverlay: Fix various issues in allocation handling
authorEdward Hervey <edward@centricular.com>
Thu, 28 Nov 2019 16:31:57 +0000 (17:31 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 5 Mar 2020 06:01:50 +0000 (06:01 +0000)
* A copy-paste error was getting the information from the wrong
  query
* The 'allocation_meta' GstStructure was being leaked
* No check was done on whether the query existed (to try to set the
  resulting allocation meta on)

CID: 1439872
CID: 1439873
CID: 1439874
CID: 1439875
CID: 1439876
CID: 1439877

ext/gl/gstgloverlaycompositorelement.c

index 1380d89..944ed6a 100644 (file)
@@ -188,7 +188,7 @@ gst_gl_overlay_compositor_element_propose_allocation (GstBaseTransform * trans,
           decide_query, query))
     return FALSE;
 
-  if ((width == 0 || height == 0) && decide_query) {
+  if (decide_query) {
     GstCaps *decide_caps;
     gst_query_parse_allocation (decide_query, &decide_caps, NULL);
 
@@ -204,7 +204,7 @@ gst_gl_overlay_compositor_element_propose_allocation (GstBaseTransform * trans,
 
   if ((width == 0 || height == 0) && query) {
     GstCaps *caps;
-    gst_query_parse_allocation (decide_query, &caps, NULL);
+    gst_query_parse_allocation (query, &caps, NULL);
 
     if (caps) {
       GstVideoInfo vinfo;
@@ -224,9 +224,12 @@ gst_gl_overlay_compositor_element_propose_allocation (GstBaseTransform * trans,
 
   GST_DEBUG_OBJECT (trans, "Adding overlay composition meta with size %ux%u",
       width, height);
-  gst_query_add_allocation_meta (query,
-      GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE, allocation_meta);
-
+  if (allocation_meta) {
+    if (query)
+      gst_query_add_allocation_meta (query,
+          GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE, allocation_meta);
+    gst_structure_free (allocation_meta);
+  }
   return TRUE;
 }