diff --git a/libobs/obs-audio.c b/libobs/obs-audio.c index f016c0505e4800..459b3a75efad72 100644 --- a/libobs/obs-audio.c +++ b/libobs/obs-audio.c @@ -493,18 +493,15 @@ static inline void release_audio_sources(struct obs_core_audio *audio) static inline void execute_audio_tasks(void) { struct obs_core_audio *audio = &obs->audio; - bool tasks_remaining = true; - - while (tasks_remaining) { - pthread_mutex_lock(&audio->task_mutex); - if (audio->tasks.size) { - struct obs_task_info info; - deque_pop_front(&audio->tasks, &info, sizeof(info)); - info.task(info.param); - } - tasks_remaining = !!audio->tasks.size; + pthread_mutex_lock(&audio->task_mutex); + while (audio->tasks.size) { + struct obs_task_info info; + deque_pop_front(&audio->tasks, &info, sizeof(info)); pthread_mutex_unlock(&audio->task_mutex); + info.task(info.param); + pthread_mutex_lock(&audio->task_mutex); } + pthread_mutex_unlock(&audio->task_mutex); } /* In case monitoring and an 'Audio Output Capture' source have the same device, one silences all the monitored diff --git a/libobs/obs-video.c b/libobs/obs-video.c index eca6f830402a4c..77e4b8e0793095 100644 --- a/libobs/obs-video.c +++ b/libobs/obs-video.c @@ -957,18 +957,15 @@ extern THREAD_LOCAL bool is_graphics_thread; static void execute_graphics_tasks(void) { struct obs_core_video *video = &obs->video; - bool tasks_remaining = true; - - while (tasks_remaining) { - pthread_mutex_lock(&video->task_mutex); - if (video->tasks.size) { - struct obs_task_info info; - deque_pop_front(&video->tasks, &info, sizeof(info)); - info.task(info.param); - } - tasks_remaining = !!video->tasks.size; + pthread_mutex_lock(&video->task_mutex); + while (video->tasks.size) { + struct obs_task_info info; + deque_pop_front(&video->tasks, &info, sizeof(info)); pthread_mutex_unlock(&video->task_mutex); + info.task(info.param); + pthread_mutex_lock(&video->task_mutex); } + pthread_mutex_unlock(&video->task_mutex); } #ifdef _WIN32