From 64c91776045093a7a46538aa3899a1709c44568a Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sun, 23 Nov 2025 15:21:36 +0100 Subject: [PATCH] use partial draw --- src/dreader_hal/display/it8951.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/dreader_hal/display/it8951.py b/src/dreader_hal/display/it8951.py index 504a4fe..aceb0d2 100644 --- a/src/dreader_hal/display/it8951.py +++ b/src/dreader_hal/display/it8951.py @@ -176,8 +176,8 @@ class IT8951DisplayDriver: # Prepare image for e-ink prepared_image = self._prepare_image(image) - # Update frame buffer - self.display.frame_buf = prepared_image + # Update frame buffer using paste (more reliable than direct assignment) + self.display.frame_buf.paste(prepared_image, (0, 0)) # Increment refresh counter self._refresh_count += 1 @@ -316,9 +316,15 @@ class IT8951DisplayDriver: if hasattr(self.display, 'epd') and self.auto_sleep: self.display.epd.run() - # Use partial update for efficiency - # IT8951 library tracks what changed and only updates that region - self.display.draw_partial(display_mode) + # Use full refresh for INIT mode (clears ghosting) or first few refreshes + # Use partial refresh for fast updates + if display_mode == DisplayModes.INIT or self._refresh_count <= 2: + # Full refresh - more reliable for initial displays + self.display.draw_full(display_mode) + else: + # Partial update for efficiency + # IT8951 library tracks what changed and only updates that region + self.display.draw_partial(display_mode) async def set_brightness(self, level: int) -> None: """