HYL_OK3568_LINUX/buildroot/package/gstreamer1/gst1-plugins-bad/0029-kmssink-Avoid-double-closing-shared-gem-handle.patch
2025-05-10 21:49:39 +08:00

40 lines
1.2 KiB
Diff

From 6431eeddd0b6004d67f70900d4da449b1363c9a7 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 29/41] 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 ad56a17..359646a 100644
--- a/sys/kms/gstkmsallocator.c
+++ b/sys/kms/gstkmsallocator.c
@@ -538,6 +538,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);
@@ -564,6 +565,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