HYL_OK3568_LINUX/yocto/meta-rockchip/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20/0028-kmssink-Avoid-double-closing-shared-gem-handle.patch

40 lines
1.2 KiB
Diff
Raw Normal View History

2025-05-10 21:49:39 +08:00
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