wayland: Introduce transactions
Transactions provide a way to apply new surface state to multiple surfaces atomically.
A transaction can be locked. In which case, it's not going to be applied until all locks are dropped. For example, this can be used to delay applying new surface state until the committed buffers become idle.
Edited by Vlad Zahorodnii