From 21b8ae10b8d0ee0ba724941b10bc3f74a1fd1c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 14 Apr 2020 21:11:28 +0200 Subject: [PATCH] monitor: Fix tile coordinate calculation Previously the tile coordinate was used to offset a CRTC scanout coordinate within a larger framebuffer. Since 3.36 we're always scanning out from (0, 0) as we always have one framebuffer per CRTC; we instead use the tile coordinate to calculate the coordinate the tile has in the stage view. Adapt calculation to fulfil this promise instead of the old one. This also corrects the tiled custom monitor test case. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1199 --- src/backends/meta-monitor.c | 8 ++++---- src/tests/monitor-unit-tests.c | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index f4d71f047..07857e00b 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -817,19 +817,19 @@ calculate_tile_coordinate (MetaMonitor *monitor, case META_MONITOR_TRANSFORM_270: case META_MONITOR_TRANSFORM_FLIPPED_270: if (other_output->tile_info.loc_v_tile == output->tile_info.loc_v_tile && - other_output->tile_info.loc_h_tile < output->tile_info.loc_h_tile) + other_output->tile_info.loc_h_tile > output->tile_info.loc_h_tile) y += other_output->tile_info.tile_w; if (other_output->tile_info.loc_h_tile == output->tile_info.loc_h_tile && - other_output->tile_info.loc_v_tile < output->tile_info.loc_v_tile) + other_output->tile_info.loc_v_tile > output->tile_info.loc_v_tile) x += other_output->tile_info.tile_h; break; case META_MONITOR_TRANSFORM_90: case META_MONITOR_TRANSFORM_FLIPPED_90: if (other_output->tile_info.loc_v_tile == output->tile_info.loc_v_tile && - other_output->tile_info.loc_h_tile > output->tile_info.loc_h_tile) + other_output->tile_info.loc_h_tile < output->tile_info.loc_h_tile) y += other_output->tile_info.tile_w; if (other_output->tile_info.loc_h_tile == output->tile_info.loc_h_tile && - other_output->tile_info.loc_v_tile > output->tile_info.loc_v_tile) + other_output->tile_info.loc_v_tile < output->tile_info.loc_v_tile) x += other_output->tile_info.tile_h; break; } diff --git a/src/tests/monitor-unit-tests.c b/src/tests/monitor-unit-tests.c index ad0cdda62..883de1bd0 100644 --- a/src/tests/monitor-unit-tests.c +++ b/src/tests/monitor-unit-tests.c @@ -4828,12 +4828,13 @@ meta_test_monitor_custom_second_rotated_tiled_config (void) .current_mode = 1, .transform = META_MONITOR_TRANSFORM_90, .x = 1024, - .y = 400, + .y = 0, }, { .current_mode = 1, .transform = META_MONITOR_TRANSFORM_90, .x = 1024, + .y = 400, } }, .n_crtcs = 3,