Fully initialize input device state during init
Before this, what we did was
- Init backend
- Init seat implementation in input thread
- Determine pointer cursor visibility, but without devices being added
- Start
- Configure monitors etc, queue applying them in idle callbacks
- Process
device-added
event (this might switch visibility; touch devices added hides, pointer devices shows) - Do mode sets etc
This changes things to do this:
- Init backend
- Init seat implementation in input thread
- Wait until initial devices have been discovered and
device-added
events queued - Dispatch the resulting Clutter events
- Dispatch the resulting stage events
- Determine pointer cursor visibility, with all devices being added
- Start
- Configure monitors etc, queue applying them in idle callbacks
- Do mode sets etc