[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