[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