output: wlr_renderer_begin with physical size

The rendered region size is independent on the output transform and
scale. Until now, an output with scale > 1 would render only its
(1 / scale) part; so with a scale of 2, only the top-left quarter (ie.
the left 1/2 of the top 1/2) would be visible.

Similarly, a portrait output (constructed as landscape, rotated by 90
degrees) would have an empty area at its bottom.

This bug was found while testing the output-management PR (#62).
This commit is contained in:
tiosgz 2022-07-02 08:18:41 +00:00
parent cf01588a82
commit fced953bb5

View file

@ -194,11 +194,7 @@ output_frame_notify(struct wl_listener *listener, void *data)
struct kiwmi_server *server = wl_container_of(desktop, server, desktop); struct kiwmi_server *server = wl_container_of(desktop, server, desktop);
struct wlr_renderer *renderer = server->renderer; struct wlr_renderer *renderer = server->renderer;
int width; wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height);
int height;
wlr_output_effective_resolution(wlr_output, &width, &height);
wlr_renderer_begin(renderer, width, height);
wlr_renderer_clear(renderer, desktop->bg_color); wlr_renderer_clear(renderer, desktop->bg_color);
double output_lx = 0; double output_lx = 0;