mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-11 05:33:55 -04:00
render: keep lock while pushing dirty rows to worker queue
Instead of locking the queue for each dirty row we append, and signaling a condition variable, just keep the lock while going through the visible rows. Release the lock once done. Since we take the lock *before* posting the 'start' semaphore, all workers will be waiting for the lock to be released. Then, one at a time they'll get the lock and pick a row to render. The queue will never get empty - when all rows have been rendered, each worker will pick a 'frame done' "job" from the queue, and break the rendering loop.
This commit is contained in:
parent
669d36afa8
commit
09bdf20aa0
3 changed files with 3 additions and 19 deletions
|
|
@ -369,7 +369,6 @@ struct terminal {
|
|||
size_t count;
|
||||
sem_t start;
|
||||
sem_t done;
|
||||
cnd_t cond;
|
||||
mtx_t lock;
|
||||
tll(int) queue;
|
||||
thrd_t *threads;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue