Selections are automatically shared with back-end servers. This provides
seamless communication between back-end server clients and local clients.
Some selections are not appropriate to share as they will cause
unwanted conflicts. E.g. most manager selections. These selections
can still be shared by adding a unique identifier to them. Selections
that need this identifier can be specified using a command line option.
Collect sync request for during the sync interval time just
like before but instead of using XSync to send get-input-focus
requests and block for replies when the sync interval timer
fires, we're now just sending get-input-focus requests using
XCB and give each back-end server the sync-interval time to
respond before we block.
This provides significantly better performance, especially
with high latency connections.
The default sync batch interval of 100ms provides good
performance for back-ends servers with round-trip times
somewhat less than 100ms and is not long enough to make
the batch processing noticeably on low latency connections.
This was an attempt to avoid scratch gc creation and validation for paintwin
because that was expensive. This is not the case in current servers, and the
danger of failure to implement it correctly (as seen in all previous
implementations) is high enough to justify removing it. No performance
difference detected with x11perf -create -move -resize -circulate on Xvfb.
Leave the screen hooks for PaintWindow* in for now to avoid ABI change.