[gnome-power-manager/gnome-2-28] Add just_resumed flag to inhibit consolekit events



commit 20727a526792d975ac93aa662948accc618c59b8
Author: Chow Loong Jin <hyperair gmail com>
Date:   Wed Jan 27 04:31:12 2010 +0800

    Add just_resumed flag to inhibit consolekit events

 src/gpm-manager.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/src/gpm-manager.c b/src/gpm-manager.c
index 6b5040b..f41edbb 100644
--- a/src/gpm-manager.c
+++ b/src/gpm-manager.c
@@ -91,6 +91,7 @@ struct GpmManagerPrivate
 	guint32			 screensaver_lid_throttle_id;
 	DkpClient		*client;
 	gboolean		 on_battery;
+	gboolean		 just_resumed;
 	GtkStatusIcon		*status_icon;
 	gboolean		 supports_notification_actions;
 	NotifyNotification	*notification;
@@ -1731,6 +1732,25 @@ gpm_manager_dpms_mode_changed_cb (GpmDpms *dpms, GpmDpmsMode mode, GpmManager *m
 	gpm_manager_update_dpms_throttle (manager);
 }
 
+static gboolean
+gpm_manager_reset_just_resumed_cb (gpointer user_data)
+{
+	GpmManager *manager = GPM_MANAGER (user_data);
+	manager->priv->just_resumed = FALSE;
+	return FALSE;
+}
+
+/**
+ * gpm_manager_control_resume_cb
+ **/
+static void
+gpm_manager_control_resume_cb (GpmControl *control, GpmControlAction action, GpmManager *manager)
+{
+	manager->priv->just_resumed = TRUE;
+
+	g_timeout_add_seconds (1, gpm_manager_reset_just_resumed_cb, manager);
+}
+
 /**
  * gpm_manager_console_kit_active_changed_cb:
  **/
@@ -1750,6 +1770,12 @@ gpm_manager_console_kit_active_changed_cb (EggConsoleKit *console, gboolean acti
 	if (!ret)
 		return;
 
+	/* lid state might not be accurate if just resumed. Don't do anything if
+	 * we've just resumed as we might end up re-suspending the machine due
+	 * to pm-utils and uswsusp changing the tty */
+	if (manager->priv->just_resumed)
+		return;
+
 	/* get ac state */
 	if (!manager->priv->on_battery) {
 		egg_debug ("Performing AC policy as become active when lid down");
@@ -1815,6 +1841,9 @@ gpm_manager_init (GpmManager *manager)
 	manager->priv->screensaver_dpms_throttle_id = 0;
 	manager->priv->screensaver_lid_throttle_id = 0;
 
+	/* init to not just_resumed */
+	manager->priv->just_resumed = FALSE;
+
 	/* don't apply policy when not active */
 	manager->priv->console = egg_console_kit_new ();
 	g_signal_connect (manager->priv->console, "active-changed",
@@ -1901,6 +1930,8 @@ gpm_manager_init (GpmManager *manager)
 	manager->priv->control = gpm_control_new ();
 	g_signal_connect (manager->priv->control, "sleep-failure",
 			  G_CALLBACK (gpm_manager_sleep_failure_cb), manager);
+	g_signal_connect (manager->priv->control, "resume",
+			  G_CALLBACK (gpm_manager_control_resume_cb), manager);
 
 	egg_debug ("creating new tray icon");
 	manager->priv->tray_icon = gpm_tray_icon_new ();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]