Closed digitaltrails closed 1 year ago
Maybe EDID should be used until it is detected to be ambiguous, in which case fall back to display ID.
Note this is primarily about what is passed to ddcutil. Internally, within vdu_controls, a set of heuristics is applied to determine a unique text-id (which might have different, but similar issues).
The hacky way forward...
ddcutil
the --edid
identifier will be passed. Again falling back to passing --display
if the EDID is not unique. This ensures that if a user has multiple monitors and turns one off, the existing controls will still adjust the correct monitor, even if the display numbers have been shuffled, and even if the user does not bother to press Refresh
.
Why don't we use the EDID on the GUI and for the Preset names? Because the EDID is unwieldy, for example:
ddcutil --edid 00ffffffffffff0022f06a280101010108140103803623782efc81a4554d9d25125054210800814081809500a940b300d1c001010101283c80a070b023403020360022602100001a000000fd003b3d185011000a202020202020000000fc004850205a523234770a20202020000000ff00434e5430303831314a360a20200062 getvcp 10
It's difficult to know if there isn't someone out there with a monitor that will be tripped up by this change. It seems unlikely, but perhaps I should at least put in an internal switch.
Completed
When issuing ddcutil commands, vdu_controls addresses each monitor by it's DDC display number (which is 1..M). If the current display-1 is turned off, the current display-2 (if any) is reassigned to be display-1. There is no event generated when this happens, vdu_controls remains unaware of the switch and it's controls for will now be altering display-2. When faced with this issue the user can press the
refresh-button
which will sort things out.I have considered using other ID's, such as the EDID, but not even the EDID can be guaranteed to be unique (see https://www.ddcutil.com/release_notes/#multiple-monitors-having-the-same-edid).
So pending some fast (non-polling) what to detect monitors being powered on/off I'm not sure this issue can be addressed.