diff options
Diffstat (limited to 'sway')
-rw-r--r-- | sway/desktop/output.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 2010e76e..63420d0c 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -37,7 +37,7 @@ static void rotate_child_position(double *sx, double *sy, double sw, double sh, static void render_surface(struct wlr_surface *surface, struct wlr_output *wlr_output, struct timespec *when, - double ox, double oy, float rotation) { + double lx, double ly, float rotation) { if (!wlr_surface_has_buffer(surface)) { return; } @@ -46,16 +46,17 @@ static void render_surface(struct wlr_surface *surface, int height = surface->current->height; int render_width = width * wlr_output->scale; int render_height = height * wlr_output->scale; - ox *= wlr_output->scale; - oy *= wlr_output->scale; + int owidth, oheight; + wlr_output_effective_resolution(wlr_output, &owidth, &oheight); + // FIXME: view coords are inconsistently assumed to be in output or layout coords struct wlr_box layout_box = { - .x = ox + wlr_output->lx, .y = oy + wlr_output->ly, + .x = lx + wlr_output->lx, .y = ly + wlr_output->ly, .width = render_width, .height = render_height, }; if (wlr_output_layout_intersects(layout, wlr_output, &layout_box)) { struct wlr_box render_box = { - .x = ox, .y = oy, + .x = lx, .y = ly, .width = render_width, .height = render_height }; float matrix[16]; @@ -77,8 +78,8 @@ static void render_surface(struct wlr_surface *surface, rotate_child_position(&sx, &sy, sw, sh, width, height, rotation); render_surface(subsurface->surface, wlr_output, when, - ox + sx, - oy + sy, + lx + sx, + ly + sy, rotation); } } |