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: """