This otherwise breaks DMABuf reclaiming. This is not visible from
userspace, but inside the kernel, the DRM driver will hold a ref to the
DMABuf object. With a V4L2 driver allocating those DMABuf, it then
prevent changing the resolution and re-allocation new buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=782774
if (!gst_kms_allocator_add_fb (alloc, tmp, offsets, vinfo))
goto failed;
+ for (i = 0; i < n_planes; i++) {
+ struct drm_gem_close arg = { tmp->gem_handle[i], };
+ gint err;
+
+ err = drmIoctl (alloc->priv->fd, DRM_IOCTL_GEM_CLOSE, &arg);
+ if (err)
+ GST_WARNING_OBJECT (allocator,
+ "Failed to close GEM handle: %s %d", strerror (errno), errno);
+
+ tmp->gem_handle[i] = 0;
+ }
+
return tmp;
/* ERRORS */