(Almost) Double-buffering for Ghostscript

This gs 5.50 patch extends the X-windows device with the property IncrementalUpdate to allow finer control of the display update policy.

When set to false changes to the picture become visible only on showpage, copypage and redraw, avoiding most flicker. Initially the property is true for reasons of compatibility.

Usage

[ /IncrementalUpdate false currentdevice putdeviceprops pop

Installation

tar xvzf gnu-gs-5.50.tar.gz; tar xvzf gs5.50-change-2.tgz and proceed with the usual installation.

Other Improvements

This patch also sets the xprop _MOTIF_WM_HINTS to have no decoration if we have a single window and the environment variable MOTIF_WM_HINTS_NODECORATION is defined.

TODO

Currently only XCopyArea is used for updates, leaving some flicker on frequently updated pictures. As an example, consider this animation. The biggest problem are shapes that appear only partially on the screen (in particular horizontal lines, but also more noisy phenomena). Note, that most so called double buffer implementations don't do anything better than that.

Ideally, DOUBLE-BUFFER would solve the problem. However, most implementations are broken, as demonstrated with these programs by Stefan Kral. Watch his project page for further progress.

Further, the SYNC extension should allow to wait with XSyncAwait for a system counter for the refreshes of the screen. However, XFree and many other implementations only provide the system counter SERVERTIME.

A possible solution using XFree specifica is proposed by Stefan Kral.