summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2010-07-07 10:07:37 +0100
committerRichard Hughes <richard@hughsie.com>2010-07-07 10:07:37 +0100
commit6118ac82ec623970dec712c9257bdc4fbfe450d5 (patch)
tree48ea33da42d328fec86f55f46234a863fa58e602 /src
parentac8fa9d5be28ab20a2827ec3a78b15495bd875f8 (diff)
Get the powersave command from the backend rather than hardcoding Linux specifics
Diffstat (limited to 'src')
-rw-r--r--src/linux/up-backend.c17
-rw-r--r--src/up-backend.h2
-rw-r--r--src/up-daemon.c27
3 files changed, 31 insertions, 15 deletions
diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c
index a2cf61d..0343cba 100644
--- a/src/linux/up-backend.c
+++ b/src/linux/up-backend.c
@@ -71,8 +71,10 @@ G_DEFINE_TYPE (UpBackend, up_backend, G_TYPE_OBJECT)
static gboolean up_backend_device_add (UpBackend *backend, GUdevDevice *native);
static void up_backend_device_remove (UpBackend *backend, GUdevDevice *native);
-#define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/pm-suspend"
-#define UP_BACKEND_HIBERNATE_COMMAND "/usr/sbin/pm-hibernate"
+#define UP_BACKEND_SUSPEND_COMMAND "/usr/sbin/pm-suspend"
+#define UP_BACKEND_HIBERNATE_COMMAND "/usr/sbin/pm-hibernate"
+#define UP_BACKEND_POWERSAVE_TRUE_COMMAND "/usr/sbin/pm-powersave true"
+#define UP_BACKEND_POWERSAVE_FALSE_COMMAND "/usr/sbin/pm-powersave false"
/**
* up_backend_device_new:
@@ -555,6 +557,17 @@ up_backend_get_hibernate_command (UpBackend *backend)
}
/**
+ * up_backend_get_powersave_command:
+ **/
+const gchar *
+up_backend_get_powersave_command (UpBackend *backend, gboolean powersave)
+{
+ if (powersave)
+ return UP_BACKEND_POWERSAVE_TRUE_COMMAND;
+ return UP_BACKEND_POWERSAVE_FALSE_COMMAND;
+}
+
+/**
* up_backend_class_init:
* @klass: The UpBackendClass
**/
diff --git a/src/up-backend.h b/src/up-backend.h
index d485a2e..154e2c6 100644
--- a/src/up-backend.h
+++ b/src/up-backend.h
@@ -73,6 +73,8 @@ gboolean up_backend_has_encrypted_swap (UpBackend *backend);
gfloat up_backend_get_used_swap (UpBackend *backend);
const gchar *up_backend_get_suspend_command (UpBackend *backend);
const gchar *up_backend_get_hibernate_command (UpBackend *backend);
+const gchar *up_backend_get_powersave_command (UpBackend *backend,
+ gboolean powersave);
G_END_DECLS
diff --git a/src/up-daemon.c b/src/up-daemon.c
index cd5872b..f411146 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -224,19 +224,21 @@ up_daemon_get_on_ac_local (UpDaemon *daemon)
}
/**
- * up_daemon_set_pmutils_powersave:
- *
- * Uses pm-utils to run scripts in power.d
+ * up_daemon_set_powersave:
**/
static gboolean
-up_daemon_set_pmutils_powersave (UpDaemon *daemon, gboolean powersave)
+up_daemon_set_powersave (UpDaemon *daemon, gboolean powersave)
{
- gboolean ret;
- gchar *command;
+ gboolean ret = FALSE;
+ const gchar *command;
GError *error = NULL;
- /* run script from pm-utils */
- command = g_strdup_printf ("/usr/sbin/pm-powersave %s", powersave ? "true" : "false");
+ /* run script */
+ command = up_backend_get_powersave_command (daemon->priv->backend, powersave);
+ if (command == NULL) {
+ egg_warning ("no powersave command set");
+ goto out;
+ }
egg_debug ("excuting command: %s", command);
ret = g_spawn_command_line_async (command, &error);
if (!ret) {
@@ -245,7 +247,6 @@ up_daemon_set_pmutils_powersave (UpDaemon *daemon, gboolean powersave)
goto out;
}
out:
- g_free (command);
return ret;
}
@@ -683,8 +684,8 @@ up_daemon_startup (UpDaemon *daemon)
priv->during_coldplug = FALSE;
egg_debug ("daemon now not coldplug");
- /* set pm-utils power policy */
- up_daemon_set_pmutils_powersave (daemon, priv->on_battery);
+ /* set power policy */
+ up_daemon_set_powersave (daemon, priv->on_battery);
out:
return ret;
}
@@ -817,8 +818,8 @@ up_daemon_device_changed_cb (UpDevice *device, UpDaemon *daemon)
if (ret != priv->on_battery) {
up_daemon_set_on_battery (daemon, ret);
- /* set pm-utils power policy */
- up_daemon_set_pmutils_powersave (daemon, ret);
+ /* set power policy */
+ up_daemon_set_powersave (daemon, ret);
}
ret = up_daemon_get_on_low_battery_local (daemon);
if (ret != priv->on_low_battery)