Recover a crash-interrupted dim, fade dim entry, and name dimming on the Protection pane - #90
Merged
Merged
Conversation
…the Protection pane A crash or force-quit while a lock dim was engaged left a display's DDC register dimmed with the slider showing full brightness, and on a write-only display nothing could tell. A per-display marker is now written before the dim's first submit and cleared after the restoring one; at the next launch a surviving marker runs the restore pass's own memo reset and reassert, gated on Safe Mode directly. The launch readback holds off while a marker stands, because on a display that answers reads it would otherwise import the dim as the user's value. The startup caption names the one exception it makes. Idle dim and blackout entries now fade in over about 400 milliseconds on the overlay's content view; every decrease and every removal still lands in one write, so restore timing is unchanged. A nudge from the care loop's verify pass declines while a fade toward the same state is in flight, bounded in time so a completion that never arrives cannot park the loop, and the declined nudge counts as settling rather than a mismatch. The Protection pane opens with a Dimming row that reveals OLED Care and says how many displays are enrolled, or Paused while Safe Mode holds the care loop, with one sentence on what the other half of the pillar does.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #53.
What changed
Crash recovery for the temporary dim. A crash or force-quit while a lock dim was engaged left a display's DDC register dimmed with the slider showing full brightness, and on a write-only display nothing could tell. A per-display marker is now written before the dim's first submit and cleared after the restoring one. At the next launch a surviving marker runs the restore pass's own memo reset and reassert for that display, gated on Safe Mode directly. The launch readback holds off while a marker stands, because on a display that answers reads it would otherwise import the dim as the user's value and overwrite the store the recovery needs. The startup caption for "Trust the last saved values" now names this one exception.
Entry fade. Idle dim and blackout entries fade in over about 400 milliseconds on the overlay's content view. Every decrease and every removal still lands in one write, so restore timing is unchanged, and the lock dim's ramp is untouched. A nudge from the care loop's verify pass declines while a fade toward the same state is in flight, bounded in time so a completion that never arrives cannot park the loop, and a declined nudge counts as settling rather than a mismatch. The blackout's click swallow deliberately leads the pixels.
Protection pane. The pane opens with a Dimming row that reveals OLED Care and says how many displays are enrolled, or Paused while Safe Mode holds the care loop, with one sentence on what the other half of the pillar does.
Shared display identities. Recovery snapshots the interrupted-dim markers before processing any display. Displays sharing one saved identity all receive recovery; the shared marker is cleared only after the whole group is considered, and remains set if a member is still dimming. Regression tests cover both discovery orders.
Scope limits, recorded on purpose
Hardware verification
Verified locally with the Dell U2725QE and MSI MAG 341C OLED on a signed Release build combining the five pending fixes.
The shared-identity regression failed before the fix and passed afterward. The final combined build passed 2,632 engine tests and 762 app tests, plus the Release marker gate. Required CI checks passed on this branch, and independent review found no actionable issues. The physical crash and clean-quit checks preceded the shared-identity fix and used two distinct panel identities.