avutil/executor: Fix missing check before using mutex

This commit is contained in:
Zhao Zhili 2024-06-30 18:45:00 +08:00 committed by Nuo Mi
parent 1a86a7a48d
commit 54f9469fa1
1 changed files with 6 additions and 3 deletions

View File

@ -194,14 +194,17 @@ void av_executor_execute(AVExecutor *e, AVTask *t)
AVTaskCallbacks *cb = &e->cb;
AVTask **prev;
ff_mutex_lock(&e->lock);
if (e->thread_count)
ff_mutex_lock(&e->lock);
if (t) {
for (prev = &e->tasks; *prev && cb->priority_higher(*prev, t); prev = &(*prev)->next)
/* nothing */;
add_task(prev, t);
}
ff_cond_signal(&e->cond);
ff_mutex_unlock(&e->lock);
if (e->thread_count) {
ff_cond_signal(&e->cond);
ff_mutex_unlock(&e->lock);
}
if (!e->thread_count || !HAVE_THREADS) {
// We are running in a single-threaded environment, so we must handle all tasks ourselves