From ac37ec26bc1ead2aa77571ab64e79c8d9f07ea2d Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Wed, 21 Sep 2016 00:09:41 +0100 Subject: [PATCH] Refactor GPIOQueue.fill() squash the two while loops down into one --- gpiozero/mixins.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/gpiozero/mixins.py b/gpiozero/mixins.py index 069b6da..a2e390e 100644 --- a/gpiozero/mixins.py +++ b/gpiozero/mixins.py @@ -493,15 +493,11 @@ class GPIOQueue(GPIOThread): def fill(self): try: - while (not self.stopping.wait(self.sample_wait) and - len(self.queue) < self.queue.maxlen): - self.queue.append(self.parent._read()) - if self.partial and isinstance(self.parent, EventsMixin): - self.parent._fire_events() - self.full.set() while not self.stopping.wait(self.sample_wait): self.queue.append(self.parent._read()) - if isinstance(self.parent, EventsMixin): + if not self.full.is_set() and len(self.queue) >= self.queue.maxlen: + self.full.set() + if (self.partial or self.full.is_set()) and isinstance(self.parent, EventsMixin): self.parent._fire_events() except ReferenceError: # Parent is dead; time to die!