loop: release queue lock before calling invoke function

We don't actually need to hold the lock while calling the invoke
function, we only need the lock to protect the list of queues.
This commit is contained in:
Wim Taymans 2024-07-30 12:04:42 +02:00
parent c8c7295f56
commit 494600d46a

View file

@ -212,9 +212,12 @@ static void flush_all_queues(struct impl *impl)
* read index before we call the function because then the item
* might get overwritten. */
func = spa_steal_ptr(item->func);
if (func)
if (func) {
pthread_mutex_unlock(&impl->queue_lock);
item->res = func(&impl->loop, true, item->seq, item->data,
item->size, item->user_data);
pthread_mutex_lock(&impl->queue_lock);
}
/* if this function did a recursive invoke, it now flushed the
* ringbuffer and we can exit */