aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'sway/desktop')
-rw-r--r--sway/desktop/output.c15
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);
}
}