summaryrefslogtreecommitdiff
path: root/extra/xfce4-power-manager
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2013-10-08 22:20:37 -0300
committerNicolás Reynolds <fauno@endefensadelsl.org>2013-10-08 22:20:37 -0300
commitfccf9769e2c26f577f6214ed9d0dbb30cb8c51bd (patch)
treecc5312eeed95e18d8e2c6009c568f3d32501bc01 /extra/xfce4-power-manager
parent69962c022fb4ed68b9163e60183fff714308e4e3 (diff)
parent3a0ad5dc35d5cff379cdfc736b9cae856416fe6a (diff)
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts: community/abe/PKGBUILD community/account-plugins/PKGBUILD community/adesklets/PKGBUILD community/aircrack-ng/PKGBUILD community/audit/PKGBUILD community/bchunk/PKGBUILD community/bibutils/PKGBUILD community/cantata/PKGBUILD community/cdck/PKGBUILD community/cinnamon-control-center/PKGBUILD community/clusterssh/PKGBUILD community/consonance/PKGBUILD community/credentials-preferences/PKGBUILD community/dee/PKGBUILD community/dosbox/PKGBUILD community/drbd/PKGBUILD community/dvdisaster/PKGBUILD community/ekg/PKGBUILD community/ekg2/PKGBUILD community/emelfm2/PKGBUILD community/erlang/PKGBUILD community/ettercap/PKGBUILD community/evilwm/PKGBUILD community/fatrat/PKGBUILD community/fcitx-mozc/PKGBUILD community/fcrackzip/PKGBUILD community/ffmpegsource/PKGBUILD community/fssos-nsvs/PKGBUILD community/geda-gaf/PKGBUILD community/gnome-applets/PKGBUILD community/gnome-panel/PKGBUILD community/gnustep-make/PKGBUILD community/gwibber/PKGBUILD community/html2text/PKGBUILD community/intellij-idea-libs/PKGBUILD community/libcgns2/PKGBUILD community/libmatio/PKGBUILD community/librcc/PKGBUILD community/libsignon-glib/PKGBUILD community/linux-tools/PKGBUILD community/minitube/PKGBUILD community/mpdscribble/PKGBUILD community/mplayer2/PKGBUILD community/musepack-tools/PKGBUILD community/nginx/PKGBUILD community/pam_pwcheck/PKGBUILD community/portaudio/PKGBUILD community/portaudio_cpp/PKGBUILD community/prelink/PKGBUILD community/projectm/PKGBUILD community/prosody/PKGBUILD community/python-basemap/PKGBUILD community/qgit/PKGBUILD community/raptor1/PKGBUILD community/sensors-applet/PKGBUILD community/signon-keyring-extension/PKGBUILD community/signon-plugin-oauth2/PKGBUILD community/signon-ui/PKGBUILD community/sshguard/PKGBUILD community/tea/PKGBUILD community/tint2/PKGBUILD community/tremulous/PKGBUILD community/vobcopy/PKGBUILD community/windowlab/PKGBUILD community/xdelta/PKGBUILD community/xmms2/PKGBUILD community/xosd/PKGBUILD core/gdbm/PKGBUILD core/heirloom-mailx/PKGBUILD core/libffi/PKGBUILD core/procps-ng/PKGBUILD core/systemd/PKGBUILD core/tar/PKGBUILD cross/mips64el-unknown-linux-gnu-linux-libre-api-headers/PKGBUILD extra/arj/PKGBUILD extra/audacity/PKGBUILD extra/cdparanoia/PKGBUILD extra/elfutils/PKGBUILD extra/fltk/PKGBUILD extra/gnome-python-desktop/PKGBUILD extra/gstreamer/PKGBUILD extra/gtk2/PKGBUILD extra/gvfs/PKGBUILD extra/imagemagick/PKGBUILD extra/indent/PKGBUILD extra/kdepim/PKGBUILD extra/lcms/PKGBUILD extra/lesstif/PKGBUILD extra/libchewing/PKGBUILD extra/libdrm/PKGBUILD extra/libmodplug/PKGBUILD extra/libnotify/PKGBUILD extra/libsm/PKGBUILD extra/libxmu/PKGBUILD extra/libxpm/PKGBUILD extra/mariadb/PKGBUILD extra/mesa/PKGBUILD extra/mkvtoolnix/PKGBUILD extra/neon/PKGBUILD extra/ocaml/PKGBUILD extra/phonon-vlc/PKGBUILD extra/php-xcache/PKGBUILD extra/polkit/PKGBUILD extra/pycups/PKGBUILD extra/python-cairo/PKGBUILD extra/python/PKGBUILD extra/ruby/PKGBUILD extra/sqlite/PKGBUILD extra/talloc/PKGBUILD extra/thunar-archive-plugin/PKGBUILD extra/totem-plparser/PKGBUILD extra/totem/PKGBUILD extra/vinagre/PKGBUILD extra/vino/PKGBUILD extra/vlc/PKGBUILD extra/wget/PKGBUILD extra/xine-lib/PKGBUILD extra/xorg-server/PKGBUILD extra/xorg-twm/PKGBUILD extra/xorg-xclipboard/PKGBUILD extra/xorg-xclock/PKGBUILD extra/xorg-xkill/PKGBUILD extra/xorg-xlsclients/PKGBUILD extra/xorg-xman/PKGBUILD extra/xorg-xrdb/PKGBUILD extra/xpdf/PKGBUILD extra/xvidcore/PKGBUILD extra/yelp/PKGBUILD libre/audacious-plugins-libre/PKGBUILD libre/mc-libre/PKGBUILD libre/python2-reportlab-libre/PKGBUILD
Diffstat (limited to 'extra/xfce4-power-manager')
-rw-r--r--extra/xfce4-power-manager/PKGBUILD22
-rw-r--r--extra/xfce4-power-manager/xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch306
-rw-r--r--extra/xfce4-power-manager/xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch156
3 files changed, 481 insertions, 3 deletions
diff --git a/extra/xfce4-power-manager/PKGBUILD b/extra/xfce4-power-manager/PKGBUILD
index 5427203e4..e57801bbe 100644
--- a/extra/xfce4-power-manager/PKGBUILD
+++ b/extra/xfce4-power-manager/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 185209 2013-05-12 07:30:46Z foutrelis $
+# $Id: PKGBUILD 195950 2013-10-06 07:26:31Z foutrelis $
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Tobias Kieslich <tobias funnychar archlinux.org>
pkgname=xfce4-power-manager
pkgver=1.2.0
-pkgrel=4
+pkgrel=6
pkgdesc="Power manager for Xfce desktop"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.xfce.org/"
@@ -15,17 +15,33 @@ makedepends=('pkgconfig' 'intltool')
options=('!libtool')
install=$pkgname.install
source=(http://archive.xfce.org/src/apps/$pkgname/1.2/$pkgname-$pkgver.tar.bz2
+ xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch
+ xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch
xfce4-power-manager-1.2.0-sync-en-gb-translation.patch)
sha256sums=('d7fb98a540284b62f4201527de17d4b24123f9d26c9f49131dd497c8387184e9'
+ '4166f61234abfcd385d43b1e7f7ab5b73711bcb7335ef0f6b217ac799dc9266b'
+ '689751b6369fd8ade6337713283f5ef3dd40715bbbe69e4a8723c9cbe56e7465'
'c8e1dfafd685c2abf1fcc2b3682f5b1eb2e7f1d4fa557f11a7478437eef9a933')
-build() {
+prepare() {
cd "$srcdir/$pkgname-$pkgver"
+ # Use logind interfaces for suspend and hibernate
+ # https://bugzilla.xfce.org/show_bug.cgi?id=9963
+ patch -Np1 -i "$srcdir/xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch"
+
+ # Fix brightness level handling
+ # https://bugzilla.xfce.org/show_bug.cgi?id=8840
+ patch -Np1 -i "$srcdir/xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch"
+
# Fix en_GB translation
# https://bugs.archlinux.org/task/30055
patch -d po -Np0 -i \
"$srcdir/xfce4-power-manager-1.2.0-sync-en-gb-translation.patch"
+}
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
./configure \
--prefix=/usr \
diff --git a/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch b/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch
new file mode 100644
index 000000000..5cb4fdb0b
--- /dev/null
+++ b/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-change-brightness-level-from-glong-to-gint32.patch
@@ -0,0 +1,306 @@
+From 05d12e12596512f7a31d3cdb4845a69dc2d4c611 Mon Sep 17 00:00:00 2001
+From: Martin Matuska <martin@matuska.org>
+Date: Tue, 23 Jul 2013 09:27:41 +0000
+Subject: Change brightness level from glong to gint32
+
+The "Backlight" RandR property is a 32-bit integer. This means that the int32 (gint32) type should be used to represent brightness levels. The attached patch does nothing else than changing the brightness level representation from glong to gint32. This fixes the screen auto-dimming issue and brightness panel plugin issue.
+---
+diff --git a/common/xfpm-brightness.c b/common/xfpm-brightness.c
+index aa1ef33..f1524cb 100644
+--- a/common/xfpm-brightness.c
++++ b/common/xfpm-brightness.c
+@@ -92,11 +92,11 @@ out:
+ }
+
+ static gboolean
+-xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, long *current)
++xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, gint32 *current)
+ {
+ unsigned long nitems;
+ unsigned long bytes_after;
+- long *prop;
++ gint32 *prop;
+ Atom actual_type;
+ int actual_format;
+ gboolean ret = FALSE;
+@@ -124,7 +124,7 @@ xfpm_brightness_xrandr_get_level (XfpmBrightness *brightness, RROutput output, l
+ }
+
+ static gboolean
+-xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, long level)
++xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, gint32 level)
+ {
+ gboolean ret = TRUE;
+
+@@ -137,7 +137,7 @@ xfpm_brightness_xrandr_set_level (XfpmBrightness *brightness, RROutput output, l
+
+ if ( gdk_error_trap_pop () )
+ {
+- g_warning ("failed to XRRChangeOutputProperty for brightness %li", level);
++ g_warning ("failed to XRRChangeOutputProperty for brightness %d", level);
+ ret = FALSE;
+ }
+
+@@ -225,11 +225,11 @@ xfpm_brightness_setup_xrandr (XfpmBrightness *brightness)
+ }
+
+ static gboolean
+-xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_xrand_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+- long hw_level;
++ gint32 hw_level;
+ gboolean ret = FALSE;
+- long set_level;
++ gint32 set_level;
+
+ ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level);
+
+@@ -250,14 +250,14 @@ xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
+
+ if ( !ret )
+ {
+- g_warning ("xfpm_brightness_xrand_up failed for %li", set_level);
++ g_warning ("xfpm_brightness_xrand_up failed for %d", set_level);
+ return FALSE;
+ }
+
+ /* Nothing changed in the hardware*/
+ if ( *new_level == hw_level )
+ {
+- g_warning ("xfpm_brightness_xrand_up did not change the hw level to %li", set_level);
++ g_warning ("xfpm_brightness_xrand_up did not change the hw level to %d", set_level);
+ return FALSE;
+ }
+
+@@ -265,11 +265,11 @@ xfpm_brightness_xrand_up (XfpmBrightness *brightness, glong *new_level)
+ }
+
+ static gboolean
+-xfpm_brightness_xrand_down (XfpmBrightness *brightness, long *new_level)
++xfpm_brightness_xrand_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+- long hw_level;
++ gint32 hw_level;
+ gboolean ret;
+- long set_level;
++ gint32 set_level;
+
+ ret = xfpm_brightness_xrandr_get_level (brightness, brightness->priv->output, &hw_level);
+
+@@ -290,14 +290,14 @@ xfpm_brightness_xrand_down (XfpmBrightness *brightness, long *new_level)
+
+ if ( !ret )
+ {
+- g_warning ("xfpm_brightness_xrand_down failed for %li", set_level);
++ g_warning ("xfpm_brightness_xrand_down failed for %d", set_level);
+ return FALSE;
+ }
+
+ /* Nothing changed in the hardware*/
+ if ( *new_level == hw_level )
+ {
+- g_warning ("xfpm_brightness_xrand_down did not change the hw level to %li", set_level);
++ g_warning ("xfpm_brightness_xrand_down did not change the hw level to %d", set_level);
+ return FALSE;
+ }
+
+@@ -361,7 +361,7 @@ xfpm_brightness_setup_helper (XfpmBrightness *brightness)
+ }
+
+ static gboolean
+-xfpm_brightness_helper_get_level (XfpmBrightness *brg, glong *level)
++xfpm_brightness_helper_get_level (XfpmBrightness *brg, gint32 *level)
+ {
+ int ret;
+
+@@ -406,11 +406,11 @@ out:
+ }
+
+ static gboolean
+-xfpm_brightness_helper_up (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_helper_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+- glong hw_level;
++ gint32 hw_level;
+ gboolean ret = FALSE;
+- gint set_level;
++ gint32 set_level;
+
+ ret = xfpm_brightness_helper_get_level (brightness, &hw_level);
+
+@@ -446,11 +446,11 @@ xfpm_brightness_helper_up (XfpmBrightness *brightness, glong *new_level)
+ }
+
+ static gboolean
+-xfpm_brightness_helper_down (XfpmBrightness *brightness, glong *new_level)
++xfpm_brightness_helper_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+- glong hw_level;
++ gint32 hw_level;
+ gboolean ret;
+- gint set_level;
++ gint32 set_level;
+
+ ret = xfpm_brightness_helper_get_level (brightness, &hw_level);
+
+@@ -572,7 +572,7 @@ xfpm_brightness_setup (XfpmBrightness *brightness)
+ return FALSE;
+ }
+
+-gboolean xfpm_brightness_up (XfpmBrightness *brightness, glong *new_level)
++gboolean xfpm_brightness_up (XfpmBrightness *brightness, gint32 *new_level)
+ {
+ gboolean ret = FALSE;
+
+@@ -589,7 +589,7 @@ gboolean xfpm_brightness_up (XfpmBrightness *brightness, glong *new_level)
+ return ret;
+ }
+
+-gboolean xfpm_brightness_down (XfpmBrightness *brightness, glong *new_level)
++gboolean xfpm_brightness_down (XfpmBrightness *brightness, gint32 *new_level)
+ {
+ gboolean ret = FALSE;
+
+@@ -618,7 +618,7 @@ gint xfpm_brightness_get_max_level (XfpmBrightness *brightness)
+ return brightness->priv->max_level;
+ }
+
+-gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, glong *level)
++gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, gint32 *level)
+ {
+ gboolean ret = FALSE;
+
+@@ -632,7 +632,7 @@ gboolean xfpm_brightness_get_level (XfpmBrightness *brightness, glong *level)
+ return ret;
+ }
+
+-gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, glong level)
++gboolean xfpm_brightness_set_level (XfpmBrightness *brightness, gint32 level)
+ {
+ gboolean ret = FALSE;
+
+diff --git a/common/xfpm-brightness.h b/common/xfpm-brightness.h
+index 0c4e3ed..26b3dbe 100644
+--- a/common/xfpm-brightness.h
++++ b/common/xfpm-brightness.h
+@@ -51,20 +51,20 @@ XfpmBrightness *xfpm_brightness_new (void);
+ gboolean xfpm_brightness_setup (XfpmBrightness *brightness);
+
+ gboolean xfpm_brightness_up (XfpmBrightness *brightness,
+- glong *new_level);
++ gint32 *new_level);
+
+ gboolean xfpm_brightness_down (XfpmBrightness *brightness,
+- glong *new_level);
++ gint32 *new_level);
+
+ gboolean xfpm_brightness_has_hw (XfpmBrightness *brightness);
+
+ gint xfpm_brightness_get_max_level (XfpmBrightness *brightness);
+
+ gboolean xfpm_brightness_get_level (XfpmBrightness *brightness,
+- glong *level);
++ gint32 *level);
+
+ gboolean xfpm_brightness_set_level (XfpmBrightness *brightness,
+- glong level);
++ gint32 level);
+
+ gboolean xfpm_brightness_dim_down (XfpmBrightness *brightness);
+
+diff --git a/panel-plugins/brightness/brightness-button.c b/panel-plugins/brightness/brightness-button.c
+index 6e60c29..bd466c9 100644
+--- a/panel-plugins/brightness/brightness-button.c
++++ b/panel-plugins/brightness/brightness-button.c
+@@ -186,7 +186,7 @@ static gboolean
+ brightness_button_popup_win (GtkWidget *widget, GdkEvent *ev, guint32 ev_time)
+ {
+ gint x, y;
+- glong current_level = 0;
++ gint32 current_level = 0;
+ GdkDisplay *display;
+ GdkScreen *screen;
+ BrightnessButton *button;
+@@ -342,7 +342,7 @@ plus_clicked (GtkWidget *widget, BrightnessButton *button)
+ static void
+ range_value_changed (GtkWidget *widget, BrightnessButton *button)
+ {
+- glong range_level, hw_level;
++ gint32 range_level, hw_level;
+
+ range_level = (gint) gtk_range_get_value (GTK_RANGE (button->priv->range));
+
+@@ -428,8 +428,8 @@ brightness_button_create_popup (BrightnessButton *button)
+ static void
+ brightness_button_up (BrightnessButton *button)
+ {
+- glong level;
+- glong max_level;
++ gint32 level;
++ gint32 max_level;
+
+ xfpm_brightness_get_level (button->priv->brightness, &level);
+ max_level = xfpm_brightness_get_max_level (button->priv->brightness);
+@@ -443,7 +443,7 @@ brightness_button_up (BrightnessButton *button)
+ static void
+ brightness_button_down (BrightnessButton *button)
+ {
+- glong level;
++ gint32 level;
+ xfpm_brightness_get_level (button->priv->brightness, &level);
+
+ if ( level != 0 )
+diff --git a/src/xfpm-backlight.c b/src/xfpm-backlight.c
+index baeeb43..45c990f 100644
+--- a/src/xfpm-backlight.c
++++ b/src/xfpm-backlight.c
+@@ -63,8 +63,8 @@ struct XfpmBacklightPrivate
+ gboolean has_hw;
+ gboolean on_battery;
+
+- glong last_level;
+- glong max_level;
++ gint32 last_level;
++ gint32 max_level;
+
+ gboolean dimmed;
+ gboolean block;
+@@ -79,7 +79,7 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
+
+ if (xfpm_power_get_mode (backlight->priv->power) == XFPM_POWER_MODE_NORMAL )
+ {
+- glong dim_level;
++ gint32 dim_level;
+
+ g_object_get (G_OBJECT (backlight->priv->conf),
+ backlight->priv->on_battery ? BRIGHTNESS_LEVEL_ON_BATTERY : BRIGHTNESS_LEVEL_ON_AC, &dim_level,
+@@ -101,7 +101,7 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
+ **/
+ if (backlight->priv->last_level > dim_level)
+ {
+- XFPM_DEBUG ("Current brightness level before dimming : %li, new %li", backlight->priv->last_level, dim_level);
++ XFPM_DEBUG ("Current brightness level before dimming : %d, new %d", backlight->priv->last_level, dim_level);
+ backlight->priv->dimmed = xfpm_brightness_set_level (backlight->priv->brightness, dim_level);
+ }
+ }
+@@ -182,7 +182,7 @@ xfpm_backlight_reset_cb (EggIdletime *idle, XfpmBacklight *backlight)
+ {
+ if ( !backlight->priv->block)
+ {
+- XFPM_DEBUG ("Alarm reset, setting level to %li", backlight->priv->last_level);
++ XFPM_DEBUG ("Alarm reset, setting level to %d", backlight->priv->last_level);
+ xfpm_brightness_set_level (backlight->priv->brightness, backlight->priv->last_level);
+ }
+ backlight->priv->dimmed = FALSE;
+@@ -192,7 +192,7 @@ xfpm_backlight_reset_cb (EggIdletime *idle, XfpmBacklight *backlight)
+ static void
+ xfpm_backlight_button_pressed_cb (XfpmButton *button, XfpmButtonKey type, XfpmBacklight *backlight)
+ {
+- glong level;
++ gint32 level;
+ gboolean ret = TRUE;
+
+ gboolean enable_brightness, show_popup;
+--
+cgit v0.9.2
diff --git a/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch b/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch
new file mode 100644
index 000000000..431489588
--- /dev/null
+++ b/extra/xfce4-power-manager/xfce4-power-manager-1.2.0-logind-support-for-suspend-hibernate.patch
@@ -0,0 +1,156 @@
+From 244d0f09561eace29cbef819c2deb55b13701e25 Mon Sep 17 00:00:00 2001
+From: Mikhail Efremov <sem@altlinux.org>
+Date: Mon, 8 Apr 2013 21:04:30 +0400
+Subject: [PATCH] Add systemd-logind support for suspend/hibernate.
+
+---
+ configure.ac.in | 20 +++++++++++++++++
+ src/xfpm-power-common.h | 8 +++++++
+ src/xfpm-power.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 84 insertions(+), 1 deletion(-)
+
+diff --git a/src/xfpm-power-common.h b/src/xfpm-power-common.h
+index 1040aed..11eaedc 100644
+--- a/src/xfpm-power-common.h
++++ b/src/xfpm-power-common.h
+@@ -33,9 +33,17 @@
+ #define UPOWER_PATH_WAKEUPS "/org/freedesktop/UPower/Wakeups"
+ #define UPOWER_IFACE_WAKEUPS "org.freedesktop.UPower.Wakeups"
+
++#ifdef WITH_SLEEP_MANAGER_UPOWER
+ #define POLKIT_AUTH_SUSPEND "org.freedesktop.upower.suspend"
+ #define POLKIT_AUTH_HIBERNATE "org.freedesktop.upower.hibernate"
++#else
++#define LOGIND_NAME "org.freedesktop.login1"
++#define LOGIND_PATH "/org/freedesktop/login1"
++#define LOGIND_IFACE "org.freedesktop.login1.Manager"
+
++#define POLKIT_AUTH_SUSPEND "org.freedesktop.login1.suspend"
++#define POLKIT_AUTH_HIBERNATE "org.freedesktop.login1.hibernate"
++#endif
+
+ GPtrArray *xfpm_power_enumerate_devices (DBusGProxy *proxy);
+
+diff --git a/src/xfpm-power.c b/src/xfpm-power.c
+index 796bef8..4a91e33 100644
+--- a/src/xfpm-power.c
++++ b/src/xfpm-power.c
+@@ -72,7 +72,10 @@ struct XfpmPowerPrivate
+
+ DBusGProxy *proxy;
+ DBusGProxy *proxy_prop;
+-
++#ifndef WITH_SLEEP_MANAGER_UPOWER
++ DBusGProxy *proxy_logind;
++#endif
++
+ GHashTable *hash;
+
+ XfpmConsoleKit *console;
+@@ -153,6 +156,7 @@ xfpm_power_check_polkit_auth (XfpmPower *power)
+ }
+ #endif
+
++#ifdef WITH_SLEEP_MANAGER_UPOWER
+ static void
+ xfpm_power_check_pm (XfpmPower *power, GHashTable *props)
+ {
+@@ -186,6 +190,32 @@ xfpm_power_check_pm (XfpmPower *power, GHashTable *props)
+ power->priv->can_hibernate = ret;
+ }
+ }
++#else
++static gboolean
++xfpm_power_can_sleep_method (XfpmPower *power, const char *method)
++{
++ GError *error = NULL;
++ char *retstr = NULL;
++ gboolean ret = FALSE;
++
++ if (!dbus_g_proxy_call (power->priv->proxy_logind, method, &error,
++ G_TYPE_INVALID,
++ G_TYPE_STRING, &retstr,
++ G_TYPE_INVALID))
++ {
++ g_warning ("Unable to check %s method: %s", method, error->message);
++ g_error_free (error);
++
++ return FALSE;
++ }
++
++ if (retstr && !strcmp (retstr, "yes"))
++ ret = TRUE;
++ g_free (retstr);
++
++ return ret;
++}
++#endif
+
+ static void
+ xfpm_power_check_power (XfpmPower *power, GHashTable *props)
+@@ -276,7 +306,12 @@ xfpm_power_get_properties (XfpmPower *power)
+
+ props = xfpm_power_get_interface_properties (power->priv->proxy_prop, UPOWER_IFACE);
+
++#ifdef WITH_SLEEP_MANAGER_UPOWER
+ xfpm_power_check_pm (power, props);
++#else
++ power->priv->can_suspend = xfpm_power_can_sleep_method (power, "CanSuspend");
++ power->priv->can_hibernate = xfpm_power_can_sleep_method (power, "CanHibernate");
++#endif
+ xfpm_power_check_lid (power, props);
+ xfpm_power_check_power (power, props);
+
+@@ -347,9 +382,16 @@ xfpm_power_sleep (XfpmPower *power, const gchar *sleep_time, gboolean force)
+ xfpm_lock_screen ();
+ }
+
++#ifdef WITH_SLEEP_MANAGER_UPOWER
+ dbus_g_proxy_call (power->priv->proxy, sleep_time, &error,
+ G_TYPE_INVALID,
+ G_TYPE_INVALID);
++#else
++ dbus_g_proxy_call (power->priv->proxy_logind, sleep_time, &error,
++ G_TYPE_BOOLEAN, TRUE,
++ G_TYPE_INVALID,
++ G_TYPE_INVALID);
++#endif
+
+ if ( error )
+ {
+@@ -1360,12 +1402,20 @@ xfpm_power_init (XfpmPower *power)
+ UPOWER_NAME,
+ UPOWER_PATH,
+ DBUS_INTERFACE_PROPERTIES);
++
+ if (power->priv->proxy_prop == NULL)
+ {
+ g_critical ("Unable to create proxy for %s", UPOWER_NAME);
+ goto out;
+ }
+
++#ifndef WITH_SLEEP_MANAGER_UPOWER
++ power->priv->proxy_logind = dbus_g_proxy_new_for_name (power->priv->bus,
++ LOGIND_NAME,
++ LOGIND_PATH,
++ LOGIND_IFACE);
++#endif
++
+ xfpm_power_get_power_devices (power);
+ xfpm_power_get_properties (power);
+ #ifdef ENABLE_POLKIT
+@@ -1467,6 +1517,11 @@ xfpm_power_finalize (GObject *object)
+ if ( power->priv->proxy_prop )
+ g_object_unref (power->priv->proxy_prop);
+
++#ifndef WITH_SLEEP_MANAGER_UPOWER
++ if ( power->priv->proxy_logind )
++ g_object_unref (power->priv->proxy_logind);
++#endif
++
+ g_hash_table_destroy (power->priv->hash);
+
+ #ifdef ENABLE_POLKIT
+--
+1.8.1.5
+