Ticket #1774: 0001-Let-power-control-panel-auto-adapt-to-whether-powerd.patch

File 0001-Let-power-control-panel-auto-adapt-to-whether-powerd.patch, 1.8 KB (added by sayamindu, 14 years ago)

Patch

  • extensions/cpsection/power/model.py

    diff --git a/extensions/cpsection/power/model.py b/extensions/cpsection/power/model.py
    index c76035d..33ec905 100644
    a b  
    1717
    1818from gettext import gettext as _
    1919import gconf
    20 
    2120import dbus
     21import os
     22import logging
    2223
    2324OHM_SERVICE_NAME = 'org.freedesktop.ohm'
    2425OHM_SERVICE_PATH = '/org/freedesktop/ohm/Keystore'
    2526OHM_SERVICE_IFACE = 'org.freedesktop.ohm.Keystore'
    2627
     28POWERD_FLAG_DIR = '/etc/powerd/flags'
     29POWERD_INHIBIT_FLAG = '/etc/powerd/flags/inhibit-suspend'
     30
     31_logger = logging.getLogger('ControlPanel - Power')
     32
     33
    2734class ReadError(Exception):
    2835    def __init__(self, value):
    2936        self.value = value
    3037    def __str__(self):
    3138        return repr(self.value)
    3239
     40def using_powerd():
     41    # directory exists if powerd running, and it's recent
     42    # enough to be controllable.
     43    return os.access(POWERD_FLAG_DIR, os.W_OK)
     44
    3345def get_automatic_pm():
     46    if using_powerd():
     47        return not os.access(POWERD_INHIBIT_FLAG, os.R_OK)
     48
     49    # ohmd
    3450    client = gconf.client_get_default()
    3551    return client.get_bool('/desktop/sugar/power/automatic')
    3652
    def print_automatic_pm(): 
    4056def set_automatic_pm(enabled):
    4157    """Automatic suspends on/off."""
    4258
     59    if using_powerd():
     60        # powerd
     61        if enabled == 'off' or enabled == 0:
     62            try:
     63                fd = open(POWERD_INHIBIT_FLAG, 'w')
     64            except IOError:
     65                _logger.debug('File %s is not writeable' % POWERD_INHIBIT_FLAG)
     66            else:
     67                fd.close()
     68        else:
     69            os.unlink(POWERD_INHIBIT_FLAG)
     70        return 0
     71
     72    # ohmd
    4373    bus = dbus.SystemBus()
    4474    proxy = bus.get_object(OHM_SERVICE_NAME, OHM_SERVICE_PATH)
    4575    keystore = dbus.Interface(proxy, OHM_SERVICE_IFACE)