gdm/gdm-2.21.9-prevent-some-spurious-wakeups.patch

32 lines
1.4 KiB
Diff

--- gdm-2.21.9/gui/simple-greeter/gdm-chooser-widget.c (revision 5978)
+++ gdm-2.21.9/gui/simple-greeter/gdm-chooser-widget.c (working copy)
@@ -82,6 +82,7 @@ struct GdmChooserWidgetPrivate
gint number_of_separated_rows;
gint number_of_rows_with_status;
gint number_of_rows_with_images;
+ gint number_of_active_timers;
guint update_idle_id;
guint animation_timeout_id;
@@ -2034,6 +2035,7 @@ start_timer (GdmChooserWidget *widget
gtk_list_store_set (widget->priv->list_store, &iter,
CHOOSER_TIMER_VALUE_COLUMN, 0.0, -1);
+ widget->priv->number_of_active_timers++;
if (widget->priv->timer_animation_timeout_id == 0) {
g_assert (g_hash_table_size (widget->priv->rows_with_timers) == 1);
@@ -2067,6 +2069,12 @@ stop_timer (GdmChooserWidget *widget,
0.0, -1);
gtk_list_store_set (widget->priv->list_store, &iter,
CHOOSER_TIMER_VALUE_COLUMN, 0.0, -1);
+
+ widget->priv->number_of_active_timers--;
+ if (widget->priv->number_of_active_timers == 0) {
+ g_source_remove (widget->priv->timer_animation_timeout_id);
+ widget->priv->timer_animation_timeout_id = 0;
+ }
}
static void