diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | activity/activity.info | 2 | ||||
-rw-r--r-- | powerd.py | 51 | ||||
-rw-r--r-- | stopwatch.py | 5 |
4 files changed, 60 insertions, 1 deletions
@@ -0,0 +1,3 @@ +5 + +*Adding new toolbar compatibility, stopbutton diff --git a/activity/activity.info b/activity/activity.info index 51827ac..89b30df 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -3,5 +3,5 @@ name = StopWatch bundle_id = org.laptop.StopWatchActivity class = activity.StopWatchActivity icon = activity-stopwatch -activity_version = 4 +activity_version = 5 show_launcher = yes diff --git a/powerd.py b/powerd.py new file mode 100644 index 0000000..88b4e84 --- /dev/null +++ b/powerd.py @@ -0,0 +1,51 @@ +# Copyright (C) 2011 One Laptop per Child +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty ofwa +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import os + + +def marker(): + """ filesystem path of per-process inhibit file """ + return os.path.join('/var/run/powerd-inhibit-suspend', str(os.getpid())) + + +class Suspend(): + """ control of powerd idle suspend, + reference counted, + does nothing if powerd is not present """ + + def __init__(self): + self.references = 0 + + def inhibit(self): + """ inhibit suspend for this process """ + if self.references == 0: + try: + file(marker(), 'w').write('') + except: + return + self.references += 1 + + def uninhibit(self): + """ uninhibit suspend for this process """ + self.references -= 1 + if self.references > 0: + return + try: + os.remove(marker()) + except: + pass + self.references = 0 diff --git a/stopwatch.py b/stopwatch.py index 4ae43dd..d24f0e3 100644 --- a/stopwatch.py +++ b/stopwatch.py @@ -26,6 +26,9 @@ import threading import locale import pango from gettext import gettext +import powerd + +suspend = powerd.Suspend() class WatchModel(): STATE_PAUSED = 1 @@ -316,8 +319,10 @@ class OneWatchView(): self._logger.debug("run button pressed: " + str(t)) if self._run_button.get_active(): #button has _just_ been set active action = WatchModel.RUN_EVENT + suspend.inhibit() else: action = WatchModel.PAUSE_EVENT + suspend.uninhibit() self._watch_model.add_event_from_view((self._timer.get_offset() + t, action)) return True |