diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 856da7f88..59c715438 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -149,8 +149,6 @@ make_logical_config (MetaMonitorManager *manager) manager->primary_monitor_index = info->number; } - g_free (manager->monitor_infos); - manager->n_monitor_infos = monitor_infos->len; manager->monitor_infos = (void*)g_array_free (monitor_infos, FALSE); } @@ -1167,12 +1165,18 @@ meta_monitor_manager_read_current_config (MetaMonitorManager *manager) void meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager) { + MetaMonitorInfo *old_monitor_infos; + + old_monitor_infos = manager->monitor_infos; + if (manager->in_init) return; make_logical_config (manager); g_signal_emit_by_name (manager, "monitors-changed"); + + g_free (old_monitor_infos); } void