summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Matos <tiagomatos@gmail.com>2014-10-23 16:31:09 +0200
committerRui Matos <tiagomatos@gmail.com>2014-10-23 16:38:26 +0200
commitb63413e5b0a41110cf499052802943b5a18572a8 (patch)
tree40c9329ecb351adbcc26ecdd32ecf75e8d91de41
parentcd1e1d4bf181b1fca5df0cec0f31e48d9ccc3f56 (diff)
downloadmutter-b63413e5b0a41110cf499052802943b5a18572a8.tar.gz
Revert "monitor-manager: Remove needless code"
It turns out that this was wrong because MetaWindow->monitor points to the old monitor infos and they are needed to position windows in the new configuration which happens in a monitors-changed handler. This reverts commit e1704acda4688074a0a7fd31005a96a28a551c1c.
-rw-r--r--src/backends/meta-monitor-manager.c8
1 files changed, 6 insertions, 2 deletions
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