From 2ab1209bba515c44fb5521d0ca2cc575229f20cb Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Wed, 16 Sep 2020 10:17:47 -0600 Subject: [PATCH] Optimized library to only draw changed pixels --- adafruit_pixel_framebuf.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/adafruit_pixel_framebuf.py b/adafruit_pixel_framebuf.py index 2096090..4da9be9 100755 --- a/adafruit_pixel_framebuf.py +++ b/adafruit_pixel_framebuf.py @@ -85,6 +85,7 @@ def __init__( ) self._buffer = bytearray(width * height * 3) + self._double_buffer = bytearray(width * height * 3) super().__init__( self._buffer, width, height, buf_format=adafruit_framebuf.RGB888 ) @@ -99,5 +100,12 @@ def display(self): for _y in range(self._height): for _x in range(self._width): index = (_y * self.stride + _x) * 3 - self._grid[(_x, _y)] = tuple(self._buffer[index : index + 3]) + if ( + self._buffer[index : index + 3] + != self._double_buffer[index : index + 3] + ): + self._grid[(_x, _y)] = tuple(self._buffer[index : index + 3]) + self._double_buffer[index : index + 3] = self._buffer[ + index : index + 3 + ] self._grid.show()