From 1e44e715039bdd0dddf1753e492dd1496cc6baa2 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Wed, 6 Apr 2022 10:02:25 +0200 Subject: [PATCH] Be strict about reflinks --- hw/buffer_queue.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/buffer_queue.c b/hw/buffer_queue.c index 7e21b50..f3aacb2 100644 --- a/hw/buffer_queue.c +++ b/hw/buffer_queue.c @@ -30,10 +30,12 @@ bool buffer_consumed(buffer_t *buf, const char *who) } pthread_mutex_lock(&buffer_lock); - if (buf->mmap_reflinks > 0) { - buf->mmap_reflinks--; + if (buf->mmap_reflinks == 0) { + E_LOG_PERROR(buf, "Non symmetric reference counts"); } + buf->mmap_reflinks--; + if (!buf->enqueued && buf->mmap_reflinks == 0) { // update used bytes if (buf->buf_list->do_mplanes) { @@ -171,6 +173,10 @@ buffer_t *buffer_list_dequeue(buffer_list_t *buf_list) } buf->v4l2_buffer.flags = v4l2_buf.flags; + if (buf->mmap_reflinks > 0) { + E_LOG_PERROR(buf, "Buffer appears to be enqueued? (links=%d)", buf->mmap_reflinks); + } + buf->enqueued = false; buf->mmap_reflinks = 1; uint64_t enqueued_time_us = get_monotonic_time_us(NULL, NULL) - buf->enqueued_time_us;