diff options
author | Sean Davis <smd.seandavis@gmail.com> | 2018-02-17 14:21:29 -0500 |
---|---|---|
committer | Sean Davis <smd.seandavis@gmail.com> | 2018-02-17 14:21:29 -0500 |
commit | 1d8048049563daab9e44e11e493c834657a843f1 (patch) | |
tree | 715f0812aaf7df2a2c0243e76b93897049899662 | |
parent | f39bd469727ac3c0bd4ead75afcd1bc3d32aedf4 (diff) | |
download | lightdm-gtk-greeter-git-1d8048049563daab9e44e11e493c834657a843f1.tar.gz |
Prevent infinite signal emmission between two monitors (LP: #1410406, #1509780)
-rw-r--r-- | src/greeterbackground.c | 12 |
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 |