Repository navigation
Keep the disconnect record right when a display change lands after its timeout - #219
Merged
Merged
Conversation
…s timeout setEnabled stops waiting for CGCompleteDisplayConfiguration after 10 s, but the commit can still land later (#33 saw 29.5 s). A user disconnect that timed out stored no record, so a late landing left the display dark with no Reconnect row and no blackout rescue. A reconnect that timed out kept its record, so a late landing met that record in reconcile and was switched straight back off. Both now keep the record and watch the display for 30 s, with reconcile leaving it alone meanwhile, and enumeration decides. The DDC hold is now released when the transaction returns, not when the wrapper gives up, so DDC stays parked under a late commit.
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.
What & why
setEnabledstops waiting forCGCompleteDisplayConfigurationafter 10 s, but the commit can still land later (#33 saw 29.5 s). Three things went wrong when it did. A disconnect that timed out stored no record, so a late landing left the display dark with no Reconnect row and no blackout rescue. A reconnect that timed out kept its record, so a late landing met that record inreconcileand was switched straight back off. And the DDC hold ended when the wrapper gave up, so DDC traffic could start again under a commit that was still in WindowServer.Both timeouts now keep the record and watch the display for 30 s,
reconcileleaves it alone meanwhile, and enumeration decides. The hold now ends when the transaction returns. After a late reconnect the input is not written back. Stacked on #218, which changes the same functions. Found while reading the backend in #209 and #210.How tested
make check.landed late, and the reconnect loggedlanded late, record droppedand stayed connected, with no re-apply fromreconcile.Checklist
Crisp/Resources/Localizable.xcstringsfor any new user-facing strings (none)