220 self.__lock=threading.Lock() |
222 self.__lock=threading.Lock() |
221 self.__callbacks=weakref.WeakKeyDictionary() |
223 self.__callbacks=weakref.WeakKeyDictionary() |
222 |
224 |
223 return self |
225 return self |
224 |
226 |
|
227 @protect_noreturn |
225 def handleSleepNotification_(self, aNotification): |
228 def handleSleepNotification_(self, aNotification): |
226 logger.info("System going to sleep") |
229 logger.info("System going to sleep") |
227 try: |
230 now=time.monotonic() |
228 now=time.monotonic() |
231 with self.__lock: |
229 with self.__lock: |
232 self.__sleeptime=now |
230 self.__sleeptime=now |
233 callbacks=self.__callbacks.copy() |
231 callbacks=self.__callbacks.copy() |
234 do_callbacks(callbacks, False) |
232 do_callbacks(callbacks, False) |
235 |
233 except: |
236 @protect_noreturn |
234 logger.exception("Bug in sleep handler") |
|
235 |
|
236 def handleWakeNotification_(self, aNotification): |
237 def handleWakeNotification_(self, aNotification): |
237 logger.info("System waking up from sleep") |
238 logger.info("System waking up from sleep") |
238 try: |
239 now=time.monotonic() |
239 now=time.monotonic() |
240 with self.__lock: |
240 with self.__lock: |
241 if self.__sleeptime: |
241 if self.__sleeptime: |
242 slept=max(0, now-self.__sleeptime) |
242 slept=max(0, now-self.__sleeptime) |
243 logger.info("Slept %f seconds" % slept) |
243 logger.info("Slept %f seconds" % slept) |
244 self.__slept=self.__slept+slept |
244 self.__slept=self.__slept+slept |
245 self.__sleeptime=None |
245 self.__sleeptime=None |
246 callbacks=self.__callbacks.copy() |
246 callbacks=self.__callbacks.copy() |
247 do_callbacks(callbacks, True) |
247 do_callbacks(callbacks, True) |
|
248 except: |
|
249 logger.exception("Bug in wakeup handler") |
|
250 |
248 |
251 # Return dreamtime |
249 # Return dreamtime |
252 def dreamtime_sleeping(self, snapshot=Snapshot()): |
250 def dreamtime_sleeping(self, snapshot=Snapshot()): |
253 sleeping=False |
251 sleeping=False |
254 with self.__lock: |
252 with self.__lock: |