listener: fix device registration logic

The "already_known" var actually doesn't track if the device was
already registered or not.

That causes race issues at Solaar, causing it to sometimes not
detect a device.

Change the logic to always call register_new_device if the
corresponding events happen, and updating already_known
to reflect it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Mauro Carvalho Chehab 2017-09-11 09:42:44 -03:00
parent ea80c6d639
commit a4b7194490
1 changed files with 3 additions and 1 deletions

View File

@ -183,7 +183,9 @@ class ReceiverListener(_listener.EventsListener):
# a device notification
assert n.devnumber > 0 and n.devnumber <= self.receiver.max_devices
already_known = n.devnumber in self.receiver
if not already_known and n.sub_id == 0x41:
if n.sub_id == 0x41:
already_known = False
dev = self.receiver.register_new_device(n.devnumber, n)
else:
dev = self.receiver[n.devnumber]