[Goodies-commits] r5562 - xfce4-power-manager/trunk/src
Ali Abdallah
aliov at xfce.org
Fri Oct 10 12:32:43 CEST 2008
Author: aliov
Date: 2008-10-10 10:32:43 +0000 (Fri, 10 Oct 2008)
New Revision: 5562
Modified:
xfce4-power-manager/trunk/src/xfpm-button.c
xfce4-power-manager/trunk/src/xfpm-hal.c
Log:
Lid switch control improvements
Modified: xfce4-power-manager/trunk/src/xfpm-button.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-button.c 2008-10-10 08:56:43 UTC (rev 5561)
+++ xfce4-power-manager/trunk/src/xfpm-button.c 2008-10-10 10:32:43 UTC (rev 5562)
@@ -71,6 +71,7 @@
static gboolean xfpm_button_suspend(XfpmButton *bt);
static void xfpm_button_handle_condition_detail(XfpmButton *bt,
+ const gchar *udi,
const gchar *condition_detail);
static void xfpm_button_handle_device_condition_cb(XfpmHal *hal,
@@ -298,22 +299,36 @@
}
static void
-xfpm_button_handle_condition_detail(XfpmButton *bt,const gchar *condition_detail)
+xfpm_button_handle_condition_detail(XfpmButton *bt,const gchar *udi,const gchar *condition_detail)
{
+ XfpmButtonPrivate *priv;
+ priv = XFPM_BUTTON_GET_PRIVATE(bt);
+
if ( !strcmp(condition_detail,"lid") && bt->lid_action != BUTTON_DO_NOTHING )
{
- if ( bt->lid_action == BUTTON_DO_SUSPEND )
+ GError *error = NULL;
+ gboolean pressed =
+ xfpm_hal_get_bool_info(priv->hal,udi,"button.state.value",&error);
+ if ( error )
{
- xfpm_lock_screen();
- xfpm_button_do_suspend(bt);
+ XFPM_DEBUG("Error getting lid switch state: %s\n",error->message);
+ g_error_free(error);
+ return;
}
- else if ( bt->lid_action == BUTTON_DO_HIBERNATE )
+ else if ( pressed == TRUE )
{
- xfpm_lock_screen();
- xfpm_button_do_hibernate(bt);
+ if ( bt->lid_action == BUTTON_DO_SUSPEND )
+ {
+ xfpm_lock_screen();
+ xfpm_button_do_suspend(bt);
+ }
+ else if ( bt->lid_action == BUTTON_DO_HIBERNATE )
+ {
+ xfpm_lock_screen();
+ xfpm_button_do_hibernate(bt);
+ }
}
}
-
else if ( !strcmp(condition_detail,"sleep") && bt->sleep_action != BUTTON_DO_NOTHING )
{
if ( bt->sleep_action == BUTTON_DO_SUSPEND )
@@ -361,7 +376,7 @@
return;
}
XFPM_DEBUG("proccessing event: %s %s\n",condition_name,condition_detail);
- xfpm_button_handle_condition_detail(bt,condition_detail);
+ xfpm_button_handle_condition_detail(bt,udi,condition_detail);
}
}
Modified: xfce4-power-manager/trunk/src/xfpm-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-hal.c 2008-10-10 08:56:43 UTC (rev 5561)
+++ xfce4-power-manager/trunk/src/xfpm-hal.c 2008-10-10 10:32:43 UTC (rev 5562)
@@ -560,7 +560,11 @@
DBUS_TYPE_INVALID);
XFPM_DEBUG("MESSAGE_TYPE_RETURN exit_code=%d\n",exit_code);
dbus_message_unref(reply);
- if ( exit_code == 0 ) return TRUE;
+ if ( exit_code == 0 )
+ {
+ *critical = 0;
+ return TRUE;
+ }
if ( exit_code > 1 )
{
g_set_error(gerror,0,0,_("Failed to hibernate"));
@@ -639,7 +643,11 @@
DBUS_TYPE_INVALID);
XFPM_DEBUG("MESSAGE_TYPE_RETURN exit_code=%d\n",exit_code);
dbus_message_unref(reply);
- if ( exit_code == 0 ) return TRUE;
+ if ( exit_code == 0 )
+ {
+ *critical = 0;
+ return TRUE;
+ }
if ( exit_code > 1 )
{
g_set_error(gerror,0,0,_("Failed to suspend"));
More information about the Goodies-commits
mailing list