This prevents applications such as firefox from freezing when nothing
else is going on. Those applications use subsurfaces (for efficiency
reasons), which we were not keeping track of before.
Applications who use subsurfaces were working fine as long as other
applications were updating or the user was simply moving the mouse (and
thus damaging the whole screen anyway).
I'm not sure if listening to map and unmap events of subsurfaces is
necessary.
Most of this was inspired by sway.
Prior to damage tracking, we had to make sure wlr_output_commit was
called even if we weren't rendering anything new. If we didn't, then
nothing would render after attempting the first window resize. This is
no longer a problem (maybe because adding damage schedules another frame
callback?), so we can do some normal early-returns here.
The wlr-output-management protocol requires that either all of the
changes from an apply request be applied successfully, in which case a
"succeeded" event is sent, or all of the changes are reverted and a
"failed" event is sent. As written, this could partially commit
changes, then fail.
Test the changes first (even for an "apply" event), then commit or
rollback as appropriate.
Additionally, variables xcursor and xcursor_mgr are only used
when xwayland is defined, so I make the variables declaration
contingent on whether xwayland is being used
I am embarrassed to have let this slip through someone's merge. Anybody
who genuinely needs to `sudo make` will know it; everyone else should
use a proper package manager and build system.
Replaces the outputOrder patch.
This avoids recalculating positions and allows to arrange monitors in
any order, not just from left to right.
The order in which monitors are defined in config.h still matters but
it's just the order in the list, not the actual position.
This is the order of *_destroy calls which resulted in the fewest
errors/leaks detected by Valgrind. Most of the errors come from the
gbm_allocator code - will have to figure out which destroy call is still
missing.