gstbuffer: Add parent meta when a copy shares memory with parent
authorXavier Claessens <xavier.claessens@collabora.com>
Wed, 15 Mar 2023 13:11:51 +0000 (09:11 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Mon, 20 Nov 2023 17:31:04 +0000 (12:31 -0500)
commitd809406dfce5b46b4259495783f7c84662ed69a6
tree270d67fe415d23f3f86ab7762b1cb903d8ead4d1
parent27350019e2650ba1031a54545a781465d146e2e1
gstbuffer: Add parent meta when a copy shares memory with parent

When copying a buffer, for example with gst_buffer_make_writable(), the
new buffer might reference the same GstMemory as the src buffer,
making those memories not writable. If the src buffer gets disposed
first it should return to its buffer pool, but since some of its
memories are not writable it gets discarded and new buffer/memory gets
allocated.

Solves this by making the new buffer keep a reference to the src buffer,
that ensures that by the time the src buffer gets disposed no other
buffer are referencing its memories and it can thus return safely to its
pool.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5696>
subprojects/gst-devtools/validate/gst/validate/flow/formatting.c
subprojects/gstreamer/gst/gstbuffer.c
subprojects/gstreamer/tests/check/gst/gstbufferpool.c