[mutter] monitor: Fix tile coordinate calculation
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] monitor: Fix tile coordinate calculation
- Date: Wed, 15 Apr 2020 15:41:47 +0000 (UTC)
commit 21b8ae10b8d0ee0ba724941b10bc3f74a1fd1c5a
Author: Jonas Ådahl <jadahl gmail com>
Date: Tue Apr 14 21:11:28 2020 +0200
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,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]