Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2010-03-09 22:42:21 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2010-03-09 22:42:21 (GMT)
commit5363b33ed684a46e5af0e3af3a7d37c7900c97c7 (patch)
tree9d36c58cb76755e5d61250500432263574e3aaae
parentbf0574da46f8f480711772c10c26845ea1f97b6c (diff)
parentfb2b76a90d350e0774ce878b3206cbf9c19a7bea (diff)
Merge branch 'master' of git.sugarlabs.org:sugar/mainline
-rw-r--r--extensions/cpsection/power/model.py35
1 files changed, 33 insertions, 2 deletions
diff --git a/extensions/cpsection/power/model.py b/extensions/cpsection/power/model.py
index c76035d..48d05de 100644
--- a/extensions/cpsection/power/model.py
+++ b/extensions/cpsection/power/model.py
@@ -15,22 +15,39 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
+import os
from gettext import gettext as _
-import gconf
+import logging
+import gconf
import dbus
OHM_SERVICE_NAME = 'org.freedesktop.ohm'
OHM_SERVICE_PATH = '/org/freedesktop/ohm/Keystore'
OHM_SERVICE_IFACE = 'org.freedesktop.ohm.Keystore'
+POWERD_FLAG_DIR = '/etc/powerd/flags'
+POWERD_INHIBIT_FLAG = '/etc/powerd/flags/inhibit-suspend'
+
+_logger = logging.getLogger('ControlPanel - Power')
+
+
class ReadError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
+def using_powerd():
+ # directory exists if powerd running, and it's recent
+ # enough to be controllable.
+ return os.access(POWERD_FLAG_DIR, os.W_OK)
+
def get_automatic_pm():
+ if using_powerd():
+ return not os.access(POWERD_INHIBIT_FLAG, os.R_OK)
+
+ # ohmd
client = gconf.client_get_default()
return client.get_bool('/desktop/sugar/power/automatic')
@@ -40,6 +57,20 @@ def print_automatic_pm():
def set_automatic_pm(enabled):
"""Automatic suspends on/off."""
+ if using_powerd():
+ # powerd
+ if enabled == 'off' or enabled == 0:
+ try:
+ fd = open(POWERD_INHIBIT_FLAG, 'w')
+ except IOError:
+ _logger.debug('File %s is not writeable' % POWERD_INHIBIT_FLAG)
+ else:
+ fd.close()
+ else:
+ os.unlink(POWERD_INHIBIT_FLAG)
+ return
+
+ # ohmd
bus = dbus.SystemBus()
proxy = bus.get_object(OHM_SERVICE_NAME, OHM_SERVICE_PATH)
keystore = dbus.Interface(proxy, OHM_SERVICE_IFACE)
@@ -55,7 +86,7 @@ def set_automatic_pm(enabled):
client = gconf.client_get_default()
client.set_bool('/desktop/sugar/power/automatic', enabled)
- return 0
+ return
def get_extreme_pm():
client = gconf.client_get_default()