From 076b3664a379c3123f207ed28af9617b2226b9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Fri, 16 Feb 2024 20:32:55 +0100 Subject: [PATCH] monitor-config-store: Store and load layout mode for each configuration Store and load the layout mode for each logical monitor configuration in monitors.xml by introducing a new element. The value of the element can be either "logical" or "physical". The layout mode is also made part of the monitor configuration key. Right now this isn't doing a lot: When no is found on the config (this is the case with all existing configs), we'll keep using the layout mode expected by the system, without updating the config file. When changing an existing, or introducing a new configuration, we'll now store the current layout mode with the config though, and load it again on the next start of mutter. This is still not problematic as long as mutters expected layout mode doesn't change (eg. by turning on/off "scale-monitor-framebuffers"). When the expected layout mode of mutter switches between restarts, the monitor config is now still loaded but remains unused, and mutter will create (and store) a new one with the other layout mode. Part-of: --- src/backends/meta-monitor-config-manager.c | 22 ++++--- src/backends/meta-monitor-config-manager.h | 1 + src/backends/meta-monitor-config-store.c | 57 ++++++++++++++++++- src/tests/monitor-configs/detached-groups.xml | 1 + src/tests/monitor-configs/first-rotated.xml | 1 + .../monitor-configs/fractional-scale.xml | 1 + .../full-hd-fractional-scale-1.25.xml | 1 + .../full-hd-fractional-scale-1.5.xml | 1 + .../high-precision-fractional-scale.xml | 1 + src/tests/monitor-configs/interlaced.xml | 1 + .../kms-cursor-hotplug-off.xml | 1 + .../monitor-configs/kms-cursor-hotplug-on.xml | 1 + .../monitor-configs/kms-cursor-scale.xml | 1 + src/tests/monitor-configs/lid-scale.xml | 1 + src/tests/monitor-configs/lid-switch.xml | 3 + src/tests/monitor-configs/max-bpc.xml | 1 + src/tests/monitor-configs/mirrored.xml | 1 + .../non-preferred-tiled-custom-resolution.xml | 1 + src/tests/monitor-configs/oneoff.xml | 1 + .../monitor-configs/pointer-constraint.xml | 2 + src/tests/monitor-configs/policy.xml | 1 + src/tests/monitor-configs/primary.xml | 1 + .../refresh-rate-mode-fixed.xml | 1 + .../refresh-rate-mode-variable.xml | 1 + src/tests/monitor-configs/rgb-range.xml | 1 + src/tests/monitor-configs/scale.xml | 1 + .../monitor-configs/second-rotated-tiled.xml | 1 + src/tests/monitor-configs/second-rotated.xml | 1 + src/tests/monitor-configs/single.xml | 1 + .../monitor-configs/switch-remember-scale.xml | 1 + src/tests/monitor-configs/system/monitors.xml | 1 + .../tiled-custom-resolution.xml | 1 + src/tests/monitor-configs/tiled.xml | 1 + src/tests/monitor-configs/underscanning.xml | 1 + .../monitor-configs/unknown-elements.xml | 1 + src/tests/monitor-configs/user/monitors.xml | 1 + src/tests/monitor-configs/vertical.xml | 1 + src/tests/monitor-configs/vkms-640x480.xml | 1 + src/tests/monitor-store-unit-tests.c | 20 ++++++- 39 files changed, 128 insertions(+), 10 deletions(-) diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c index 0ec60ab3c..1c5869b53 100644 --- a/src/backends/meta-monitor-config-manager.c +++ b/src/backends/meta-monitor-config-manager.c @@ -493,7 +493,8 @@ meta_create_monitors_config_key_for_current_state (MetaMonitorManager *monitor_m config_key = g_new0 (MetaMonitorsConfigKey, 1); *config_key = (MetaMonitorsConfigKey) { - .monitor_specs = monitor_specs + .monitor_specs = monitor_specs, + .layout_mode = meta_monitor_manager_get_default_layout_mode (monitor_manager), }; return config_key; @@ -1521,8 +1522,9 @@ meta_logical_monitor_config_free (MetaLogicalMonitorConfig *logical_monitor_conf } static MetaMonitorsConfigKey * -meta_monitors_config_key_new (GList *logical_monitor_configs, - GList *disabled_monitor_specs) +meta_monitors_config_key_new (GList *logical_monitor_configs, + GList *disabled_monitor_specs, + MetaLogicalMonitorLayoutMode layout_mode) { MetaMonitorsConfigKey *config_key; GList *monitor_specs; @@ -1557,7 +1559,8 @@ meta_monitors_config_key_new (GList *logical_monitor_configs, config_key = g_new0 (MetaMonitorsConfigKey, 1); *config_key = (MetaMonitorsConfigKey) { - .monitor_specs = monitor_specs + .monitor_specs = monitor_specs, + .layout_mode = layout_mode }; return config_key; @@ -1578,7 +1581,7 @@ meta_monitors_config_key_hash (gconstpointer data) GList *l; unsigned long hash; - hash = 0; + hash = config_key->layout_mode; for (l = config_key->monitor_specs; l; l = l->next) { MetaMonitorSpec *monitor_spec = l->data; @@ -1600,6 +1603,9 @@ meta_monitors_config_key_equal (gconstpointer data_a, const MetaMonitorsConfigKey *config_key_b = data_b; GList *l_a, *l_b; + if (config_key_a->layout_mode != config_key_b->layout_mode) + return FALSE; + for (l_a = config_key_a->monitor_specs, l_b = config_key_b->monitor_specs; l_a && l_b; l_a = l_a->next, l_b = l_b->next) @@ -1651,9 +1657,11 @@ meta_monitors_config_new_full (GList *logical_monitor_con config = g_object_new (META_TYPE_MONITORS_CONFIG, NULL); config->logical_monitor_configs = logical_monitor_configs; config->disabled_monitor_specs = disabled_monitor_specs; - config->key = meta_monitors_config_key_new (logical_monitor_configs, - disabled_monitor_specs); config->layout_mode = layout_mode; + config->key = meta_monitors_config_key_new (logical_monitor_configs, + disabled_monitor_specs, + layout_mode); + config->flags = flags; config->switch_config = META_MONITOR_SWITCH_CONFIG_UNKNOWN; diff --git a/src/backends/meta-monitor-config-manager.h b/src/backends/meta-monitor-config-manager.h index 6ee03e427..8b1ba79ee 100644 --- a/src/backends/meta-monitor-config-manager.h +++ b/src/backends/meta-monitor-config-manager.h @@ -49,6 +49,7 @@ typedef struct _MetaLogicalMonitorConfig typedef struct _MetaMonitorsConfigKey { GList *monitor_specs; + MetaLogicalMonitorLayoutMode layout_mode; } MetaMonitorsConfigKey; enum _MetaMonitorsConfigFlag diff --git a/src/backends/meta-monitor-config-store.c b/src/backends/meta-monitor-config-store.c index ef67297b4..c1a0d4f66 100644 --- a/src/backends/meta-monitor-config-store.c +++ b/src/backends/meta-monitor-config-store.c @@ -131,6 +131,7 @@ typedef enum STATE_UNKNOWN, STATE_MONITORS, STATE_CONFIGURATION, + STATE_LAYOUT_MODE, STATE_LOGICAL_MONITOR, STATE_LOGICAL_MONITOR_X, STATE_LOGICAL_MONITOR_Y, @@ -172,6 +173,8 @@ typedef struct ParserState monitor_spec_parent_state; + gboolean is_current_layout_mode_valid; + MetaLogicalMonitorLayoutMode current_layout_mode; GList *current_logical_monitor_configs; MetaMonitorSpec *current_monitor_spec; gboolean current_transform_flipped; @@ -279,6 +282,7 @@ handle_start_element (GMarkupParseContext *context, if (g_str_equal (element_name, "configuration")) { parser->state = STATE_CONFIGURATION; + parser->is_current_layout_mode_valid = FALSE; } else if (g_str_equal (element_name, "policy")) { @@ -319,6 +323,10 @@ handle_start_element (GMarkupParseContext *context, parser->state = STATE_LOGICAL_MONITOR; } + else if (g_str_equal (element_name, "layoutmode")) + { + parser->state = STATE_LAYOUT_MODE; + } else if (g_str_equal (element_name, "disabled")) { parser->state = STATE_DISABLED; @@ -332,6 +340,13 @@ handle_start_element (GMarkupParseContext *context, return; } + case STATE_LAYOUT_MODE: + { + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_UNKNOWN_ELEMENT, + "Unexpected element '%s'", element_name); + return; + } + case STATE_LOGICAL_MONITOR: { if (g_str_equal (element_name, "x")) @@ -884,6 +899,12 @@ handle_end_element (GMarkupParseContext *context, return; } + case STATE_LAYOUT_MODE: + { + parser->state = STATE_CONFIGURATION; + return; + } + case STATE_DISABLED: { g_assert (g_str_equal (element_name, "disabled")); @@ -897,12 +918,13 @@ handle_end_element (GMarkupParseContext *context, MetaMonitorConfigStore *store = parser->config_store; MetaMonitorsConfig *config; GList *l; - MetaLogicalMonitorLayoutMode layout_mode; + MetaLogicalMonitorLayoutMode layout_mode = parser->current_layout_mode; MetaMonitorsConfigFlag config_flags = META_MONITORS_CONFIG_FLAG_NONE; g_assert (g_str_equal (element_name, "configuration")); - layout_mode = meta_monitor_manager_get_default_layout_mode (store->monitor_manager); + if (!parser->is_current_layout_mode_valid) + layout_mode = meta_monitor_manager_get_default_layout_mode (store->monitor_manager); for (l = parser->current_logical_monitor_configs; l; l = l->next) { @@ -1174,6 +1196,27 @@ handle_text (GMarkupParseContext *context, return; } + case STATE_LAYOUT_MODE: + { + if (text_equals (text, text_len, "logical")) + { + parser->current_layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL; + parser->is_current_layout_mode_valid = TRUE; + } + else if (text_equals (text, text_len, "physical")) + { + parser->current_layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL; + parser->is_current_layout_mode_valid = TRUE; + } + else + { + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + "Invalid layout mode %.*s", (int)text_len, text); + } + + return; + } + case STATE_MONITOR_SPEC_CONNECTOR: { parser->current_monitor_spec->connector = g_strndup (text, text_len); @@ -1688,6 +1731,16 @@ generate_config_xml (MetaMonitorConfigStore *config_store) g_string_append (buffer, " \n"); + switch (config->layout_mode) + { + case META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL: + g_string_append (buffer, " logical\n"); + break; + case META_LOGICAL_MONITOR_LAYOUT_MODE_PHYSICAL: + g_string_append (buffer, " physical\n"); + break; + } + for (l = config->logical_monitor_configs; l; l = l->next) { MetaLogicalMonitorConfig *logical_monitor_config = l->data; diff --git a/src/tests/monitor-configs/detached-groups.xml b/src/tests/monitor-configs/detached-groups.xml index e8548a1f6..a65a9a4d5 100644 --- a/src/tests/monitor-configs/detached-groups.xml +++ b/src/tests/monitor-configs/detached-groups.xml @@ -11,6 +11,7 @@ +-----+-----+ +-----+-----+ --> + logical 0 0 diff --git a/src/tests/monitor-configs/first-rotated.xml b/src/tests/monitor-configs/first-rotated.xml index fb64e1d2d..a87e815a9 100644 --- a/src/tests/monitor-configs/first-rotated.xml +++ b/src/tests/monitor-configs/first-rotated.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/fractional-scale.xml b/src/tests/monitor-configs/fractional-scale.xml index 991a47d14..03b2f2ed0 100644 --- a/src/tests/monitor-configs/fractional-scale.xml +++ b/src/tests/monitor-configs/fractional-scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/full-hd-fractional-scale-1.25.xml b/src/tests/monitor-configs/full-hd-fractional-scale-1.25.xml index 11b37d18b..2c295133c 100644 --- a/src/tests/monitor-configs/full-hd-fractional-scale-1.25.xml +++ b/src/tests/monitor-configs/full-hd-fractional-scale-1.25.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/full-hd-fractional-scale-1.5.xml b/src/tests/monitor-configs/full-hd-fractional-scale-1.5.xml index 125d9f7e3..6353696b9 100644 --- a/src/tests/monitor-configs/full-hd-fractional-scale-1.5.xml +++ b/src/tests/monitor-configs/full-hd-fractional-scale-1.5.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/high-precision-fractional-scale.xml b/src/tests/monitor-configs/high-precision-fractional-scale.xml index 2a0d43912..0219112cf 100644 --- a/src/tests/monitor-configs/high-precision-fractional-scale.xml +++ b/src/tests/monitor-configs/high-precision-fractional-scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/interlaced.xml b/src/tests/monitor-configs/interlaced.xml index b02f1cf94..54df3760f 100644 --- a/src/tests/monitor-configs/interlaced.xml +++ b/src/tests/monitor-configs/interlaced.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/kms-cursor-hotplug-off.xml b/src/tests/monitor-configs/kms-cursor-hotplug-off.xml index 2eccd7887..3695ebc5a 100644 --- a/src/tests/monitor-configs/kms-cursor-hotplug-off.xml +++ b/src/tests/monitor-configs/kms-cursor-hotplug-off.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/kms-cursor-hotplug-on.xml b/src/tests/monitor-configs/kms-cursor-hotplug-on.xml index 67c0aacbd..1d7acf0f0 100644 --- a/src/tests/monitor-configs/kms-cursor-hotplug-on.xml +++ b/src/tests/monitor-configs/kms-cursor-hotplug-on.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/kms-cursor-scale.xml b/src/tests/monitor-configs/kms-cursor-scale.xml index ea1c9fda0..68af6b028 100644 --- a/src/tests/monitor-configs/kms-cursor-scale.xml +++ b/src/tests/monitor-configs/kms-cursor-scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/lid-scale.xml b/src/tests/monitor-configs/lid-scale.xml index d5bfecb11..ef238dc22 100644 --- a/src/tests/monitor-configs/lid-scale.xml +++ b/src/tests/monitor-configs/lid-scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/lid-switch.xml b/src/tests/monitor-configs/lid-switch.xml index 9e56ab6d8..c6ed0afe5 100644 --- a/src/tests/monitor-configs/lid-switch.xml +++ b/src/tests/monitor-configs/lid-switch.xml @@ -1,5 +1,6 @@ + logical 0 0 @@ -41,6 +42,7 @@ + logical 0 0 @@ -65,6 +67,7 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/max-bpc.xml b/src/tests/monitor-configs/max-bpc.xml index c98e6605c..78662cd5c 100644 --- a/src/tests/monitor-configs/max-bpc.xml +++ b/src/tests/monitor-configs/max-bpc.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/mirrored.xml b/src/tests/monitor-configs/mirrored.xml index 418a59c81..2c131a62a 100644 --- a/src/tests/monitor-configs/mirrored.xml +++ b/src/tests/monitor-configs/mirrored.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/non-preferred-tiled-custom-resolution.xml b/src/tests/monitor-configs/non-preferred-tiled-custom-resolution.xml index 5f46583eb..bbc7e8c47 100644 --- a/src/tests/monitor-configs/non-preferred-tiled-custom-resolution.xml +++ b/src/tests/monitor-configs/non-preferred-tiled-custom-resolution.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/oneoff.xml b/src/tests/monitor-configs/oneoff.xml index 63e641cf0..de8236972 100644 --- a/src/tests/monitor-configs/oneoff.xml +++ b/src/tests/monitor-configs/oneoff.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/pointer-constraint.xml b/src/tests/monitor-configs/pointer-constraint.xml index 2e9709f03..e80adeebe 100644 --- a/src/tests/monitor-configs/pointer-constraint.xml +++ b/src/tests/monitor-configs/pointer-constraint.xml @@ -1,5 +1,6 @@ + logical 0 0 @@ -21,6 +22,7 @@ + logical 0 100 diff --git a/src/tests/monitor-configs/policy.xml b/src/tests/monitor-configs/policy.xml index 760046513..ad0926593 100644 --- a/src/tests/monitor-configs/policy.xml +++ b/src/tests/monitor-configs/policy.xml @@ -5,6 +5,7 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/primary.xml b/src/tests/monitor-configs/primary.xml index f51d11cae..8b4a3202b 100644 --- a/src/tests/monitor-configs/primary.xml +++ b/src/tests/monitor-configs/primary.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/refresh-rate-mode-fixed.xml b/src/tests/monitor-configs/refresh-rate-mode-fixed.xml index e26a572d1..cc70fe060 100644 --- a/src/tests/monitor-configs/refresh-rate-mode-fixed.xml +++ b/src/tests/monitor-configs/refresh-rate-mode-fixed.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/refresh-rate-mode-variable.xml b/src/tests/monitor-configs/refresh-rate-mode-variable.xml index 1307c17cc..d3a811e35 100644 --- a/src/tests/monitor-configs/refresh-rate-mode-variable.xml +++ b/src/tests/monitor-configs/refresh-rate-mode-variable.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/rgb-range.xml b/src/tests/monitor-configs/rgb-range.xml index f3ab9731b..6a34b65f1 100644 --- a/src/tests/monitor-configs/rgb-range.xml +++ b/src/tests/monitor-configs/rgb-range.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/scale.xml b/src/tests/monitor-configs/scale.xml index c011900ef..33d8324b6 100644 --- a/src/tests/monitor-configs/scale.xml +++ b/src/tests/monitor-configs/scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/second-rotated-tiled.xml b/src/tests/monitor-configs/second-rotated-tiled.xml index 8e6afff6b..112f94c0a 100644 --- a/src/tests/monitor-configs/second-rotated-tiled.xml +++ b/src/tests/monitor-configs/second-rotated-tiled.xml @@ -1,5 +1,6 @@ + logical 0 256 diff --git a/src/tests/monitor-configs/second-rotated.xml b/src/tests/monitor-configs/second-rotated.xml index 40eea1472..85e89a8a8 100644 --- a/src/tests/monitor-configs/second-rotated.xml +++ b/src/tests/monitor-configs/second-rotated.xml @@ -1,5 +1,6 @@ + logical 0 256 diff --git a/src/tests/monitor-configs/single.xml b/src/tests/monitor-configs/single.xml index cc01b4a63..5c2848d34 100644 --- a/src/tests/monitor-configs/single.xml +++ b/src/tests/monitor-configs/single.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/switch-remember-scale.xml b/src/tests/monitor-configs/switch-remember-scale.xml index cdfc6c861..f0c338d36 100644 --- a/src/tests/monitor-configs/switch-remember-scale.xml +++ b/src/tests/monitor-configs/switch-remember-scale.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/system/monitors.xml b/src/tests/monitor-configs/system/monitors.xml index 4d2eafec1..406fde166 100644 --- a/src/tests/monitor-configs/system/monitors.xml +++ b/src/tests/monitor-configs/system/monitors.xml @@ -5,6 +5,7 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/tiled-custom-resolution.xml b/src/tests/monitor-configs/tiled-custom-resolution.xml index 85939dd1f..067d645ba 100644 --- a/src/tests/monitor-configs/tiled-custom-resolution.xml +++ b/src/tests/monitor-configs/tiled-custom-resolution.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/tiled.xml b/src/tests/monitor-configs/tiled.xml index 0ed149ffc..27fad8ded 100644 --- a/src/tests/monitor-configs/tiled.xml +++ b/src/tests/monitor-configs/tiled.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/underscanning.xml b/src/tests/monitor-configs/underscanning.xml index 3ab02476d..e80bc9715 100644 --- a/src/tests/monitor-configs/underscanning.xml +++ b/src/tests/monitor-configs/underscanning.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/unknown-elements.xml b/src/tests/monitor-configs/unknown-elements.xml index f81be95dd..6000dcc44 100644 --- a/src/tests/monitor-configs/unknown-elements.xml +++ b/src/tests/monitor-configs/unknown-elements.xml @@ -3,6 +3,7 @@ text + logical text diff --git a/src/tests/monitor-configs/user/monitors.xml b/src/tests/monitor-configs/user/monitors.xml index f125972e0..117c66512 100644 --- a/src/tests/monitor-configs/user/monitors.xml +++ b/src/tests/monitor-configs/user/monitors.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/vertical.xml b/src/tests/monitor-configs/vertical.xml index 588d20879..e2ea6d295 100644 --- a/src/tests/monitor-configs/vertical.xml +++ b/src/tests/monitor-configs/vertical.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-configs/vkms-640x480.xml b/src/tests/monitor-configs/vkms-640x480.xml index d31d3ce88..38f350b8c 100644 --- a/src/tests/monitor-configs/vkms-640x480.xml +++ b/src/tests/monitor-configs/vkms-640x480.xml @@ -1,5 +1,6 @@ + logical 0 0 diff --git a/src/tests/monitor-store-unit-tests.c b/src/tests/monitor-store-unit-tests.c index 97ac4627c..13435de0e 100644 --- a/src/tests/monitor-store-unit-tests.c +++ b/src/tests/monitor-store-unit-tests.c @@ -66,6 +66,7 @@ typedef struct _MonitorStoreTestCaseLogicalMonitor typedef struct _MonitorStoreTestConfiguration { + MetaLogicalMonitorLayoutMode layout_mode; MonitorStoreTestCaseLogicalMonitor logical_monitors[MAX_N_LOGICAL_MONITORS]; int n_logical_monitors; } MonitorStoreTestConfiguration; @@ -112,7 +113,8 @@ create_config_key_from_expect (MonitorStoreTestConfiguration *expect_config) config_key = g_new0 (MetaMonitorsConfigKey, 1); *config_key = (MetaMonitorsConfigKey) { - .monitor_specs = monitor_specs + .monitor_specs = monitor_specs, + .layout_mode = expect_config->layout_mode, }; return config_key; @@ -240,6 +242,7 @@ meta_test_monitor_store_single (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -285,6 +288,7 @@ meta_test_monitor_store_vertical (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -356,6 +360,7 @@ meta_test_monitor_store_primary (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -427,6 +432,7 @@ meta_test_monitor_store_underscanning (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -473,6 +479,7 @@ meta_test_monitor_store_refresh_rate_mode_fixed (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -519,6 +526,7 @@ meta_test_monitor_store_refresh_rate_mode_variable (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -565,6 +573,7 @@ meta_test_monitor_store_max_bpc (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -611,6 +620,7 @@ meta_test_monitor_store_rgb_range (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -656,6 +666,7 @@ meta_test_monitor_store_scale (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -701,6 +712,7 @@ meta_test_monitor_store_fractional_scale (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -746,6 +758,7 @@ meta_test_monitor_store_high_precision_fractional_scale (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -791,6 +804,7 @@ meta_test_monitor_store_mirrored (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -847,6 +861,7 @@ meta_test_monitor_store_first_rotated (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -920,6 +935,7 @@ meta_test_monitor_store_second_rotated (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -993,6 +1009,7 @@ meta_test_monitor_store_interlaced (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = { @@ -1039,6 +1056,7 @@ meta_test_monitor_store_unknown_elements (void) MonitorStoreTestExpect expect = { .configurations = { { + .layout_mode = META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL, .logical_monitors = { { .layout = {