On commodity hardware without olpc-powerd, there is unnecessary
filesystem access.
On XO laptop hardware there are unnecessary errors in log for every
object delete:
ERROR root: Inhibit Suspend: Could not delete file
/var/run/powerd-inhibit-suspend/1773
Exception AttributeError: "'NoneType' object has no attribute
'endswith'" in <bound method PowerManager.__del__ of
<sugar3.power.PowerManager instance at 0xa15962c>> ignored
The Clock activity in speaking mode is a good reproducer.
Following changes are made:
- move the directory check to __init__, and set self._path to None if
olpc-powerd is not present,
- on inhibit_suspend, use self._path, which avoids a check of the
directory,
- on restore_suspend or __del__, avoid a call to os.unlink if
olpc-powerd is not present.
In some network environments, suspend/reume can make loose
messages and break collaboration. This patch inhibit suspend
when collaboration start. The implementation can be used by activities
or Sugar to inhibit suspend/resume when needed.
More information in http://dev.laptop.org/ticket/10363
Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>