Index: gnome-power-manager-2.28.0/src/gpm-button.c
===================================================================
--- gnome-power-manager-2.28.0.orig/src/gpm-button.c
+++ gnome-power-manager-2.28.0/src/gpm-button.c
@@ -37,6 +37,7 @@
 #include "egg-debug.h"
 
 static void     gpm_button_finalize   (GObject	      *object);
+static void     gpm_button_client_changed_cb (DkpClient *client, GpmButton *button);
 
 #define GPM_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPM_TYPE_BUTTON, GpmButtonPrivate))
 
@@ -260,6 +261,19 @@ gpm_button_is_lid_closed (GpmButton *but
 }
 
 /**
+ * gpm_button_is_lid_closed_direct:
+ **/
+gboolean
+gpm_button_is_lid_closed_direct (GpmButton *button)
+{
+	g_return_val_if_fail (GPM_IS_BUTTON (button), FALSE);
+
+	egg_debug ("directly poking lid_is_closed");
+	gpm_button_client_changed_cb (button->priv->client, button);
+	return button->priv->lid_is_closed;
+}
+
+/**
  * gpm_button_reset_time:
  *
  * We have to refresh the event time on resume to handle duplicate buttons
@@ -290,6 +304,8 @@ gpm_button_client_changed_cb (DkpClient
 	if (button->priv->lid_is_closed == lid_is_closed)
 		return;
 
+	egg_debug ("lid_is_closed has changed to %d", lid_is_closed);
+
 	/* save state */
 	button->priv->lid_is_closed = lid_is_closed;
 
Index: gnome-power-manager-2.28.0/src/gpm-button.h
===================================================================
--- gnome-power-manager-2.28.0.orig/src/gpm-button.h
+++ gnome-power-manager-2.28.0/src/gpm-button.h
@@ -66,6 +66,7 @@ typedef struct
 GType		 gpm_button_get_type		(void);
 GpmButton	*gpm_button_new			(void);
 gboolean	 gpm_button_is_lid_closed	(GpmButton *button);
+gboolean         gpm_button_is_lid_closed_direct (GpmButton *button);
 gboolean	 gpm_button_reset_time		(GpmButton *button);
 
 G_END_DECLS
Index: gnome-power-manager-2.28.0/src/gpm-manager.c
===================================================================
--- gnome-power-manager-2.28.0.orig/src/gpm-manager.c
+++ gnome-power-manager-2.28.0/src/gpm-manager.c
@@ -885,7 +885,7 @@ gpm_manager_client_changed_cb (DkpClient
 	gpm_manager_update_ac_throttle (manager);
 
 	/* simulate user input, but only when the lid is open */
-	if (!gpm_button_is_lid_closed (manager->priv->button))
+	if (!gpm_button_is_lid_closed_direct (manager->priv->button))
 		gpm_screensaver_poke (manager->priv->screensaver);
 
 	if (!on_battery)
@@ -1774,7 +1774,7 @@ gpm_manager_console_kit_active_changed_c
 		return;
 
 	/* get lid state */
-	ret = gpm_button_is_lid_closed (manager->priv->button);
+	ret = gpm_button_is_lid_closed_direct (manager->priv->button);
 	if (!ret)
 		return;
 
