mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
fix(display): Vegas resumes after live priority, and six smaller runtime fixes (#644)
- Vegas: a live-priority pause was only lifted from inside run_frame(), which returns before that check while paused, so the ticker never came back until a restart. run_iteration() now resumes it (the controller only calls it when nothing preempts Vegas); start()/stop() clear the pause state. Iteration length is timed with the monotonic clock. - Dim schedule: a per-day disabled day now updates the minute-gate cache, so brightness no longer flips back to dim within each minute. - On-demand: a second request no longer overwrites the rotation resume index with the first request's mode. - Render pipeline: reset() drops the prepared group and deferred queue, and a prefetch in flight across a reset discards its result. - Sync: stop() removes the status file (and the controller's cleanup now calls it), standalone removes a stale one at startup, and writes use a unique mkstemp temp file. - render_gate.swap_releases_gil() delegates to frame_timing. - Stale docstrings/comments corrected. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -254,6 +254,27 @@ class TestDimSchedule:
|
||||
assert dim_at(dc, "23:00", day="tuesday") == 90 # day disabled
|
||||
assert dc.is_dimmed is False
|
||||
|
||||
def test_disabled_day_stays_normal_within_the_minute(self):
|
||||
# Dim late Monday, then Tuesday (dimming disabled) begins. The second
|
||||
# call in the same minute is served from the minute-gate cache, which
|
||||
# the disabled-day branch used to leave holding Monday's dim value --
|
||||
# so brightness flipped back to dim for the rest of every minute.
|
||||
dc = make_controller(self._config(mode="per-day", days={
|
||||
"monday": {"enabled": True, "start_time": "22:00",
|
||||
"end_time": "06:00"},
|
||||
"tuesday": {"enabled": False},
|
||||
}))
|
||||
assert dim_at(dc, "23:59", day="monday") == 25
|
||||
dc._dim_checked_minute = None
|
||||
p = at("00:00", day="tuesday")
|
||||
try:
|
||||
assert dc._check_dim_schedule() == 90
|
||||
assert dc._check_dim_schedule() == 90 # cached, same minute
|
||||
finally:
|
||||
p.stop()
|
||||
assert dc.is_dimmed is False
|
||||
assert dc._was_dimmed is False
|
||||
|
||||
def test_no_legacy_inference_for_dim(self):
|
||||
# Unlike _check_schedule, dim mode defaults to GLOBAL even when a
|
||||
# days config exists — no legacy inference.
|
||||
|
||||
Reference in New Issue
Block a user