mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-08-17 23:55:04 +00:00
shadow_framebuffer records what the panel is currently showing, but both refresh paths updated it before the refresh was confirmed, so a failed trigger or a BUSY timeout left it describing content that was never displayed. That misdescription compounds: the shadow is sent to the controller as CMD_DATA_START_OLD, so the per-pixel transitions get computed from an image the panel never held, and draw_bitmap() diffs against it, so a region matching a wrong shadow is treated as clean and never repainted. Both paths now commit only after wait_while_busy() confirms. refresh_full() also sends new data straight from the render buffer, which drops a full-framebuffer copy from the path.