BLI_task: fix queue in work_and_wait, and support resetting.
authorAlexander Gavrilov <angavrilov@gmail.com>
Mon, 3 Dec 2018 19:55:18 +0000 (22:55 +0300)
committerAlexander Gavrilov <angavrilov@gmail.com>
Tue, 4 Dec 2018 11:08:50 +0000 (14:08 +0300)
commit01581d4a1eb595f2bb49d4b87aebfa8bd67ceb38
tree851b669f25bf9f56a3e57eda9090fa26212e07ac
parentc86e828eee8b7e7e0cde4fa211991b6ebac1ff0f
BLI_task: fix queue in work_and_wait, and support resetting.

To make the pool more usable for running multiple stages of tasks,
fix local queue handling in BLI_task_pool_work_and_wait.

Specifically, after the wait loop the local queue should be empty,
or the wait part of the function contract isn't fulfilled. Instead,
check and run any tasks in queue before the wait loop.

Also, add a new function that resets the suspended state of the pool.
source/blender/blenlib/BLI_task.h
source/blender/blenlib/intern/task.c