render: use single-pixel buffers for overlays, when possible

The unicode-mode, and flash overlays are single color buffers. This
means we can use the single-pixel buffer protocol.

It's undefined whether the compositor will release the buffer or not;
to make things easier, simply destroy the buffer as soon as we've
committed it.

Note that since compositors don't necessarily release single-pixel
buffers, we can't plug them into our own buffer interface. This means
we can't use buffer pointers to check if we can re-use the previous
buffer (i.e. we can skip comitting a new buffer), or if we have to
create a new one.

It's _almost_ enough to just check if the last overlay style is the
same as the current one. Except that that doesn't take window resizes
into account...
This commit is contained in:
Daniel Eklöf 2024-05-21 16:09:34 +02:00
parent 6944d5f901
commit 3c96d0b68e
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 92 additions and 11 deletions

View file

@ -2195,7 +2195,9 @@ term_font_size_reset(struct terminal *term)
bool
term_fractional_scaling(const struct terminal *term)
{
return term->wl->fractional_scale_manager != NULL && term->window->scale > 0.;
return term->wl->fractional_scale_manager != NULL &&
term->wl->viewporter != NULL &&
term->window->scale > 0.;
}
bool