mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
fix(display): end the scroll before the schedule-off blank and WiFi notice (#721)
The schedule-off blank and the WiFi notice are drawn by the display controller, not dispatched to a plugin, so #716's handover never reached them. Drawn while the last scroll's state was still set, the blank went out with the ticker's lagging rows on a scan-compensated panel and stayed up for its 60 s dwell, and the notice's redraws (which #712 now shows over a running scroller or Vegas) were timed as 0.5-1 s freezes and logged as a mid-scroll Render stall. The controller now calls set_scrolling_state(False) before drawing either; a scroller that resumes sets the state again on its next frame. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+10
-17
@@ -554,24 +554,17 @@ its first `display()`, so the frames that call presents go out as drawn, in one
|
||||
swap each, instead of with the lagging half taken from the scroller's last
|
||||
frame.
|
||||
|
||||
Other screens that follow a scroll still are, while the scroll state lasts (it
|
||||
expires 2 s after the scroller's last frame). Their first frame takes its
|
||||
lagging half from the scroller's last frame: for one refresh after a held
|
||||
scroll, and after a scroll at one frame per refresh until the next frame
|
||||
replaces it. They are:
|
||||
The controller's own screens -- the blank shown when the schedule turns the
|
||||
panel off, and the WiFi status message -- end the scroll state before they are
|
||||
drawn, so they go out as drawn and are timed as static frames, not as freezes
|
||||
of the old scroll. A scroller that resumes after a WiFi notice sets the state
|
||||
again on its next frame.
|
||||
|
||||
- the blank shown when the schedule turns the panel off. It is redrawn once a
|
||||
minute while the panel is off, so half of the scroller's last frame can stay
|
||||
lit for up to 60 s;
|
||||
- the WiFi status message, until the next pass half a second later;
|
||||
- a screen that runs the high-FPS loop without scrolling (an older
|
||||
`static-image`, which is forced into it), until its next frame.
|
||||
|
||||
The frame stats still time those two as frames of the old scroll: a WiFi
|
||||
notice that preempts a scroller records up to three 0.5-1 s freezes, and the
|
||||
schedule-off blank a `Render stall ... mid-scroll`. Ending the scroll state
|
||||
before the schedule-off blank and the WiFi message is a follow-up, the
|
||||
schedule-off blank first.
|
||||
One screen that follows a scroll is still composed while the scroll state lasts
|
||||
(it expires 2 s after the scroller's last frame): a screen that runs the
|
||||
high-FPS loop without scrolling (an older `static-image`, which is forced into
|
||||
it). Its first frame takes its lagging half from the scroller's last frame, for
|
||||
one refresh after a held scroll and otherwise until its next frame.
|
||||
|
||||
Checked on hdpi (4×128×64 on one chain, rotated 180, 2026-09-24) before it was
|
||||
written: `scan_mode: 1` (interlaced) made the step vanish but turned moving
|
||||
|
||||
Reference in New Issue
Block a user