This is to allow us sending the root configure request together with
other requests. Making it easier to reproduce timing critical bugs.
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Handle more (hopefully all) edge-cases when updating `opacity_target_old`:
* `MAPPING` transitions to `FADING` if new target is reached. Otherwise
no update.
* `FADING` clamps to current `opacity` if old target is too small.
* `UNMAPPING`/`DESTROYING` clamps to current `opacity` if old target is
too small.