From 1e6566e6cd885086fce4a0fe61395f316dd9284f Mon Sep 17 00:00:00 2001 From: emersion Date: Thu, 28 Dec 2017 15:09:57 +0100 Subject: [PATCH] Fixes for multiple outputs * Fixes output positions in screenshots * Fixes Wayland backend pointer events when output layout doesn't start at (0, 0) --- backend/wayland/wl_seat.c | 4 ++-- examples/screenshot.c | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/backend/wayland/wl_seat.c b/backend/wayland/wl_seat.c index ddee268d..90f7d44c 100644 --- a/backend/wayland/wl_seat.c +++ b/backend/wayland/wl_seat.c @@ -74,8 +74,8 @@ static void pointer_handle_motion(void *data, struct wl_pointer *wl_pointer, wlr_event.time_msec = time; wlr_event.width_mm = layout_box.width; wlr_event.height_mm = layout_box.height; - wlr_event.x_mm = transformed.x + wlr_output->lx + layout_box.x; - wlr_event.y_mm = transformed.y + wlr_output->ly + layout_box.y; + wlr_event.x_mm = transformed.x + wlr_output->lx - layout_box.x; + wlr_event.y_mm = transformed.y + wlr_output->ly - layout_box.y; wl_signal_emit(&dev->pointer->events.motion_absolute, &wlr_event); } diff --git a/examples/screenshot.c b/examples/screenshot.c index a887d1d7..932f5e37 100644 --- a/examples/screenshot.c +++ b/examples/screenshot.c @@ -220,16 +220,10 @@ static void write_image(const char *filename, int width, int height) { } static int set_buffer_size(int *width, int *height) { - struct screenshooter_output *output; min_x = min_y = INT_MAX; max_x = max_y = INT_MIN; - int position = 0; - - wl_list_for_each_reverse(output, &output_list, link) { - output->offset_x = position; - position += output->width; - } + struct screenshooter_output *output; wl_list_for_each(output, &output_list, link) { min_x = MIN(min_x, output->offset_x); min_y = MIN(min_y, output->offset_y);