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