diff options
Diffstat (limited to 'sway/desktop')
| -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);  	}  }  | 
