diff options
| -rw-r--r-- | sway/tree/view.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index 086a8ff3..4f757acf 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -6,6 +6,7 @@ #include <wlr/types/wlr_buffer.h> #include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h> #include <wlr/types/wlr_foreign_toplevel_management_v1.h> +#include <wlr/types/wlr_fractional_scale_v1.h> #include <wlr/types/wlr_output_layout.h> #include <wlr/types/wlr_server_decoration.h> #include <wlr/types/wlr_subcompositor.h> @@ -741,6 +742,14 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface, ws = select_workspace(view); } + if (ws && ws->output) { + // Once the output is determined, we can notify the client early about + // scale to reduce startup jitter. + float scale = ws->output->wlr_output->scale; + wlr_fractional_scale_v1_notify_scale(wlr_surface, scale); + wlr_surface_set_preferred_buffer_scale(wlr_surface, ceil(scale)); + } + struct sway_seat *seat = input_manager_current_seat(); struct sway_node *node = seat_get_focus_inactive(seat, ws ? &ws->node : &root->node); |
