RandR: handle monitor {dis,}connection better #953
Merged
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.
When monitors are connected and disconnected, the monitor is deleted and reinserted into the RB_TREE. This has to happen as the key has changed and a monitor could have changed position.
In doing so, ensure the windows which were on the existing monitors are properly updated. This means keeping a separate list of monitors which have been altered, and reassigning windows on the old monitor to the new one. This is done using monitor names, which seems consistent if one undocks a laptop from a docking station and then reattaches, for example.
Without this change, windows would lose which desk they were previously on.