From 104cf8d905d96bf8ed33a033cd800c22eb90c4cc Mon Sep 17 00:00:00 2001 From: liquidraver <504870+liquidraver@users.noreply.github.com> Date: Thu, 18 Jun 2026 07:33:41 +0200 Subject: [PATCH] fix smearing on eink after full update --- zephcore/helpers/ui/display.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/zephcore/helpers/ui/display.c b/zephcore/helpers/ui/display.c index 44e9346..bf7da8c 100644 --- a/zephcore/helpers/ui/display.c +++ b/zephcore/helpers/ui/display.c @@ -529,6 +529,15 @@ void mc_display_finalize(void) display_blanking_on(disp_dev); cfb_framebuffer_finalize(disp_dev); display_blanking_off(disp_dev); + + /* Prime the partial-refresh reference frame. After a full + * refresh the SSD1681's "old frame" RAM is stale, so the first + * partial diff produces a wrong delta and the partial waveform + * smears static regions (e.g. the top bar). One extra partial + * finalize with the same content lets the controller record the + * post-full-refresh state as its reference; it's a visual no-op + * (zero-diff → no pixel transitions) but fixes subsequent diffs. */ + cfb_framebuffer_finalize(disp_dev); epd_partial_count = 0; } else { cfb_framebuffer_finalize(disp_dev);