Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sugar/activity/activity.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/sugar/activity/activity.py b/src/sugar/activity/activity.py
index 4938caf..0070210 100644
--- a/src/sugar/activity/activity.py
+++ b/src/sugar/activity/activity.py
@@ -97,6 +97,8 @@ J_DBUS_SERVICE = 'org.laptop.Journal'
J_DBUS_PATH = '/org/laptop/Journal'
J_DBUS_INTERFACE = 'org.laptop.Journal'
+POWERD_INHIBIT_DIR = '/var/run/powerd-inhibit-suspend'
+
CONN_INTERFACE_ACTIVITY_PROPERTIES = 'org.laptop.Telepathy.ActivityProperties'
@@ -713,6 +715,18 @@ class Activity(Window, gtk.Container):
else:
self._jobject.metadata['share-scope'] = SCOPE_NEIGHBORHOOD
+ def _inhibit_suspend(self):
+ if not os.path.exists(POWERD_INHIBIT_DIR):
+ return
+
+ path = os.path.join(POWERD_INHIBIT_DIR, str(os.getpid()))
+ try:
+ fd = open(path, 'w')
+ except IOError:
+ logging.error("Inhibit Suspend: Could not create file %s", path)
+ else:
+ fd.close()
+
def __joined_cb(self, activity, success, err):
"""Callback when join has finished"""
logging.debug('Activity.__joined_cb %r', success)
@@ -722,6 +736,8 @@ class Activity(Window, gtk.Container):
logging.debug('Failed to join activity: %s', err)
return
+ self._inhibit_suspend()
+
self.reveal()
self.emit('joined')
self.__privacy_changed_cb(self.shared_activity, None)
@@ -750,6 +766,8 @@ class Activity(Window, gtk.Container):
activity.props.name = self._jobject.metadata['title']
+ self._inhibit_suspend()
+
self.shared_activity = activity
self.shared_activity.connect('notify::private',
self.__privacy_changed_cb)
@@ -864,6 +882,11 @@ class Activity(Window, gtk.Container):
# Make the exported object inaccessible
dbus.service.Object.remove_from_connection(self._bus)
+ if os.path.exists(POWERD_INHIBIT_DIR):
+ path = os.path.join(POWERD_INHIBIT_DIR, str(os.getpid()))
+ if os.path.exists(path):
+ os.unlink(path)
+
self._session.unregister(self)
def close(self, skip_save=False):