From 89995656cd760f44b87acc2f403084b00858bca9 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Thu, 28 May 2020 13:46:54 -0400 Subject: [PATCH] receiver: only check for device features once per device --- lib/logitech_receiver/receiver.py | 5 +++-- lib/logitech_receiver/settings_templates.py | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/logitech_receiver/receiver.py b/lib/logitech_receiver/receiver.py index dcc3c35e..a7f30528 100644 --- a/lib/logitech_receiver/receiver.py +++ b/lib/logitech_receiver/receiver.py @@ -71,6 +71,7 @@ class PairedDevice(object): self._keys = None self._registers = None self._settings = None + self._feature_settings_checked = False # Misc stuff that's irrelevant to any functionality, but may be # displayed in the UI and caching it here helps. @@ -251,8 +252,8 @@ class PairedDevice(object): self._settings = [s(self) for s in self.descriptor.settings] else: self._settings = [] - - _check_feature_settings(self, self._settings) + if not self._feature_settings_checked: + self._feature_settings_checked =_check_feature_settings(self, self._settings) return self._settings def enable_notifications(self, enable=True): diff --git a/lib/logitech_receiver/settings_templates.py b/lib/logitech_receiver/settings_templates.py index 4dc193b4..677bcbd6 100644 --- a/lib/logitech_receiver/settings_templates.py +++ b/lib/logitech_receiver/settings_templates.py @@ -371,12 +371,13 @@ del _SETTINGS_LIST # # +# Returns True if device was queried to find features, False otherwise def check_feature_settings(device, already_known): """Try to auto-detect device settings by the HID++ 2.0 features they have.""" if device.features is None or not device.online: - return + return False if device.protocol and device.protocol < 2.0: - return + return False def check_feature(name, featureId, field_name=None): """ @@ -414,3 +415,4 @@ def check_feature_settings(device, already_known): check_feature(_POINTER_SPEED[0], _F.POINTER_SPEED) check_feature(_SMART_SHIFT[0], _F.SMART_SHIFT) check_feature(_BACKLIGHT[0], _F.BACKLIGHT2) + return True