1From f52c65f0eea9d6a6f8ecfc31778807f60a1ef950 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 29/41] 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 ad56a17..359646a 100644 15--- a/sys/kms/gstkmsallocator.c 16+++ b/sys/kms/gstkmsallocator.c 17@@ -538,6 +538,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@@ -564,6 +565,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