fixed possible dangling weakrefs on start-up

This commit is contained in:
Daniel Pavel 2012-12-03 12:38:05 +02:00
parent 3fe9caf0e6
commit 116ba72f37
6 changed files with 11 additions and 8 deletions

View File

@ -74,7 +74,7 @@ class ReceiverListener(_listener.EventsListener):
self.receiver.enable_notifications(False)
self.receiver.close()
self.receiver = None
self._status_changed(None, alert=_status.ALERT.LOW)
self._status_changed(None, _status.ALERT.LOW)
def tick(self, timestamp):
if _log.isEnabledFor(_DEBUG):
@ -137,7 +137,7 @@ class ReceiverListener(_listener.EventsListener):
_log.warn("received event %s for invalid device %d", event, event.devnumber)
def __str__(self):
return '<ReceiverListener(%s,%d)>' % (self.receiver.path, self.receiver.status)
return '<ReceiverListener(%s,%s)>' % (self.receiver.path, self.receiver.handle)
@classmethod
def open(self, status_changed_callback=None):

View File

@ -87,7 +87,7 @@ def _print_receiver(receiver, short=True):
else:
print (" All notifications disabled.")
print (" Reported %d paired device(s)." % len(receiver))
print (" Reported %d paired device(s)." % receiver.count())
activity = receiver.request(0x83B3)
if activity:
activity = [(d, ord(activity[d - 1:d])) for d in range(1, receiver.max_devices)]

View File

@ -61,7 +61,7 @@ def _icon_with_battery(s):
return _PIXMAPS[name]
def update(icon, receiver, device=None):
# print ("icon update", receiver, receiver.status, len(receiver._devices), device)
# print ("icon update", receiver, receiver.status, len(receiver), device)
battery_status = None
if device:

View File

@ -16,7 +16,7 @@ def print_receiver(receiver):
else:
print (" All notifications disabled.")
print (" Reported %d paired device(s)." % len(receiver))
print (" Reported %d paired device(s)." % receiver.count())
activity = receiver.request(0x83B3)
if activity:
activity = [(d, ord(activity[d - 1:d])) for d in range(1, receiver.max_devices)]

View File

@ -236,6 +236,10 @@ class Receiver(object):
return True
_log.warn("failed to %s the receiver lock", 'close' if lock_closed else 'open')
def count(self):
count = self.request(0x8102)
return 0 if count is None else ord(count[1:2])
def request(self, request_id, *params):
if self.handle:
return _base.request(self.handle, 0xFF, request_id, *params)
@ -278,8 +282,7 @@ class Receiver(object):
raise IndexError(key)
def __len__(self):
count = self.request(0x8102)
return 0 if count is None else ord(count[1:2])
return reduce(lambda partial, item: partial if item is None else partial + 1, self._devices.values(), 0)
def __contains__(self, dev):
if type(dev) == int:

View File

@ -49,7 +49,7 @@ class ReceiverStatus(dict):
self[ERROR] = None
def __str__(self):
count = len([1 for d in self._receiver if d is not None])
count = len(self._receiver)
return ('No devices found.' if count == 0 else
'1 device found.' if count == 1 else
'%d devices found.' % count)