[mutter/gnome-3-12] MetaMonitorConfig: don't keep a previous config with the wrong outputs
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-12] MetaMonitorConfig: don't keep a previous config with the wrong outputs
- Date: Tue, 6 May 2014 19:31:35 +0000 (UTC)
commit b4de2458ab19b0f74269d374f36e1c06f43c5e9c
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Tue May 6 19:51:13 2014 +0200
MetaMonitorConfig: don't keep a previous config with the wrong outputs
We can only apply a configuration if its outputs match the connected
ones, so discard the current configuration if the set of output changes
(for example for hotplug), otherwise we will crash trying to apply
the bogus previous configuration.
https://bugzilla.gnome.org/show_bug.cgi?id=725637
src/core/monitor-config.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
---
diff --git a/src/core/monitor-config.c b/src/core/monitor-config.c
index a7e4ed5..0cf0866 100644
--- a/src/core/monitor-config.c
+++ b/src/core/monitor-config.c
@@ -876,7 +876,8 @@ apply_configuration (MetaMonitorConfig *self,
/* Stored (persistent) configurations override the previous one always.
Also, we clear the previous configuration if the current one (which is
- about to become previous) is stored.
+ about to become previous) is stored, or if the current one has
+ different outputs.
*/
if (stored ||
(self->current && self->current_is_stored))
@@ -887,7 +888,19 @@ apply_configuration (MetaMonitorConfig *self,
}
else
{
- self->previous = self->current;
+ /* Despite the name, config_equal() only checks the set of outputs,
+ not their modes
+ */
+ if (self->current && config_equal (self->current, config))
+ {
+ self->previous = self->current;
+ }
+ else
+ {
+ if (self->current)
+ config_free (self->current);
+ self->previous = NULL;
+ }
}
self->current = config;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]