You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 17, 2020. It is now read-only.
The problem is that dirty_check() might be in the middle of a redraw when the winch signal comes in, at which point sig_winch sets dirty = TRUE. Then, after dirty_check() is done with its (now out of date) redraw, it sets dirty back to FALSE. Hence the required redraw never occurs.
I've fixed this for now (patch attached) by moving dirty = FALSE in dirty_check to before the redraw stuff takes place, reasoning that a redundant redraw is less worse than a missed redraw (which leaves the screen in a mess on my machines).
I guess really there should be some locking on the dirty variable, but maybe that's a bit heavy weight...
The text was updated successfully, but these errors were encountered:
There's a concurrency error between sig_winch() and check_dirty() that results in the screen not being redrawn when it should be.
To be more precise, in src/fe-text/irssi.c we have
and in src/fe-text/term.c we have
The problem is that dirty_check() might be in the middle of a redraw when the winch signal comes in, at which point sig_winch sets dirty = TRUE. Then, after dirty_check() is done with its (now out of date) redraw, it sets dirty back to FALSE. Hence the required redraw never occurs.
I've fixed this for now (patch attached) by moving dirty = FALSE in dirty_check to before the redraw stuff takes place, reasoning that a redundant redraw is less worse than a missed redraw (which leaves the screen in a mess on my machines).
I guess really there should be some locking on the dirty variable, but maybe that's a bit heavy weight...
The text was updated successfully, but these errors were encountered: