summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Davis <smd.seandavis@gmail.com>2018-02-17 14:21:29 -0500
committerSean Davis <smd.seandavis@gmail.com>2018-02-17 14:21:29 -0500
commit1d8048049563daab9e44e11e493c834657a843f1 (patch)
tree715f0812aaf7df2a2c0243e76b93897049899662
parentf39bd469727ac3c0bd4ead75afcd1bc3d32aedf4 (diff)
downloadlightdm-gtk-greeter-git-1d8048049563daab9e44e11e493c834657a843f1.tar.gz
Prevent infinite signal emmission between two monitors (LP: #1410406, #1509780)
-rw-r--r--src/greeterbackground.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/greeterbackground.c b/src/greeterbackground.c
index 6985db2..942def6 100644
--- a/src/greeterbackground.c
+++ b/src/greeterbackground.c
@@ -163,6 +163,7 @@ struct _GreeterBackgroundPrivate
GList* active_monitors_config;
const Monitor* active_monitor;
+ gboolean active_monitor_change_in_progress;
/* List of monitors <Monitor*> with user-background=true*/
GSList* customized_monitors;
@@ -377,14 +378,21 @@ greeter_background_set_active_monitor_config(GreeterBackground* background,
priv = background->priv;
+ if (priv->active_monitor_change_in_progress)
+ return;
+ priv->active_monitor_change_in_progress = TRUE;
+
g_list_free_full(priv->active_monitors_config, g_free);
priv->active_monitors_config = NULL;
+ priv->active_monitor_change_in_progress = FALSE;
priv->follow_cursor = FALSE;
priv->follow_cursor_to_init = FALSE;
- if (!value || !*value)
+ if (!value || !*value) {
+ priv->active_monitor_change_in_progress = FALSE;
return;
+ }
values = g_strsplit(value, ";", -1);
@@ -402,6 +410,8 @@ greeter_background_set_active_monitor_config(GreeterBackground* background,
g_strfreev(values);
priv->active_monitors_config = g_list_reverse(priv->active_monitors_config);
+
+ priv->active_monitor_change_in_progress = FALSE;
}
void