diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c index a2e83d890..8a8abf5a1 100644 --- a/src/backends/meta-monitor-config-manager.c +++ b/src/backends/meta-monitor-config-manager.c @@ -943,7 +943,8 @@ find_logical_config_for_builtin_display_rotation (MetaMonitorConfigManager *conf monitor_config = logical_monitor_config->monitor_configs->data; if (meta_monitor_spec_equals (meta_monitor_get_spec (panel), - monitor_config->monitor_spec)) + monitor_config->monitor_spec, + config_manager->monitor_manager->edid_sufficient)) return logical_monitor_config; } } @@ -1432,7 +1433,8 @@ meta_monitors_config_key_equal (gconstpointer data_a, MetaMonitorSpec *monitor_spec_a = l_a->data; MetaMonitorSpec *monitor_spec_b = l_b->data; - if (!meta_monitor_spec_equals (monitor_spec_a, monitor_spec_b)) + if (!meta_monitor_spec_equals (monitor_spec_a, monitor_spec_b, + config_key_a->edid_sufficient)) return FALSE; } @@ -1497,7 +1499,8 @@ meta_monitors_config_new (MetaMonitorManager *monitor_manager, monitor_spec = meta_monitor_get_spec (monitor); if (meta_logical_monitor_configs_have_monitor (logical_monitor_configs, - monitor_spec)) + monitor_spec, + monitor_manager->edid_sufficient)) continue; disabled_monitor_specs = @@ -1700,7 +1703,8 @@ has_adjacent_neighbour (MetaMonitorsConfig *config, gboolean meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs, - MetaMonitorSpec *monitor_spec) + MetaMonitorSpec *monitor_spec, + gboolean edid_sufficient) { GList *l; @@ -1714,7 +1718,8 @@ meta_logical_monitor_configs_have_monitor (GList *logical_monitor_conf MetaMonitorConfig *monitor_config = k->data; if (meta_monitor_spec_equals (monitor_spec, - monitor_config->monitor_spec)) + monitor_config->monitor_spec, + edid_sufficient)) return TRUE; } } @@ -1727,7 +1732,8 @@ meta_monitors_config_is_monitor_enabled (MetaMonitorsConfig *config, MetaMonitorSpec *monitor_spec) { return meta_logical_monitor_configs_have_monitor (config->logical_monitor_configs, - monitor_spec); + monitor_spec, + config->key->edid_sufficient); } gboolean diff --git a/src/backends/meta-monitor-config-manager.h b/src/backends/meta-monitor-config-manager.h index 207cec473..ee743e5c1 100644 --- a/src/backends/meta-monitor-config-manager.h +++ b/src/backends/meta-monitor-config-manager.h @@ -178,7 +178,8 @@ MetaMonitorsConfigKey * meta_create_monitors_config_key_for_current_state (MetaM META_EXPORT_TEST gboolean meta_logical_monitor_configs_have_monitor (GList *logical_monitor_configs, - MetaMonitorSpec *monitor_spec); + MetaMonitorSpec *monitor_spec, + gboolean edid_sufficient); META_EXPORT_TEST gboolean meta_verify_monitor_mode_spec (MetaMonitorModeSpec *monitor_mode_spec, diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index b0e1c449c..19cdee592 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -2475,7 +2475,8 @@ meta_monitor_manager_get_monitor_from_spec (MetaMonitorManager *manager, MetaMonitor *monitor = l->data; if (meta_monitor_spec_equals (meta_monitor_get_spec (monitor), - monitor_spec)) + monitor_spec, + manager->edid_sufficient)) return monitor; } diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c index 5d163e1a8..ae405aa29 100644 --- a/src/backends/meta-monitor.c +++ b/src/backends/meta-monitor.c @@ -126,12 +126,13 @@ meta_monitor_spec_clone (MetaMonitorSpec *monitor_spec) gboolean meta_monitor_spec_equals (MetaMonitorSpec *monitor_spec, - MetaMonitorSpec *other_monitor_spec) + MetaMonitorSpec *other_monitor_spec, + gboolean edid_only) { - return (g_str_equal (monitor_spec->connector, other_monitor_spec->connector) && - g_str_equal (monitor_spec->vendor, other_monitor_spec->vendor) && + return (g_str_equal (monitor_spec->vendor, other_monitor_spec->vendor) && g_str_equal (monitor_spec->product, other_monitor_spec->product) && - g_str_equal (monitor_spec->serial, other_monitor_spec->serial)); + g_str_equal (monitor_spec->serial, other_monitor_spec->serial) && + (edid_only || g_str_equal (monitor_spec->connector, other_monitor_spec->connector))); } int diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h index 58d2950c9..60472dd97 100644 --- a/src/backends/meta-monitor.h +++ b/src/backends/meta-monitor.h @@ -272,7 +272,8 @@ MetaMonitorSpec * meta_monitor_spec_clone (MetaMonitorSpec *monitor_id); META_EXPORT_TEST gboolean meta_monitor_spec_equals (MetaMonitorSpec *monitor_id, - MetaMonitorSpec *other_monitor_id); + MetaMonitorSpec *other_monitor_id, + gboolean edid_only); META_EXPORT_TEST int meta_monitor_spec_compare (MetaMonitorSpec *monitor_spec_a,