[Goodies-commits] r6946 - in xfce4-power-manager/trunk: . libxfpm src

Ali Abdallah aliov at xfce.org
Wed Mar 18 23:29:34 CET 2009


Author: aliov
Date: 2009-03-18 22:29:34 +0000 (Wed, 18 Mar 2009)
New Revision: 6946

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/xfpm-common.c
   xfce4-power-manager/trunk/src/xfpm-engine.c
Log:
Doing hibernate/suspend in a timeout function

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-03-18 22:15:51 UTC (rev 6945)
+++ xfce4-power-manager/trunk/ChangeLog	2009-03-18 22:29:34 UTC (rev 6946)
@@ -1,4 +1,7 @@
 
+2009-03-18 23:29 Ali aliov at xfce.org 
+	 * : Doing hibernate/suspend in a timeout function
+
 2009-03-18 23:15 Ali aliov at xfce.org 
 	 * : Fix a bug in the inhibit interface signal
 

Modified: xfce4-power-manager/trunk/libxfpm/xfpm-common.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/xfpm-common.c	2009-03-18 22:15:51 UTC (rev 6945)
+++ xfce4-power-manager/trunk/libxfpm/xfpm-common.c	2009-03-18 22:29:34 UTC (rev 6946)
@@ -123,8 +123,6 @@
     {
         g_critical ("Connot lock screen\n");
     }
-    
-    g_usleep (2000000);
 }
 
 void       

Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-18 22:15:51 UTC (rev 6945)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-18 22:29:34 UTC (rev 6946)
@@ -109,10 +109,58 @@
 
 G_DEFINE_TYPE(XfpmEngine, xfpm_engine, G_TYPE_OBJECT)
 
+static gboolean
+xfpm_engine_do_suspend (XfpmEngine *engine)
+{
+    GError *error = NULL;
+    
+    hal_iface_shutdown (engine->priv->iface, "Suspend", &error);
+    
+    if ( error )
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+xfpm_engine_do_hibernate (XfpmEngine *engine)
+{
+    GError *error = NULL;
+    
+    hal_iface_shutdown (engine->priv->iface, "Hibernate", &error);
+    
+    if ( error )
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+xfpm_engine_do_shutdown (XfpmEngine *engine)
+{
+    GError *error = NULL;
+    
+    hal_iface_shutdown (engine->priv->iface, "Shutdown", &error);
+    
+    if ( error )
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    
+    return FALSE;
+}
+
 static void
 xfpm_engine_shutdown_request (XfpmEngine *engine, XfpmShutdownRequest shutdown)
 {
-    GError *error = NULL;
+    
     const gchar *action = xfpm_int_to_shutdown_string (shutdown);
 	
     if ( xfpm_strequal(action, "Nothing") )
@@ -125,16 +173,23 @@
 	TRACE("Going to do %s\n", action);
 	xfpm_send_message_to_network_manager ("sleep");
 	
-	if ( shutdown != XFPM_DO_SHUTDOWN && engine->priv->lock_screen )
+	if ( shutdown == XFPM_DO_SHUTDOWN)
+	{
+	    xfpm_engine_do_shutdown (engine);
+	}
+	else if ( shutdown == XFPM_DO_HIBERNATE )
+	{
+	    g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_hibernate, engine);
+	}
+	else if ( shutdown == XFPM_DO_SUSPEND )
+	{
+	    g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_suspend, engine);
+	}
+	
+	if ( engine->priv->lock_screen )
 	    xfpm_lock_screen ();
-	    
-	hal_iface_shutdown (engine->priv->iface, action, &error);
+	
 	xfpm_send_message_to_network_manager ("wake");
-	if ( error )
-	{
-	    g_warning ("%s", error->message);
-	    g_error_free (error);
-	}
     }
 }
 




More information about the Goodies-commits mailing list