Ensure SourceMixin descendents shut down the source prior to closing.
Furthermore, make sure devices are closed before pin factory shuts down,
and that pins have a strong reference to their owning factory (to
prevent losing the factory before the pins).
This commit is contained in:
Dave Jones
2017-06-19 22:22:39 +01:00
parent ab73e857fd
commit bcc94354ea
4 changed files with 25 additions and 4 deletions

View File

@@ -9,10 +9,10 @@ str = type('')
import io
from threading import RLock
from types import MethodType
from weakref import ref, proxy
try:
from weakref import WeakMethod
from weakref import ref, WeakMethod
except ImportError:
from ..compat import WeakMethod
import warnings
@@ -216,7 +216,7 @@ class PiPin(Pin):
"""
def __init__(self, factory, number):
super(PiPin, self).__init__()
self._factory = proxy(factory)
self._factory = factory
self._when_changed_lock = RLock()
self._when_changed = None
self._number = number