mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-02 07:15:31 -04:00
wayland: add wayl_surface_scale(), and wayl_win_scale()
These functions scale a surface+buffer. For now, only using the legacy scaling method (wl_surface_set_buffer_scale()).
This commit is contained in:
parent
4bd62b1005
commit
0a5073f570
3 changed files with 52 additions and 46 deletions
44
wayland.c
44
wayland.c
|
|
@ -1850,6 +1850,40 @@ wayl_roundtrip(struct wayland *wayl)
|
|||
wayl_flush(wayl);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
wayl_fractional_scaling(const struct wayland *wayl)
|
||||
{
|
||||
#if defined(HAVE_FRACTIONAL_SCALE)
|
||||
return wayl->fractional_scale_manager != NULL;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
wayl_surface_scale(const struct wayland *wayl, struct wl_surface *surf,
|
||||
float scale)
|
||||
{
|
||||
LOG_WARN("scaling by a factor of %.2f (legacy)", scale);
|
||||
|
||||
if (wayl_fractional_scaling(wayl)) {
|
||||
BUG("not yet implemented");
|
||||
} else {
|
||||
wl_surface_set_buffer_scale(surf, (int)scale);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
wayl_win_scale(struct wl_window *win)
|
||||
{
|
||||
const struct terminal *term = win->term;
|
||||
const struct wayland *wayl = term->wl;
|
||||
const float scale = term->scale;
|
||||
|
||||
wayl_surface_scale(wayl, win->surface, scale);
|
||||
}
|
||||
|
||||
void
|
||||
wayl_win_alpha_changed(struct wl_window *win)
|
||||
{
|
||||
|
|
@ -2048,13 +2082,3 @@ wayl_get_activation_token(
|
|||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
wayl_fractional_scaling(const struct wayland *wayl)
|
||||
{
|
||||
#if defined(HAVE_FRACTIONAL_SCALE)
|
||||
return wayl->fractional_scale_manager != NULL;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue