make stacking_order exclusive during shutdown

Review Request #112020 - Created Aug. 11, 2013 and submitted

Thomas Lübking
Client::releaseClient() deletes all Client objects referenced by stacking_order, thus those pointers dangle and everything trying to touch it dies an ugly death.

There're basically two ways to deal with this:
* this ("copy" the list away and show everyone else an empty list)
* it = stacking_order.erase(it);

I prefer this solution since it allows to operate on const iterators and (more important, since copy overhead is nearly equal and irrelevant) providing a randomly partial stacking order on providing a stacking order is not gonna lead to the results you desire anyway.

Also the Unmanaged handling below has the same issue (deletes stuff referenced by the stacking order) so i guess the presented way is the correct option.

Nevertheless this needs testing against other (pot. more prominent) crashes on exit (anything expecting non-empty stacking orders or whatnot)
kwin --replace still works
Thomas Lübking
Martin Flöser
Commit Hook
Thomas Lübking
Review request changed

Status: Closed (submitted)