tests/monitor-unit: Add layout mode migration tests
Let's add a bunch of tests for the newly introduced monitor config migration code. We're verifying that: - monitor configs get migrated and monitors.xml is updated on startup - existing monitor configs in LOGICAL layout mode (ie. "scale-monitor-framebuffers" was enabled before updating mutter) get migrated - the migration of various more complex monitor layouts from PHYSICAL to LOGICAL layout mode works - for monitor layouts where conversion to LOGICAL fails, the PHYSICAL layout mode still is migrated, while for LOGICAL at least primary monitor and disabled monitors are preserved - simple monitor configurations (with no scaled monitors, or with only "irrelevant" scaled monitors at the end of the layout) do not go through the conversion code paths - monitor configs in PHYSICAL layout mode with integer scale factors which will result in non-integer logical monitor sizes get converted to the closest fractional scale factor Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3596>
This commit is contained in:
parent
05cc8a56e1
commit
4175a37e4c
5 changed files with 937 additions and 0 deletions
154
src/tests/migration/horizontal-strip-finished.xml
Normal file
154
src/tests/migration/horizontal-strip-finished.xml
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
<monitors version="2">
|
||||||
|
<configuration>
|
||||||
|
<layout_mode>logical</layout_mode>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>150</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>400</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1200</x>
|
||||||
|
<y>199</y>
|
||||||
|
<scale>2.985074520111084</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1468</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-4</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456d</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
<configuration>
|
||||||
|
<layout_mode>physical</layout_mode>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>800</x>
|
||||||
|
<y>550</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1600</x>
|
||||||
|
<y>550</y>
|
||||||
|
<scale>3</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>2400</x>
|
||||||
|
<y>900</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-4</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456d</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
</monitors>
|
77
src/tests/migration/horizontal-strip.xml
Normal file
77
src/tests/migration/horizontal-strip.xml
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
<monitors version="2">
|
||||||
|
<configuration>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>800</x>
|
||||||
|
<y>550</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1600</x>
|
||||||
|
<y>550</y>
|
||||||
|
<scale>3</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>2400</x>
|
||||||
|
<y>900</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-4</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456d</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
</monitors>
|
126
src/tests/migration/rotated-finished.xml
Normal file
126
src/tests/migration/rotated-finished.xml
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
<monitors version="2">
|
||||||
|
<configuration>
|
||||||
|
<layout_mode>logical</layout_mode>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<transform>
|
||||||
|
<rotation>right</rotation>
|
||||||
|
<flipped>no</flipped>
|
||||||
|
</transform>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1080</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>600</x>
|
||||||
|
<y>1920</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
<configuration>
|
||||||
|
<layout_mode>physical</layout_mode>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<transform>
|
||||||
|
<rotation>right</rotation>
|
||||||
|
<flipped>no</flipped>
|
||||||
|
</transform>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1080</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>600</x>
|
||||||
|
<y>1920</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
</monitors>
|
63
src/tests/migration/rotated.xml
Normal file
63
src/tests/migration/rotated.xml
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<monitors version="2">
|
||||||
|
<configuration>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<primary>yes</primary>
|
||||||
|
<transform>
|
||||||
|
<rotation>right</rotation>
|
||||||
|
<flipped>no</flipped>
|
||||||
|
</transform>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-1</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456a</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>1080</x>
|
||||||
|
<y>0</y>
|
||||||
|
<scale>2</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-2</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456b</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
<logicalmonitor>
|
||||||
|
<x>600</x>
|
||||||
|
<y>1920</y>
|
||||||
|
<scale>1</scale>
|
||||||
|
<monitor>
|
||||||
|
<monitorspec>
|
||||||
|
<connector>DP-3</connector>
|
||||||
|
<vendor>MetaProduct's Inc.</vendor>
|
||||||
|
<product>MetaMonitor</product>
|
||||||
|
<serial>0x123456c</serial>
|
||||||
|
</monitorspec>
|
||||||
|
<mode>
|
||||||
|
<width>1920</width>
|
||||||
|
<height>1080</height>
|
||||||
|
<rate>60.000</rate>
|
||||||
|
</mode>
|
||||||
|
</monitor>
|
||||||
|
</logicalmonitor>
|
||||||
|
</configuration>
|
||||||
|
</monitors>
|
|
@ -8417,6 +8417,518 @@ meta_test_monitor_custom_lid_switch_config (void)
|
||||||
check_monitor_test_clients_state ();
|
check_monitor_test_clients_state ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_test_monitor_migrated_rotated (void)
|
||||||
|
{
|
||||||
|
MonitorTestCase test_case = {
|
||||||
|
.setup = {
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 1920,
|
||||||
|
.height = 1080,
|
||||||
|
.refresh_rate = 60.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.outputs = {
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 0 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456a",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 1 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456b",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 2 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456c",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_outputs = 3,
|
||||||
|
.crtcs = {
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_crtcs = 3
|
||||||
|
},
|
||||||
|
|
||||||
|
.expect = {
|
||||||
|
.monitors = {
|
||||||
|
{
|
||||||
|
.outputs = { 0 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 1920,
|
||||||
|
.height = 1080,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 0,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.outputs = { 1 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 1920,
|
||||||
|
.height = 1080,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 1,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.outputs = { 2 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 1920,
|
||||||
|
.height = 1080,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 2,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_monitors = 3,
|
||||||
|
.logical_monitors = {
|
||||||
|
{
|
||||||
|
.monitors = { 0 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 0, .y = 0, .width = 1080, .height = 1920 },
|
||||||
|
.scale = 1,
|
||||||
|
.transform = MTK_MONITOR_TRANSFORM_270
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.monitors = { 1 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 1080, .y = 0, .width = 960, .height = 540 },
|
||||||
|
.scale = 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.monitors = { 2 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 600, .y = 1920, .width = 1920, .height = 1080 },
|
||||||
|
.scale = 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_logical_monitors = 3,
|
||||||
|
.primary_logical_monitor = 0,
|
||||||
|
.n_outputs = 3,
|
||||||
|
.crtcs = {
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.transform = MTK_MONITOR_TRANSFORM_270
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.x = 1080
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.x = 600,
|
||||||
|
.y = 1920
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_crtcs = 3,
|
||||||
|
.screen_width = 2520,
|
||||||
|
.screen_height = 3000,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
MetaMonitorTestSetup *test_setup;
|
||||||
|
MetaBackend *backend = meta_context_get_backend (test_context);
|
||||||
|
MetaMonitorManager *monitor_manager =
|
||||||
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorConfigManager *config_manager = monitor_manager->config_manager;
|
||||||
|
MetaMonitorConfigStore *config_store =
|
||||||
|
meta_monitor_config_manager_get_store (config_manager);
|
||||||
|
g_autofree char *migrated_path = NULL;
|
||||||
|
g_autofree char *old_config_path = NULL;
|
||||||
|
g_autoptr (GFile) old_config_file = NULL;
|
||||||
|
GError *error = NULL;
|
||||||
|
const char *expected_path;
|
||||||
|
g_autofree char *migrated_data = NULL;
|
||||||
|
g_autofree char *expected_data = NULL;
|
||||||
|
g_autoptr (GFile) migrated_file = NULL;
|
||||||
|
|
||||||
|
test_setup = meta_create_monitor_test_setup (test_backend,
|
||||||
|
&test_case.setup,
|
||||||
|
MONITOR_TEST_FLAG_NONE);
|
||||||
|
|
||||||
|
old_config_path = g_test_build_filename (G_TEST_DIST,
|
||||||
|
"tests", "migration",
|
||||||
|
"rotated.xml",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
migrated_path = g_build_filename (g_get_tmp_dir (),
|
||||||
|
"test-finished-migrated-monitors.xml",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
if (!meta_monitor_config_store_set_custom (config_store,
|
||||||
|
old_config_path,
|
||||||
|
migrated_path,
|
||||||
|
META_MONITORS_CONFIG_FLAG_NONE,
|
||||||
|
&error))
|
||||||
|
g_error ("Failed to set custom config store files: %s", error->message);
|
||||||
|
|
||||||
|
emulate_hotplug (test_setup);
|
||||||
|
|
||||||
|
META_TEST_LOG_CALL ("Checking monitor configuration",
|
||||||
|
meta_check_monitor_configuration (test_context,
|
||||||
|
&test_case.expect));
|
||||||
|
check_monitor_test_clients_state ();
|
||||||
|
|
||||||
|
expected_path = g_test_get_filename (G_TEST_DIST,
|
||||||
|
"tests", "migration",
|
||||||
|
"rotated-finished.xml",
|
||||||
|
NULL);
|
||||||
|
expected_data = meta_read_file (expected_path);
|
||||||
|
migrated_data = meta_read_file (migrated_path);
|
||||||
|
|
||||||
|
g_assert_nonnull (expected_data);
|
||||||
|
g_assert_nonnull (migrated_data);
|
||||||
|
|
||||||
|
g_assert (strcmp (expected_data, migrated_data) == 0);
|
||||||
|
|
||||||
|
migrated_file = g_file_new_for_path (migrated_path);
|
||||||
|
if (!g_file_delete (migrated_file, NULL, &error))
|
||||||
|
g_error ("Failed to remove test data output file: %s", error->message);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
meta_test_monitor_migrated_horizontal_strip (void)
|
||||||
|
{
|
||||||
|
MonitorTestCase test_case = {
|
||||||
|
.setup = {
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 800,
|
||||||
|
.height = 600,
|
||||||
|
.refresh_rate = 60.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.outputs = {
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 0 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456a",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 1 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456b",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 2 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456c",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.crtc = -1,
|
||||||
|
.modes = { 0 },
|
||||||
|
.n_modes = 1,
|
||||||
|
.preferred_mode = 0,
|
||||||
|
.possible_crtcs = { 3 },
|
||||||
|
.n_possible_crtcs = 1,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125,
|
||||||
|
.serial = "0x123456d",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_outputs = 4,
|
||||||
|
.crtcs = {
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_crtcs = 4
|
||||||
|
},
|
||||||
|
|
||||||
|
.expect = {
|
||||||
|
.monitors = {
|
||||||
|
{
|
||||||
|
.outputs = { 0 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 800,
|
||||||
|
.height = 600,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 0,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.outputs = { 1 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 800,
|
||||||
|
.height = 600,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 1,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.outputs = { 2 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 800,
|
||||||
|
.height = 600,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 2,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.outputs = { 3 },
|
||||||
|
.n_outputs = 1,
|
||||||
|
.modes = {
|
||||||
|
{
|
||||||
|
.width = 800,
|
||||||
|
.height = 600,
|
||||||
|
.refresh_rate = 60.0,
|
||||||
|
.crtc_modes = {
|
||||||
|
{
|
||||||
|
.output = 3,
|
||||||
|
.crtc_mode = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_modes = 1,
|
||||||
|
.current_mode = 0,
|
||||||
|
.width_mm = 222,
|
||||||
|
.height_mm = 125
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_monitors = 4,
|
||||||
|
.logical_monitors = {
|
||||||
|
{
|
||||||
|
.monitors = { 0 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 0, .y = 150, .width = 400, .height = 300 },
|
||||||
|
.scale = 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.monitors = { 1 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 400, .y = 0, .width = 800, .height = 600 },
|
||||||
|
.scale = 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.monitors = { 2 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 1200, .y = 199, .width = 268, .height = 201 },
|
||||||
|
.scale = 2.985074520111084
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.monitors = { 3 },
|
||||||
|
.n_monitors = 1,
|
||||||
|
.layout = { .x = 1468, .y = 0, .width = 800, .height = 600 },
|
||||||
|
.scale = 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_logical_monitors = 4,
|
||||||
|
.primary_logical_monitor = 2,
|
||||||
|
.n_outputs = 4,
|
||||||
|
.crtcs = {
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.y = 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.x = 400
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.x = 1200,
|
||||||
|
.y = 199
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.current_mode = 0,
|
||||||
|
.x = 1468
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.n_crtcs = 4,
|
||||||
|
.screen_width = 2268,
|
||||||
|
.screen_height = 600,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
MetaMonitorTestSetup *test_setup;
|
||||||
|
MetaBackend *backend = meta_context_get_backend (test_context);
|
||||||
|
MetaMonitorManager *monitor_manager =
|
||||||
|
meta_backend_get_monitor_manager (backend);
|
||||||
|
MetaMonitorConfigManager *config_manager = monitor_manager->config_manager;
|
||||||
|
MetaMonitorConfigStore *config_store =
|
||||||
|
meta_monitor_config_manager_get_store (config_manager);
|
||||||
|
g_autofree char *migrated_path = NULL;
|
||||||
|
g_autofree char *old_config_path = NULL;
|
||||||
|
g_autoptr (GFile) old_config_file = NULL;
|
||||||
|
GError *error = NULL;
|
||||||
|
const char *expected_path;
|
||||||
|
g_autofree char *migrated_data = NULL;
|
||||||
|
g_autofree char *expected_data = NULL;
|
||||||
|
g_autoptr (GFile) migrated_file = NULL;
|
||||||
|
|
||||||
|
test_setup = meta_create_monitor_test_setup (test_backend,
|
||||||
|
&test_case.setup,
|
||||||
|
MONITOR_TEST_FLAG_NONE);
|
||||||
|
|
||||||
|
old_config_path = g_test_build_filename (G_TEST_DIST,
|
||||||
|
"tests", "migration",
|
||||||
|
"horizontal-strip.xml",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
migrated_path = g_build_filename (g_get_tmp_dir (),
|
||||||
|
"test-finished-migrated-monitors.xml",
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
if (!meta_monitor_config_store_set_custom (config_store,
|
||||||
|
old_config_path,
|
||||||
|
migrated_path,
|
||||||
|
META_MONITORS_CONFIG_FLAG_NONE,
|
||||||
|
&error))
|
||||||
|
g_error ("Failed to set custom config store files: %s", error->message);
|
||||||
|
|
||||||
|
emulate_hotplug (test_setup);
|
||||||
|
|
||||||
|
META_TEST_LOG_CALL ("Checking monitor configuration",
|
||||||
|
meta_check_monitor_configuration (test_context,
|
||||||
|
&test_case.expect));
|
||||||
|
check_monitor_test_clients_state ();
|
||||||
|
|
||||||
|
expected_path = g_test_get_filename (G_TEST_DIST,
|
||||||
|
"tests", "migration",
|
||||||
|
"horizontal-strip-finished.xml",
|
||||||
|
NULL);
|
||||||
|
expected_data = meta_read_file (expected_path);
|
||||||
|
migrated_data = meta_read_file (migrated_path);
|
||||||
|
|
||||||
|
g_assert_nonnull (expected_data);
|
||||||
|
g_assert_nonnull (migrated_data);
|
||||||
|
|
||||||
|
g_assert (strcmp (expected_data, migrated_data) == 0);
|
||||||
|
|
||||||
|
migrated_file = g_file_new_for_path (migrated_path);
|
||||||
|
if (!g_file_delete (migrated_file, NULL, &error))
|
||||||
|
g_error ("Failed to remove test data output file: %s", error->message);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_test_monitor_custom_detached_groups (void)
|
meta_test_monitor_custom_detached_groups (void)
|
||||||
{
|
{
|
||||||
|
@ -9660,6 +10172,11 @@ init_monitor_tests (void)
|
||||||
add_monitor_test ("/backends/monitor/custom/detached-groups",
|
add_monitor_test ("/backends/monitor/custom/detached-groups",
|
||||||
meta_test_monitor_custom_detached_groups);
|
meta_test_monitor_custom_detached_groups);
|
||||||
|
|
||||||
|
add_monitor_test ("/backends/monitor/migrated/rotated",
|
||||||
|
meta_test_monitor_migrated_rotated);
|
||||||
|
add_monitor_test ("/backends/monitor/migrated/horizontal-strip",
|
||||||
|
meta_test_monitor_migrated_horizontal_strip);
|
||||||
|
|
||||||
add_monitor_test ("/backends/monitor/wm/tiling",
|
add_monitor_test ("/backends/monitor/wm/tiling",
|
||||||
meta_test_monitor_wm_tiling);
|
meta_test_monitor_wm_tiling);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue