From fca69db680ce59d09c81ea1215ad3438f78366b4 Mon Sep 17 00:00:00 2001 From: Maxim Devaev Date: Thu, 4 Apr 2024 23:21:34 +0300 Subject: [PATCH] us_workers_pool_wait() without side effect --- src/ustreamer/workers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ustreamer/workers.c b/src/ustreamer/workers.c index a86f081..4ba8e4f 100644 --- a/src/ustreamer/workers.c +++ b/src/ustreamer/workers.c @@ -115,7 +115,6 @@ us_worker_s *us_workers_pool_wait(us_workers_pool_s *pool) { if (pool->oldest_wr && !atomic_load(&pool->oldest_wr->has_job)) { ready_wr = pool->oldest_wr; ready_wr->job_timely = true; - pool->oldest_wr = pool->oldest_wr->next_wr; } else { for (uint index = 0; index < pool->n_workers; ++index) { us_worker_s *const wr = &pool->workers[index]; @@ -136,6 +135,9 @@ us_worker_s *us_workers_pool_wait(us_workers_pool_s *pool) { } void us_workers_pool_assign(us_workers_pool_s *pool, us_worker_s *ready_wr/*, void *job*/) { + if (pool->oldest_wr == ready_wr) { + pool->oldest_wr = pool->oldest_wr->next_wr; + } if (pool->oldest_wr == NULL) { pool->oldest_wr = ready_wr; pool->latest_wr = pool->oldest_wr;