mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-16 22:05:21 -05:00
term: group 'blink' state together in a struct
This commit is contained in:
parent
196f9d67c2
commit
428b31f071
3 changed files with 21 additions and 17 deletions
16
render.c
16
render.c
|
|
@ -118,7 +118,7 @@ render_cell(struct terminal *term, struct buffer *buf, const struct cell *cell,
|
|||
_bg = swap;
|
||||
}
|
||||
|
||||
if (cell->attrs.blink && term->blink_mode == BLINK_OFF)
|
||||
if (cell->attrs.blink && term->blink.state == BLINK_OFF)
|
||||
_fg = _bg;
|
||||
|
||||
struct rgb fg = color_hex_to_rgb(_fg);
|
||||
|
|
@ -132,7 +132,7 @@ render_cell(struct terminal *term, struct buffer *buf, const struct cell *cell,
|
|||
cairo_rectangle(buf->cairo, x, y, width, height);
|
||||
cairo_fill(buf->cairo);
|
||||
|
||||
if (cell->attrs.blink && !term->is_blinking) {
|
||||
if (cell->attrs.blink && !term->blink.active) {
|
||||
/* First cell we see that has blink set - arm blink timer */
|
||||
LOG_DBG("arming blink timer");
|
||||
struct itimerspec alarm = {
|
||||
|
|
@ -140,10 +140,10 @@ render_cell(struct terminal *term, struct buffer *buf, const struct cell *cell,
|
|||
.it_interval = {.tv_sec = 0, .tv_nsec = 500 * 1000000},
|
||||
};
|
||||
|
||||
if (timerfd_settime(term->blink_timer_fd, 0, &alarm, NULL) < 0)
|
||||
if (timerfd_settime(term->blink.fd, 0, &alarm, NULL) < 0)
|
||||
LOG_ERRNO("failed to arm blink timer");
|
||||
else
|
||||
term->is_blinking = true;
|
||||
term->blink.active = true;
|
||||
}
|
||||
|
||||
if (cell->c[0] == '\0' || cell->attrs.conceal)
|
||||
|
|
@ -389,7 +389,7 @@ grid_render(struct terminal *term)
|
|||
term->width, term->cell_height);
|
||||
}
|
||||
|
||||
if (term->is_blinking) {
|
||||
if (term->blink.active) {
|
||||
/* Check if there are still any visible blinking cells */
|
||||
bool none_is_blinking = true;
|
||||
for (int r = 0; r < term->rows; r++) {
|
||||
|
|
@ -406,11 +406,11 @@ grid_render(struct terminal *term)
|
|||
if (none_is_blinking) {
|
||||
LOG_DBG("disarming blink timer");
|
||||
|
||||
term->is_blinking = false;
|
||||
term->blink_mode = BLINK_ON;
|
||||
term->blink.active = false;
|
||||
term->blink.state = BLINK_ON;
|
||||
|
||||
if (timerfd_settime(
|
||||
term->blink_timer_fd, 0,
|
||||
term->blink.fd, 0,
|
||||
&(struct itimerspec){0}, NULL) < 0)
|
||||
{
|
||||
LOG_ERRNO("failed to disarm blink timer");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue