In looking at our usage of X11 GCs it looks like we rely on the default setting
of the GraphicsExposures attribute which defaults to True. With that setting
any XCopyArea request will result in an event sent back to the client, even if
there were no conditions that should result in an exposure (in that case a
special NoExpose event is generated so that clients can associate a 1:1 mapping
between XCopyArea requests and the associated events that they generate).
While the XCopyArea that is used during scrolling operations (i.e. the ones that
come from a Graphics.copyArea() method call) should result in exposure events so
that damage handling due to obscured scroll and copyarea operations will
operate properly, the XCopyArea calls used to perform Pixmap blits for managed
and accelerated images do not need these events and so should be executed with
the GraphicsExposures turned off.
Setting GraphicsExposures to False has a significant impact on performance over
a low bandwidth connection (even DSL at 6 Megabit down, 600 Kilobit up).
Raw blitting benchmarks improved by as much as 2 to 2.5 times and some Swing
widgets were perhaps 20% faster (Swing does a lot more work than just blitting
As always, your mileage may vary depending on the speed of your connection
(both upload and download) and how intensely the application relies on blitting
managed or volatile images.