Code: Select all
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System (via both Xlib and XCB), quartz, win32, and image buffers,
as well as PDF, PostScript, and SVG file output. Experimental backends
include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).
Code: Select all
New support for arbitrary X server visuals (Thanks, Keith and Behdad!)
As of cairo 1.6, cairo should now work with an arbitrary TrueColor or
8-bit PseudoColor X server visual. Previous versions of cairo did not
support these X servers and refused to draw anything. We're pleased to
announce that this limitation has been lifted and people stuck with
ancient display systems need no longer be stuck with ancient software
just because of cairo.
Code: Select all
Fix serious failure on X servers without the Render extension.
Since the 1.5.14 snapshot (with support for PseudoColor visuals),
any application attempting to create a "similar" xlib surface would
fail on an X server without the Render extension. Thanks to
Frederic Crozat for pointing out that cairo's test suite was
entirely failing when run against Xvfb.
From Cairo-v1.14.8's NEWS file.
Well, let's define "it works"
Before Cairo v1.6 (2004-2005), on my Tektronix xp200 all the GTK-based apps crashed as the window attempts to map. This didn't happen on Linux-Linux remote X11 (DISPLAY=$host:0.0). Every GTK app I launched died the same way.
The whole Tektronix xp-line is 8-bit only (pseudocolor), as are many of the older X-Term products you can use: NCD, IBM-Netstation, HP Entria and Envizex.
Some linux workstations, but also some UNIX servers (AIX, SUNOS, etc) were also affected, similar behaviors were observed while running Mozilla Firefox on AIX platform, and machines crashed. A lot of people were looking for assistance in finding a suitable fix.
After Cairo v1.6, something happened. I believe If a software distributor wants to sell you a product that doesn't meet your needs, then don't buy it. I guess there really are connections between what paying customers care about and what developers will find interesting to work on. Btw, It's known that cairo-1.8.6 (2007-2008) fixed this problem on linux and UNIX; rendering on 256-color X11 worked, people was able to run Firefox in both Pseudo color and True color, and gtk-based apps didn't even crash on Tektronix, but ... on pseudo-color terminals all texts are painted with ugly colors, something like pink on purple, and it's unusable.
The current status is: no progress since then. So it still makes all gtk+2 apps not usable on some devices/environments.
GTK+ requires something better than 8pp, and it seems PseudoColor really is a different and complex world. Getting PseudoColor support working reasonably was one of the most time-consuming parts of GTK+ development.
Now I know all GTK+ 2 versions work quite badly on X terminals that don't support the RENDER extension, because drawing even the simplest text requires pulling data from the X server over the network, and then pushing the results back.
With Cairo, we can have the framework to do some quite sophisticated things here and really improve performance in this case. But ... forget Tektronix, NCD, IBM 8361-110, HP Entria/Envizex, and their friends.