d3d11memory: Fix potential crash in GstD3D11PoolAllocator

Allocator object can be the final refcount holder, when a GstD3D11Memory
is being released. Do unref allocator once there's no more
remaining operation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3715>
This commit is contained in:
Seungha Yang 2023-01-12 22:17:24 +09:00 committed by GStreamer Marge Bot
parent fdc3ee97ae
commit 434337c3e1

View file

@ -2048,12 +2048,13 @@ gst_d3d11_pool_allocator_release_memory (GstD3D11PoolAllocator * self,
GST_MINI_OBJECT_CAST (mem)->dispose = NULL;
mem->allocator = (GstAllocator *) gst_object_ref (_d3d11_memory_allocator);
gst_object_unref (self);
/* keep it around in our queue */
gst_atomic_queue_push (self->priv->queue, mem);
gst_poll_write_control (self->priv->poll);
dec_outstanding (self);
gst_object_unref (self);
}
static gboolean