diff --git a/src/backends/meta-monitor-config-manager.c b/src/backends/meta-monitor-config-manager.c index 8938f4e2c..a2e83d890 100644 --- a/src/backends/meta-monitor-config-manager.c +++ b/src/backends/meta-monitor-config-manager.c @@ -1403,10 +1403,12 @@ meta_monitors_config_key_hash (gconstpointer data) { MetaMonitorSpec *monitor_spec = l->data; - hash ^= (g_str_hash (monitor_spec->connector) ^ - g_str_hash (monitor_spec->vendor) ^ + hash ^= (g_str_hash (monitor_spec->vendor) ^ g_str_hash (monitor_spec->product) ^ g_str_hash (monitor_spec->serial)); + + if (!config_key->edid_sufficient) + hash ^= g_str_hash (monitor_spec->connector); } return hash; @@ -1420,6 +1422,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->edid_sufficient != config_key_b->edid_sufficient) + 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)