mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-07 04:34:03 -05:00
wayland: break out scale/resize updating to a new function
And call this function once from output_done(), rather than from each output_*() callback.
This commit is contained in:
parent
e5253ca737
commit
ffcb09dd75
1 changed files with 29 additions and 19 deletions
48
wayland.c
48
wayland.c
|
|
@ -95,6 +95,31 @@ static const struct wl_seat_listener seat_listener = {
|
||||||
.name = seat_handle_name,
|
.name = seat_handle_name,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_term_for_output_change(struct terminal *term)
|
||||||
|
{
|
||||||
|
render_resize(term, term->width / term->scale, term->height / term->scale);
|
||||||
|
term_font_dpi_changed(term);
|
||||||
|
wayl_reload_cursor_theme(term->wl, term);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_terms_on_monitor(struct monitor *mon)
|
||||||
|
{
|
||||||
|
struct wayland *wayl = mon->wayl;
|
||||||
|
|
||||||
|
tll_foreach(wayl->terms, it) {
|
||||||
|
struct terminal *term = it->item;
|
||||||
|
|
||||||
|
tll_foreach(term->window->on_outputs, it2) {
|
||||||
|
if (it2->item == mon) {
|
||||||
|
update_term_for_output_change(term);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
output_update_ppi(struct monitor *mon)
|
output_update_ppi(struct monitor *mon)
|
||||||
{
|
{
|
||||||
|
|
@ -133,22 +158,15 @@ output_mode(void *data, struct wl_output *wl_output, uint32_t flags,
|
||||||
static void
|
static void
|
||||||
output_done(void *data, struct wl_output *wl_output)
|
output_done(void *data, struct wl_output *wl_output)
|
||||||
{
|
{
|
||||||
|
struct monitor *mon = data;
|
||||||
|
update_terms_on_monitor(mon);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
output_scale(void *data, struct wl_output *wl_output, int32_t factor)
|
output_scale(void *data, struct wl_output *wl_output, int32_t factor)
|
||||||
{
|
{
|
||||||
struct monitor *mon = data;
|
struct monitor *mon = data;
|
||||||
|
|
||||||
mon->scale = factor;
|
mon->scale = factor;
|
||||||
|
|
||||||
tll_foreach(mon->wayl->terms, it) {
|
|
||||||
struct terminal *term = it->item;
|
|
||||||
int scale = term->scale;
|
|
||||||
|
|
||||||
render_resize(term, term->width / scale, term->height / scale);
|
|
||||||
wayl_reload_cursor_theme(mon->wayl, term);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct wl_output_listener output_listener = {
|
static const struct wl_output_listener output_listener = {
|
||||||
|
|
@ -370,11 +388,7 @@ surface_enter(void *data, struct wl_surface *wl_surface,
|
||||||
if (it->item.output == wl_output) {
|
if (it->item.output == wl_output) {
|
||||||
LOG_DBG("mapped on %s", it->item.name);
|
LOG_DBG("mapped on %s", it->item.name);
|
||||||
tll_push_back(term->window->on_outputs, &it->item);
|
tll_push_back(term->window->on_outputs, &it->item);
|
||||||
|
update_term_for_output_change(term);
|
||||||
/* Resize, since scale-to-use may have changed */
|
|
||||||
int scale = term->scale;
|
|
||||||
render_resize(term, term->width / scale, term->height / scale);
|
|
||||||
wayl_reload_cursor_theme(term->wl, term);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -395,11 +409,7 @@ surface_leave(void *data, struct wl_surface *wl_surface,
|
||||||
|
|
||||||
LOG_DBG("unmapped from %s", it->item->name);
|
LOG_DBG("unmapped from %s", it->item->name);
|
||||||
tll_remove(term->window->on_outputs, it);
|
tll_remove(term->window->on_outputs, it);
|
||||||
|
update_term_for_output_change(term);
|
||||||
/* Resize, since scale-to-use may have changed */
|
|
||||||
int scale = term->scale;
|
|
||||||
render_resize(term, term->width / scale, term->height / scale);
|
|
||||||
wayl_reload_cursor_theme(term->wl, term);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue