diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2021-11-18 00:10:49 +1100 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2021-11-19 15:37:06 +1100 |
commit | 841eeb158e1d43ba34e4ee629143e10a2c4505ff (patch) | |
tree | abaa74dd349e46ee584206690983d03b91feb8f7 /drivers/neopixel/neopixel.py | |
parent | 172a031dff5b767be0accc9ae4810c1f897d3dde (diff) | |
download | micropython-841eeb158e1d43ba34e4ee629143e10a2c4505ff.tar.gz micropython-841eeb158e1d43ba34e4ee629143e10a2c4505ff.zip |
drivers/neopixel: Avoid heap alloc in fill().
Previously the use of `range(start,stop,step)` caused an allocation.
Replace with while loop.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'drivers/neopixel/neopixel.py')
-rw-r--r-- | drivers/neopixel/neopixel.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/neopixel/neopixel.py b/drivers/neopixel/neopixel.py index 0032d36183..caa12dc845 100644 --- a/drivers/neopixel/neopixel.py +++ b/drivers/neopixel/neopixel.py @@ -36,10 +36,14 @@ class NeoPixel: def fill(self, v): b = self.buf - for i in range(self.bpp): + l = len(self.buf) + bpp = self.bpp + for i in range(bpp): c = v[i] - for j in range(self.ORDER[i], len(self.buf), self.bpp): + j = self.ORDER[i] + while j < l: b[j] = c + j += bpp def write(self): # BITSTREAM_TYPE_HIGH_LOW = 0 |