From d3c55d25a4455e5da4d834aece3549d6c511e2dd Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sat, 22 Oct 2016 16:02:27 +0100 Subject: [PATCH] Tidying up... Dunno how many commits this PR is now! --- gpiozero/output_devices.py | 8 ++------ gpiozero/pins/pi.py | 24 +++++++++++------------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/gpiozero/output_devices.py b/gpiozero/output_devices.py index 9c24ba6..b570f3b 100644 --- a/gpiozero/output_devices.py +++ b/gpiozero/output_devices.py @@ -562,12 +562,8 @@ class RGBLED(SourceMixin, Device): raise GPIOPinMissing('red, green, and blue pins must be provided') LEDClass = PWMLED if pwm else LED super(RGBLED, self).__init__() - try: - self._leds = tuple(LEDClass(pin, active_high) for pin in (red, green, blue)) - self.value = initial_value - except: - self.close() - raise + self._leds = tuple(LEDClass(pin, active_high) for pin in (red, green, blue)) + self.value = initial_value red = _led_property(0) green = _led_property(1) diff --git a/gpiozero/pins/pi.py b/gpiozero/pins/pi.py index 3df6ec9..b5f11ef 100644 --- a/gpiozero/pins/pi.py +++ b/gpiozero/pins/pi.py @@ -224,24 +224,22 @@ class PiPin(Pin): return self._when_changed def _set_when_changed(self, value): - # Have to take care, if value is either a closure or a bound method, - # not to keep a strong reference to the containing object with self._when_changed_lock: - if self._when_changed is None and value is not None: + if value is None: + if self._when_changed is not None: + self._disable_event_detect() + self._when_changed = None + else: + enabled = self._when_changed is not None + # Have to take care, if value is either a closure or a bound + # method, not to keep a strong reference to the containing + # object if isinstance(value, MethodType): self._when_changed = WeakMethod(value) else: self._when_changed = ref(value) - self._enable_event_detect() - elif self._when_changed is not None and value is None: - self._disable_event_detect() - self._when_changed = None - elif value is None: - self._when_changed = None - elif isinstance(value, MethodType): - self._when_changed = WeakMethod(value) - else: - self._when_changed = ref(value) + if not enabled: + self._enable_event_detect() def _enable_event_detect(self): raise NotImplementedError