From 2d9be3eb4eddeaa3cd302e86cba2d8b95f00bc32 Mon Sep 17 00:00:00 2001 From: Richard Hestilow Date: Fri, 27 Jul 2001 18:21:44 +0000 Subject: [PATCH] Don't go into an infinite loop if there are absolutely no enabled 2001-07-27 Richard Hestilow * prefs-widget.c (random_timeout_cb): Don't go into an infinite loop if there are absolutely no enabled screensavers. --- capplets/screensaver/ChangeLog | 5 +++++ capplets/screensaver/prefs-widget.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/capplets/screensaver/ChangeLog b/capplets/screensaver/ChangeLog index 636685fca..941e79c30 100644 --- a/capplets/screensaver/ChangeLog +++ b/capplets/screensaver/ChangeLog @@ -1,3 +1,8 @@ +2001-07-27 Richard Hestilow + + * prefs-widget.c (random_timeout_cb): Don't go into an infinite + loop if there are absolutely no enabled screensavers. + 2001-07-27 Bradford Hovinen * RELEASE : 1.5.2 diff --git a/capplets/screensaver/prefs-widget.c b/capplets/screensaver/prefs-widget.c index ec4d7d5f4..de0f6d556 100644 --- a/capplets/screensaver/prefs-widget.c +++ b/capplets/screensaver/prefs-widget.c @@ -702,7 +702,7 @@ selection_foreach_func (int model_row, int *closure) static gint random_timeout_cb (PrefsWidget *prefs_widget) { - GList *l; + GList *l, *old; g_return_val_if_fail (prefs_widget != NULL, FALSE); @@ -729,12 +729,18 @@ random_timeout_cb (PrefsWidget *prefs_widget) if (!l) l = prefs_widget->screensavers; } - + + if (l) + old = l->next; + else + old = NULL; + while (l) { /* Are we back to where we started? */ if (((Screensaver*) l->data)->enabled - || l == prefs_widget->priv->random_current) + || l == prefs_widget->priv->random_current + || (old && old == l)) break; l = l->next;