From f602b645bbb212dfcabf34410af09b9cf6597d82 Mon Sep 17 00:00:00 2001
|
From: Jeffy Chen <jeffy.chen@rock-chips.com>
|
Date: Tue, 18 Jan 2022 12:20:10 +0800
|
Subject: [PATCH 28/33] kmssink: Avoid double-closing shared gem handle
|
|
The gem handle could be shared between multiple planes.
|
|
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
|
---
|
sys/kms/gstkmsallocator.c | 6 ++++++
|
1 file changed, 6 insertions(+)
|
|
diff --git a/sys/kms/gstkmsallocator.c b/sys/kms/gstkmsallocator.c
|
index 6fe6a07..5d81643 100644
|
--- a/sys/kms/gstkmsallocator.c
|
+++ b/sys/kms/gstkmsallocator.c
|
@@ -566,6 +566,7 @@ gst_kms_allocator_dmabuf_import (GstAllocator * allocator, gint * prime_fds,
|
GstKMSMemory *kmsmem;
|
GstMemory *mem;
|
gint i, ret;
|
+ guint32 handle = 0;
|
|
g_return_val_if_fail (n_planes <= GST_VIDEO_MAX_PLANES, FALSE);
|
|
@@ -592,6 +593,11 @@ gst_kms_allocator_dmabuf_import (GstAllocator * allocator, gint * prime_fds,
|
struct drm_gem_close arg = { kmsmem->gem_handle[i], };
|
gint err;
|
|
+ if (handle == arg.handle)
|
+ break;
|
+
|
+ handle = arg.handle;
|
+
|
err = drmIoctl (alloc->priv->fd, DRM_IOCTL_GEM_CLOSE, &arg);
|
if (err)
|
GST_WARNING_OBJECT (allocator,
|
--
|
2.20.1
|