diff options
author | Richard Hughes <richard@hughsie.com> | 2010-07-07 10:07:37 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2010-07-07 10:07:37 +0100 |
commit | 6118ac82ec623970dec712c9257bdc4fbfe450d5 (patch) | |
tree | 48ea33da42d328fec86f55f46234a863fa58e602 /src | |
parent | ac8fa9d5be28ab20a2827ec3a78b15495bd875f8 (diff) |
Get the powersave command from the backend rather than hardcoding Linux specifics
Diffstat (limited to 'src')
-rw-r--r-- | src/linux/up-backend.c | 17 | ||||
-rw-r--r-- | src/up-backend.h | 2 | ||||
-rw-r--r-- | src/up-daemon.c | 27 |
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) |