1
0
mirror of https://codeberg.org/vyivel/dulcepan/ synced 2026-04-26 21:14:40 +03:00

Apply output scale correctly

This commit is contained in:
Kirill Primak
2024-06-24 13:48:05 +03:00
parent 218b498814
commit e1424a42bb
4 changed files with 24 additions and 14 deletions

View File

@@ -43,6 +43,8 @@ static void layer_surface_handle_configure(void *data, struct zwlr_layer_surface
output->effective_width = (int)width;
output->effective_height = (int)height;
output->scale = (double)output->transformed_width / output->effective_width;
wp_viewport_set_destination(
output->main_viewport, output->effective_width, output->effective_height);
wp_viewport_set_destination(
@@ -276,10 +278,11 @@ static void redraw(struct dp_output *output) {
if (output == selection->output) {
int border_size = config->border_size;
if (border_size != 0) {
cairo_set_line_width(buffer->cairo, border_size);
double off = border_size / 2.0;
double scaled_size = border_size * output->scale;
cairo_set_line_width(buffer->cairo, scaled_size);
double off = scaled_size / 2.0;
cairo_rectangle(buffer->cairo, selection->x - off, selection->y - off,
selection->width + border_size, selection->height + border_size);
selection->width + scaled_size, selection->height + scaled_size);
set_cairo_color(buffer->cairo, config->border_color);
cairo_stroke(buffer->cairo);
}
@@ -292,7 +295,7 @@ static void redraw(struct dp_output *output) {
wl_surface_attach(output->select_surface, buffer->wl_buffer, 0, 0);
wl_surface_damage(
output->select_surface, 0, 0, output->transformed_width, output->transformed_height);
output->select_surface, 0, 0, output->effective_width, output->effective_height);
output->redraw_callback = wl_surface_frame(output->select_surface);
wl_callback_add_listener(output->redraw_callback, &redraw_callback_listener, output);